added new, edit and delete functionality for users and refined tests
This commit is contained in:
parent
1e4b7fd57c
commit
f36e6a2c9d
14 changed files with 226 additions and 74 deletions
app
database/migrations
2014_10_12_000000_create_users_table.php2016_08_30_201515_create_tests_table.php2016_08_31_145102_create_companies_table.php2016_08_31_145102_create_groups_table.php
resources/views/admin
routes
|
@ -4,7 +4,7 @@ namespace App;
|
|||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Company extends Model
|
||||
class Group extends Model
|
||||
{
|
||||
public function users()
|
||||
{
|
|
@ -5,7 +5,8 @@ namespace App\Http\Controllers;
|
|||
use Illuminate\Http\Request;
|
||||
use App\Http\Requests;
|
||||
use App\Test;
|
||||
use App\Company;
|
||||
use App\Group;
|
||||
use App\User;
|
||||
|
||||
class AdminController extends Controller
|
||||
{
|
||||
|
@ -20,12 +21,17 @@ class AdminController extends Controller
|
|||
return view('admin.admin');
|
||||
}
|
||||
|
||||
public function showTest()
|
||||
public function showTests()
|
||||
{
|
||||
$tests = Test::all();
|
||||
return view('admin.show.tests', compact('tests'));
|
||||
}
|
||||
|
||||
public function showTest(Test $test)
|
||||
{
|
||||
return view('admin.show.test', compact('test'));
|
||||
}
|
||||
|
||||
public function test()
|
||||
{
|
||||
return view('admin.new.test');
|
||||
|
@ -34,9 +40,13 @@ class AdminController extends Controller
|
|||
public function addTest()
|
||||
{
|
||||
$user = \Auth::user();
|
||||
$company = Company::find($user->company_id);
|
||||
$test = new Test(request()->all());
|
||||
$company->tests()->save($test);
|
||||
if ($user->company_id) {
|
||||
$group = Group::find($user->company_id);
|
||||
$group->tests()->save($test);
|
||||
return redirect('/admin/tests');
|
||||
}
|
||||
$test->save();
|
||||
return redirect('/admin/tests');
|
||||
}
|
||||
|
||||
|
@ -61,4 +71,63 @@ class AdminController extends Controller
|
|||
$test->delete();
|
||||
return redirect('/admin/tests');
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function showUser()
|
||||
{
|
||||
$users = User::all();
|
||||
return view('admin.show.users', compact('users'));
|
||||
}
|
||||
|
||||
public function editUser(User $user)
|
||||
{
|
||||
return view('admin.edit.user', compact('user'));
|
||||
}
|
||||
|
||||
public function updateUser(User $user)
|
||||
{
|
||||
$user->name = request()->name;
|
||||
$user->email = request()->email;
|
||||
if (!empty(request()->password)) {
|
||||
$user->password = bcrypt(request()->password);
|
||||
}
|
||||
$user->update();
|
||||
return redirect('/admin/users');
|
||||
}
|
||||
|
||||
public function delUser(User $user)
|
||||
{
|
||||
return view('admin.delete.user', compact('user'));
|
||||
}
|
||||
|
||||
public function deleteUser(User $user)
|
||||
{
|
||||
$user->delete();
|
||||
return redirect('/admin/users');
|
||||
}
|
||||
|
||||
public function user()
|
||||
{
|
||||
return view('admin.new.user');
|
||||
}
|
||||
|
||||
public function addUser()
|
||||
{
|
||||
$user = new User;
|
||||
$user->name = request()->name;
|
||||
$user->email = request()->email;
|
||||
$user->password = bcrypt('request()->password');
|
||||
if (!empty(request()->group_id)) {
|
||||
$user->group_id = request()->group_id;
|
||||
}
|
||||
if (!empty(request()->enabled)) {
|
||||
$user->enabled = request()->enabled;
|
||||
}
|
||||
if (!empty(request()->access_level)) {
|
||||
$user->access_level = request()->access_level;
|
||||
}
|
||||
$user->save();
|
||||
return redirect('/admin/users');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,9 +18,9 @@ class CreateUsersTable extends Migration
|
|||
$table->string('name');
|
||||
$table->string('email')->unique();
|
||||
$table->string('password');
|
||||
$table->integer('company_id')->unsigned()->index();
|
||||
$table->integer('enabled')->unsigned();
|
||||
$table->integer('access_level')->unsigned();
|
||||
$table->integer('group_id')->unsigned()->index()->nullable();
|
||||
$table->integer('enabled')->unsigned()->default(1);
|
||||
$table->integer('access_level')->unsigned()->default(1);
|
||||
$table->rememberToken();
|
||||
$table->timestamps();
|
||||
});
|
||||
|
|
|
@ -16,7 +16,7 @@ class CreateTestsTable extends Migration
|
|||
Schema::create('tests', function (Blueprint $table) {
|
||||
$table->increments('id');
|
||||
$table->string('title');
|
||||
$table->integer('company_id')->unsigned()->index();
|
||||
$table->integer('group_id')->unsigned()->index()->nullable();
|
||||
$table->integer('question_count')->unsigned();
|
||||
$table->timestamps();
|
||||
});
|
||||
|
|
|
@ -1,39 +0,0 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateCompaniesTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('companies', function (Blueprint $table) {
|
||||
$table->increments('id');
|
||||
$table->string('address');
|
||||
$table->integer('postal_code')->unsigned();
|
||||
$table->string('city');
|
||||
$table->integer('phone_number')->unsigned();
|
||||
$table->integer('vat_number')->unsigned();
|
||||
$table->integer('contact_person_id')->unsigned()->index();
|
||||
$table->string('email');
|
||||
$table->integer('enabled')->unsigned();
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::drop('companies');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateGroupsTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('groups', function (Blueprint $table) {
|
||||
$table->increments('id');
|
||||
$table->string('name');
|
||||
$table->integer('enabled')->unsigned()->default(1);
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::drop('groups');
|
||||
}
|
||||
}
|
|
@ -20,16 +20,7 @@
|
|||
<button formaction="/admin/users/new" class="btn btn-default">New User</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Companies</div>
|
||||
<div class="panel-body">
|
||||
<form method="get">
|
||||
<button formaction="/admin/companies" class="btn btn-default">Show Companies</button>
|
||||
<button formaction="/admin/companies/new" class="btn btn-default">New Company</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
18
resources/views/admin/delete/user.blade.php
Normal file
18
resources/views/admin/delete/user.blade.php
Normal file
|
@ -0,0 +1,18 @@
|
|||
@extends('layouts.base')
|
||||
|
||||
@section('content')
|
||||
<div class="container-fluid">
|
||||
<div class="col-md-4 col-md-offset-4">
|
||||
<h1>Are you Sure!</h1>
|
||||
</br>
|
||||
<form method="POST" action="/admin/users/{{ $user->id }}">
|
||||
{{ csrf_field() }}
|
||||
{{ method_field('DELETE') }}
|
||||
<button type="submit" class="btn btn-default">Yes</button>
|
||||
</form>
|
||||
<form method="GET" action="/admin/users">
|
||||
<button type="submit" class="btn btn-default">No</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
29
resources/views/admin/edit/user.blade.php
Normal file
29
resources/views/admin/edit/user.blade.php
Normal file
|
@ -0,0 +1,29 @@
|
|||
@extends('layouts.base')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="col-md-4 col-md-offset-4">
|
||||
<h1>Edit User</h1>
|
||||
</br>
|
||||
<form method="POST" action="/admin/users/{{ $user->id }}">
|
||||
{{ csrf_field() }}
|
||||
{{ method_field('PATCH') }}
|
||||
<div class="form-group">
|
||||
<label>Name</label>
|
||||
<input type="text" class="form-control" name="name" value="{{ $user->name }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Email</label>
|
||||
<input type="text" class="form-control" name="email" value="{{ $user->email }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Password</label>
|
||||
<input type="password" class="form-control" name="password" value="">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-default">Submit</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@stop
|
|
@ -1,35 +1,35 @@
|
|||
@extends('layouts.base')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="col-md-4 col-md-offset-4">
|
||||
<h1>Create New User</h1>
|
||||
</br>
|
||||
<form method="POST" action="/admin/new/questions">
|
||||
<form method="POST" action="/admin/users/new">
|
||||
{{ csrf_field() }}
|
||||
<div class="form-group">
|
||||
<label>Name</label>
|
||||
<input type="text" class="form-control" name="title">
|
||||
<input type="text" class="form-control" name="name">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Email</label>
|
||||
<input type="email" class="form-control" name="question_count">
|
||||
<input type="email" class="form-control" name="email">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>password</label>
|
||||
<input type="password" class="form-control" name="question_count">
|
||||
<label>Password</label>
|
||||
<input type="password" class="form-control" name="password">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Email</label>
|
||||
<input type="email" class="form-control" name="question_count">
|
||||
<label>Group id</label>
|
||||
<input type="text" class="form-control" name="group_id">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Email</label>
|
||||
<input type="email" class="form-control" name="question_count">
|
||||
<label>Enabled</label>
|
||||
<input type="text" class="form-control" name="enabled">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Email</label>
|
||||
<input type="email" class="form-control" name="question_count">
|
||||
<label>Access Level</label>
|
||||
<input type="text" class="form-control" name="access_level">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-default">Submit</button>
|
||||
</form>
|
||||
|
|
18
resources/views/admin/show/test.blade.php
Normal file
18
resources/views/admin/show/test.blade.php
Normal file
|
@ -0,0 +1,18 @@
|
|||
@extends('layouts.base')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-md-offset-3">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">{{ $test->title }}</div>
|
||||
<div class="panel-body">
|
||||
<button class="btn btn-default" formaction="/admin/tests/{{ $test->id }}/">Edit</button>
|
||||
<button class="btn btn-default" formaction="/admin/tests/{{ $test->id }}/">Add Question</button>
|
||||
<button class="btn btn-default" formaction="/admin/tests/{{ $test->id }}/delete">Delete</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
|
@ -11,7 +11,7 @@
|
|||
<div class="list-group-item">
|
||||
{{ $test->title}}
|
||||
<form class="pull-right" method="get">
|
||||
<button formaction="/admin/tests/{{ $test->id }}/edit">Edit</button>
|
||||
<button formaction="/admin/tests/{{ $test->id }}/">More</button>
|
||||
<button formaction="/admin/tests/{{ $test->id }}/delete">Delete</button>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
@extends('layouts.base')
|
||||
|
||||
@section('content')
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-8 col-md-offset-2">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Tests</div>
|
||||
<div class="panel-body">
|
||||
@foreach ($users as $user)
|
||||
<div class="list-group-item">
|
||||
{{ $user->name}} ({{ $user->email }})
|
||||
<form class="pull-right" method="get">
|
||||
<button formaction="/admin/users/{{ $user->id }}/edit">Edit</button>
|
||||
<button formaction="/admin/users/{{ $user->id }}/delete">Delete</button>
|
||||
</form>
|
||||
</div>
|
||||
</br>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
|
@ -23,13 +23,21 @@ Route::get('/test/{test}', 'TestController@test');
|
|||
Route::get('/test/answer', 'TestController@answer');
|
||||
|
||||
Route::get('/admin', 'AdminController@index');
|
||||
|
||||
Route::get('/admin/tests/new', 'AdminController@test');
|
||||
Route::post('/admin/tests/new', 'AdminController@addTest');
|
||||
Route::get('/admin/tests', 'AdminController@showTest');
|
||||
|
||||
Route::get('/admin/tests', 'AdminController@showTests');
|
||||
Route::get('/admin/tests/{test}', 'AdminController@showTest');
|
||||
Route::get('/admin/tests/{test}/edit', 'AdminController@editTest');
|
||||
Route::patch('/admin/tests/{test}', 'AdminController@updateTest');
|
||||
|
||||
Route::get('/admin/tests/{test}/delete', 'AdminController@delTest');
|
||||
Route::delete('/admin/tests/{test}', 'AdminController@deleteTest');
|
||||
|
||||
Route::get('/admin/users', 'AdminController@showUser');
|
||||
Route::get('/admin/users/new', 'AdminController@user');
|
||||
Route::post('/admin/users/new', 'AdminController@addUser');
|
||||
Route::get('/admin/users/{user}/edit', 'AdminController@editUser');
|
||||
Route::patch('/admin/users/{user}', 'AdminController@updateUser');
|
||||
Route::get('/admin/users/{user}/delete', 'AdminController@delUser');
|
||||
Route::delete('/admin/users/{user}', 'AdminController@deleteUser');
|
||||
|
||||
|
|
Reference in a new issue