add Aircraft CRUD

This commit is contained in:
Nabeel Shahzad
2017-06-08 20:37:51 -05:00
parent e22f621216
commit 3678363766
13 changed files with 495 additions and 0 deletions

View File

@@ -0,0 +1,123 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Requests\CreateAircraftRequest;
use App\Http\Requests\UpdateAircraftRequest;
use App\Repositories\AircraftRepository;
use Illuminate\Http\Request;
use Flash;
use Prettus\Repository\Criteria\RequestCriteria;
use Response;
class AircraftController extends AdminBaseController
{
/** @var AircraftRepository */
private $aircraftRepository;
public function __construct(AircraftRepository $aircraftRepo)
{
$this->aircraftRepository = $aircraftRepo;
}
/**
* Display a listing of the Aircraft.
*/
public function index(Request $request)
{
$this->aircraftRepository->pushCriteria(new RequestCriteria($request));
$aircraft = $this->aircraftRepository->all();
return view('admin.aircraft.index')
->with('aircraft', $aircraft);
}
/**
* Show the form for creating a new Aircraft.
*/
public function create()
{
return view('admin.aircraft.create');
}
/**
* Store a newly created Aircraft in storage.
*/
public function store(CreateAircraftRequest $request)
{
$input = $request->all();
$aircraft = $this->aircraftRepository->create($input);
Flash::success('Aircraft saved successfully.');
return redirect(route('admin.aircraft.index'));
}
/**
* Display the specified Aircraft.
*/
public function show($id)
{
$aircraft = $this->aircraftRepository->findWithoutFail($id);
if (empty($aircraft)) {
Flash::error('Aircraft not found');
return redirect(route('admin.aircraft.index'));
}
return view('admin.aircraft.show')->with('aircraft', $aircraft);
}
/**
* Show the form for editing the specified Aircraft.
*/
public function edit($id)
{
$aircraft = $this->aircraftRepository->findWithoutFail($id);
if (empty($aircraft)) {
Flash::error('Aircraft not found');
return redirect(route('admin.aircraft.index'));
}
return view('admin.aircraft.edit')->with('aircraft', $aircraft);
}
/**
* Update the specified Aircraft in storage.
*/
public function update($id, UpdateAircraftRequest $request)
{
$aircraft = $this->aircraftRepository->findWithoutFail($id);
if (empty($aircraft)) {
Flash::error('Aircraft not found');
return redirect(route('admin.aircraft.index'));
}
$aircraft = $this->aircraftRepository->update($request->all(), $id);
Flash::success('Aircraft updated successfully.');
return redirect(route('admin.aircraft.index'));
}
/**
* Remove the specified Aircraft from storage.
*/
public function destroy($id)
{
$aircraft = $this->aircraftRepository->findWithoutFail($id);
if (empty($aircraft)) {
Flash::error('Aircraft not found');
return redirect(route('admin.aircraft.index'));
}
$this->aircraftRepository->delete($id);
Flash::success('Aircraft deleted successfully.');
return redirect(route('admin.aircraft.index'));
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use App\Models\Aircraft;
class CreateAircraftRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return Aircraft::$rules;
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use App\Models\Aircraft;
class UpdateAircraftRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return Aircraft::$rules;
}
}

55
app/Models/Aircraft.php Normal file
View File

