added new, edit and delete functionality for users and refined tests

This commit is contained in:
mwalbeck 2016-09-01 21:21:36 +02:00
parent 1e4b7fd57c
commit f36e6a2c9d
14 changed files with 226 additions and 74 deletions

View file

@ -4,7 +4,7 @@ namespace App;
use Illuminate\Database\Eloquent\Model;
class Company extends Model
class Group extends Model
{
public function users()
{

View file

@ -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');
}
}

View file

@ -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();
});

View file

@ -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();
});

View file

@ -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');
}
}

View file

@ -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');
}
}

View file

@ -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

View 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

View 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

View file

@ -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>

View 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

View file

@ -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>

View file

@ -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

View file

@ -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');