@@ -0,0 +1,55 @@
<?php
namespace App\Models;
use Eloquent as Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* Class Aircraft
* @package App\Models
* @version June 9, 2017, 1:06 am UTC
*/
class Aircraft extends Model
{
use SoftDeletes;
public $table = 'aircraft';
protected $dates = ['deleted_at'];
public $fillable = [
'icao',
'name',
'full_name',
'registration',
'active'
];
/**
* The attributes that should be casted to native types.
*
* @var array
*/
protected $casts = [
'icao' => 'string',
'name' => 'string',
'full_name' => 'string',
'registration' => 'string',
'active' => 'boolean',
];
/**
* Validation rules
*
* @var array
*/
public static $rules = [
'icao' => 'required|max:4',
'name' => 'required',
'full_name' => 'required',
'registration' => 'required',
];
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Repositories;
use App\Models\Aircraft;
use InfyOm\Generator\Common\BaseRepository;
class AircraftRepository extends BaseRepository
{
/**
* @var array
*/
protected $fieldSearchable = [
'icao',
'name',
'full_name',
'registration',
'active',
];
/**
* Configure the Model
**/
public function model()
{
return Aircraft::class;
}
}

View File

@@ -0,0 +1,26 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateAircraftsTable extends Migration
{
public function up()
{
Schema::create('aircraft', function (Blueprint $table) {
$table->increments('id');
$table->string('icao');
$table->string('name');
$table->string('full_name')->nullable();
$table->string('registration')->nullable();
$table->boolean('active');
$table->timestamps();
$table->softDeletes();
});
}
public function down()
{
Schema::drop('aircraft');
}
}

View File

@@ -0,0 +1,24 @@
@extends('admin.app')
@section('content')
<section class="content-header">
<h1>
Aircraft
</h1>
</section>
<div class="content">
@include('adminlte-templates::common.errors')
<div class="box box-primary">
<div class="box-body">
<div class="row">
{!! Form::open(['route' => 'admin.aircraft.store']) !!}
@include('admin.aircraft.fields')
{!! Form::close() !!}
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,23 @@
@extends('admin.app')
@section('content')
<section class="content-header">
<h1>
Aircraft
</h1>
</section>
<div class="content">
@include('adminlte-templates::common.errors')
<div class="box box-primary">
<div class="box-body">
<div class="row">
{!! Form::model($aircraft, ['route' => ['admin.aircraft.update', $aircraft->id], 'method' => 'patch']) !!}
@include('admin.aircraft.fields')
{!! Form::close() !!}
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,38 @@
<!-- ICAO Field -->
<div class="form-group col-sm-6">
{!! Form::label('icao', 'ICAO:') !!}
{!! Form::text('icao', null, ['class' => 'form-control']) !!}
</div>
<!-- Name Field -->
<div class="form-group col-sm-6">
{!! Form::label('name', 'Name:') !!}
{!! Form::text('name', null, ['class' => 'form-control']) !!}
</div>
<!-- Full Name Field -->
<div class="form-group col-sm-6">
{!! Form::label('full_name', 'Full Name:') !!}
{!! Form::text('full_name', null, ['class' => 'form-control']) !!}
</div>
<!-- Registration Field -->
<div class="form-group col-sm-6">
{!! Form::label('registration', 'Registration:') !!}
{!! Form::text('registration', null, ['class' => 'form-control']) !!}
</div>
<!-- Active Field -->
<div class="form-group col-sm-6">
{!! Form::label('active', 'Active:') !!}
<label class="checkbox-inline">
{!! Form::hidden('active', false) !!}
{!! Form::checkbox('active', '1', null) !!} 1
</label>
</div>
<!-- Submit Field -->
<div class="form-group col-sm-12">
{!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}
<a href="{!! route('admin.aircraft.index') !!}" class="btn btn-default">Cancel</a>
</div>

View File

@@ -0,0 +1,23 @@
@extends('admin.app')
@section('content')
<section class="content-header">
<h1 class="pull-left">Aircraft</h1>
<h1 class="pull-right">
<a class="btn btn-primary pull-right" style="margin-top: -10px;margin-bottom: 5px" href="{!! route('admin.aircraft.create') !!}">Add New</a>
</h1>
</section>
<div class="content">
<div class="clearfix"></div>
@include('flash::message')
<div class="clearfix"></div>
<div class="box box-primary">
<div class="box-body">
@include('admin.aircraft.table')
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,19 @@
@extends('admin.app')
@section('content')
<section class="content-header">
<h1>
Aircraft
</h1>
</section>
<div class="content">
<div class="box box-primary">
<div class="box-body">
<div class="row" style="padding-left: 20px">
@include('admin.aircraft.show_fields')
<a href="{!! route('admin.aircraft.index') !!}" class="btn btn-default">Back</a>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,48 @@
<!-- Id Field -->
<div class="form-group">
{!! Form::label('id', 'ID:') !!}
<p>{!! $aircraft->id !!}</p>
</div>
<!-- Icao Field -->
<div class="form-group">
{!! Form::label('icao', 'ICAO:') !!}
<p>{!! $aircraft->icao !!}</p>
</div>
<!-- Name Field -->
<div class="form-group">
{!! Form::label('name', 'Name:') !!}
<p>{!! $aircraft->name !!}</p>
</div>
<!-- Full Name Field -->
<div class="form-group">
{!! Form::label('full_name', 'Full Name:') !!}
<p>{!! $aircraft->full_name !!}</p>
</div>
<!-- Registration Field -->
<div class="form-group">
{!! Form::label('registration', 'Registration:') !!}
<p>{!! $aircraft->registration !!}</p>
</div>
<!-- Active Field -->
<div class="form-group">
{!! Form::label('active', 'Active:') !!}
<p>{!! $aircraft->active !!}</p>
</div>
<!-- Created At Field -->
<div class="form-group">
{!! Form::label('created_at', 'Created At:') !!}
<p>{!! $aircraft->created_at !!}</p>
</div>
<!-- Updated At Field -->
<div class="form-group">
{!! Form::label('updated_at', 'Updated At:') !!}
<p>{!! $aircraft->updated_at !!}</p>
</div>

View File

@@ -0,0 +1,28 @@
<table class="table table-responsive" id="aircrafts-table">
<thead>
<th>ICAO</th>
<th>Name</th>
<th>Registration</th>
<th>Active</th>
<th colspan="3">Action</th>
</thead>
<tbody>
@foreach($aircraft as $ac)
<tr>
<td>{!! $ac->icao !!}</td>
<td>{!! $ac->name !!}</td>
<td>{!! $ac->registration !!}</td>
<td>{!! $ac->active !!}</td>
<td>
{!! Form::open(['route' => ['admin.aircraft.destroy', $ac->id], 'method' => 'delete']) !!}
<div class='btn-group'>
<a href="{!! route('admin.aircraft.show', [$ac->id]) !!}" class='btn btn-default btn-xs'><i class="glyphicon glyphicon-eye-open"></i></a>
<a href="{!! route('admin.aircraft.edit', [$ac->id]) !!}" class='btn btn-default btn-xs'><i class="glyphicon glyphicon-edit"></i></a>
{!! Form::button('<i class="glyphicon glyphicon-trash"></i>', ['type' => 'submit', 'class' => 'btn btn-danger btn-xs', 'onclick' => "return confirm('Are you sure?')"]) !!}
</div>
{!! Form::close() !!}
</td>
</tr>
@endforeach
</tbody>
</table>