diff --git a/app/Http/Controllers/Admin/PirepController.php b/app/Http/Controllers/Admin/PirepController.php new file mode 100644 index 00000000..6536fdca --- /dev/null +++ b/app/Http/Controllers/Admin/PirepController.php @@ -0,0 +1,150 @@ +pirepRepository = $pirepRepo; + } + + /** + * Display a listing of the Pirep. + * + * @param Request $request + * @return Response + */ + public function index(Request $request) + { + $this->pirepRepository->pushCriteria(new RequestCriteria($request)); + $pireps = $this->pirepRepository->all(); + + return view('admin.pireps.index', [ + 'pireps' => $pireps + ]); + } + + /** + * Show the form for creating a new Pirep. + * + * @return Response + */ + public function create() + { + return view('admin.pireps.create'); + } + + /** + * Store a newly created Pirep in storage. + * + * @param CreatePirepRequest $request + * + * @return Response + */ + public function store(CreatePirepRequest $request) + { + $input = $request->all(); + $pirep = $this->pirepRepository->create($input); + + Flash::success('Pirep saved successfully.'); + return redirect(route('admin.pireps.index')); + } + + /** + * Display the specified Pirep. + * + * @param int $id + * + * @return Response + */ + public function show($id) + { + $pirep = $this->pirepRepository->findWithoutFail($id); + + if (empty($pirep)) { + Flash::error('Pirep not found'); + return redirect(route('admin.pireps.index')); + } + + return view('admin.pireps.show', [ + 'pirep' => $pirep, + ]); + } + + /** + * Show the form for editing the specified Pirep. + * + * @param int $id + * + * @return Response + */ + public function edit($id) + { + $pirep = $this->pirepRepository->findWithoutFail($id); + + if (empty($pirep)) { + Flash::error('Pirep not found'); + return redirect(route('admin.pireps.index')); + } + + return view('admin.pireps.edit', [ + 'pirep' => $pirep, + ]); + } + + /** + * Update the specified Pirep in storage. + * + * @param int $id + * @param UpdatePirepRequest $request + * + * @return Response + */ + public function update($id, UpdatePirepRequest $request) + { + $pirep = $this->pirepRepository->findWithoutFail($id); + + if (empty($pirep)) { + Flash::error('Pirep not found'); + return redirect(route('admin.pireps.index')); + } + + $pirep = $this->pirepRepository->update($request->all(), $id); + + Flash::success('Pirep updated successfully.'); + return redirect(route('admin.pireps.index')); + } + + /** + * Remove the specified Pirep from storage. + * + * @param int $id + * + * @return Response + */ + public function destroy($id) + { + $pirep = $this->pirepRepository->findWithoutFail($id); + + if (empty($pirep)) { + Flash::error('Pirep not found'); + return redirect(route('admin.pireps.index')); + } + + $this->pirepRepository->delete($id); + + Flash::success('Pirep deleted successfully.'); + return redirect(route('admin.pireps.index')); + } +} diff --git a/app/Http/Controllers/Admin/PirepFieldController.php b/app/Http/Controllers/Admin/PirepFieldController.php new file mode 100644 index 00000000..3866e8a3 --- /dev/null +++ b/app/Http/Controllers/Admin/PirepFieldController.php @@ -0,0 +1,152 @@ +pirepFieldRepo = $pirepFieldRepo; + } + + /** + * Display a listing of the PirepField. + * + * @param Request $request + * @return Response + */ + public function index(Request $request) + { + $this->pirepFieldRepo->pushCriteria(new RequestCriteria($request)); + $fields = $this->pirepFieldRepo->all(); + + return view('admin.pirepFields.index', [ + 'fields' => $fields, + ]); + } + + /** + * Show the form for creating a new PirepField. + * + * @return Response + */ + public function create() + { + return view('admin.pirepFields.create'); + } + + /** + * Store a newly created PirepField in storage. + * + * @param CreatePirepFieldRequest $request + * + * @return Response + */ + public function store(CreatePirepFieldRequest $request) + { + $input = $request->all(); + + $field = $this->pirepFieldRepo->create($input); + + Flash::success('PirepField saved successfully.'); + return redirect(route('admin.pirepFields.index')); + } + + /** + * Display the specified PirepField. + * + * @param int $id + * + * @return Response + */ + public function show($id) + { + $field = $this->pirepFieldRepo->findWithoutFail($id); + + if (empty($field)) { + Flash::error('PirepField not found'); + return redirect(route('admin.pirepFields.index')); + } + + return view('admin.pirepFields.show', [ + 'field' => $field, + ]); + } + + /** + * Show the form for editing the specified PirepField. + * + * @param int $id + * + * @return Response + */ + public function edit($id) + { + $field = $this->pirepFieldRepo->findWithoutFail($id); + + if (empty($field)) { + Flash::error('PirepField not found'); + return redirect(route('admin.pirepFields.index')); + } + + return view('admin.pirepFields.edit', [ + 'field' => $field, + ]); + } + + /** + * Update the specified PirepField in storage. + * + * @param int $id + * @param UpdatePirepFieldRequest $request + * + * @return Response + */ + public function update($id, UpdatePirepFieldRequest $request) + { + $field = $this->pirepFieldRepo->findWithoutFail($id); + + if (empty($field)) { + Flash::error('PirepField not found'); + return redirect(route('admin.pirepFields.index')); + } + + $field = $this->pirepFieldRepo->update($request->all(), $id); + + Flash::success('PirepField updated successfully.'); + return redirect(route('admin.pirepFields.index')); + } + + /** + * Remove the specified PirepField from storage. + * + * @param int $id + * + * @return Response + */ + public function destroy($id) + { + $field = $this->pirepFieldRepo->findWithoutFail($id); + + if (empty($field)) { + Flash::error('PirepField not found'); + return redirect(route('admin.pirepFields.index')); + } + + $this->pirepFieldRepo->delete($id); + + Flash::success('PirepField deleted successfully.'); + return redirect(route('admin.pirepFields.index')); + } +} diff --git a/app/Http/Requests/CreatePirepFieldRequest.php b/app/Http/Requests/CreatePirepFieldRequest.php new file mode 100644 index 00000000..014ed037 --- /dev/null +++ b/app/Http/Requests/CreatePirepFieldRequest.php @@ -0,0 +1,30 @@ + 'integer', + 'flight_id' => 'string', + 'aircraft_id' => 'integer', + 'flight_time' => 'integer', + 'level' => 'integer', + 'route' => 'string', + 'notes' => 'string', + 'raw_data' => 'string', + ]; + + /** + * Validation rules + * + * @var array + */ + public static $rules + = [ + 'dpt_airport_id' => 'required', + 'arr_airport_id' => 'required', + ]; + + /** + * Foreign Keys + */ + + public function user() + { + return $this->belongsTo('App\Models\User', 'user_id'); + } + + public function flight() + { + return $this->belongsTo('App\Models\Flight', 'flight_id'); + } + + public function dpt_airport() + { + return $this->belongsTo('App\Models\Airport', 'dpt_airport_id'); + } + + public function arr_airport() + { + return $this->belongsTo('App\Models\Airport', 'arr_airport_id'); + } + +} diff --git a/app/Models/PirepField.php b/app/Models/PirepField.php new file mode 100644 index 00000000..76a602a7 --- /dev/null +++ b/app/Models/PirepField.php @@ -0,0 +1,42 @@ + 'string', + 'required' => 'integer', + ]; + + /** + * Validation rules + * + * @var array + */ + public static $rules + = [ + 'name' => 'required', + ]; +} diff --git a/app/Models/PirepFieldValues.php b/app/Models/PirepFieldValues.php new file mode 100644 index 00000000..01826ac3 --- /dev/null +++ b/app/Models/PirepFieldValues.php @@ -0,0 +1,45 @@ + 'string', + 'value' => 'string', + 'source' => 'integer', + ]; + + /** + * Validation rules + * + * @var array + */ + public static $rules + = [ + 'name' => 'required', + ]; +} diff --git a/database/migrations/2017_06_28_195426_create_pireps_table.php b/database/migrations/2017_06_28_195426_create_pireps_table.php new file mode 100644 index 00000000..df687d5e --- /dev/null +++ b/database/migrations/2017_06_28_195426_create_pireps_table.php @@ -0,0 +1,71 @@ +uuid('id'); + $table->integer('user_id'); + $table->string('flight_id'); + $table->integer('aircraft_id'); + $table->text('route_code')->nullable(); + $table->text('route_leg')->nullable(); + $table->integer('dpt_airport_id')->unsigned(); + $table->integer('arr_airport_id')->unsigned(); + $table->integer('flight_time')->unsigned(); + $table->integer('level')->unsigned(); + $table->string('route')->nullable(); + $table->string('notes')->nullable(); + $table->tinyInteger('status'); + $table->string('raw_data')->nullable(); + $table->timestamps(); + $table->softDeletes(); + + $table->primary('id'); + $table->index('user_id'); + $table->index('flight_id'); + $table->index('dpt_airport_id'); + $table->index('arr_airport_id'); + }); + + Schema::create('pirep_fields', function (Blueprint $table) { + $table->increments('id'); + $table->string('name'); + $table->integer('required'); + $table->timestamps(); + }); + + Schema::create('pirep_field_values', function (Blueprint $table) { + $table->increments('id'); + $table->uuid('pirep_id'); + $table->string('name'); + $table->string('value'); + $table->tinyInteger('source')->default(0); + $table->timestamps(); + + $table->index('pirep_id'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('pireps'); + Schema::drop('pirep_fields'); + Schema::drop('pirep_field_values'); + } +} diff --git a/resources/views/admin/pirep_fields/create.blade.php b/resources/views/admin/pirep_fields/create.blade.php new file mode 100644 index 00000000..e1cc06aa --- /dev/null +++ b/resources/views/admin/pirep_fields/create.blade.php @@ -0,0 +1,20 @@ +@extends('admin.app') + +@section('content') +
+

Add PIREP Field

+
+
+ @include('adminlte-templates::common.errors') +
+ +
+
+ {!! Form::open(['route' => 'admin.pirepfields.store']) !!} + @include('admin.pirep_fields.fields') + {!! Form::close() !!} +
+
+
+
+@endsection diff --git a/resources/views/admin/pirep_fields/edit.blade.php b/resources/views/admin/pirep_fields/edit.blade.php new file mode 100644 index 00000000..87cdff50 --- /dev/null +++ b/resources/views/admin/pirep_fields/edit.blade.php @@ -0,0 +1,19 @@ +@extends('admin.app') + +@section('content') +
+

Edit "{!! $field->name !!}"

+
+
+ @include('adminlte-templates::common.errors') +
+
+
+ {!! Form::model($field, ['route' => ['admin.pirepfields.update', $field->id], 'method' => 'patch']) !!} + @include('admin.pirep_fields.fields') + {!! Form::close() !!} +
+
+
+
+@endsection diff --git a/resources/views/admin/pirep_fields/fields.blade.php b/resources/views/admin/pirep_fields/fields.blade.php new file mode 100644 index 00000000..f9a8d2c4 --- /dev/null +++ b/resources/views/admin/pirep_fields/fields.blade.php @@ -0,0 +1,17 @@ + +
+ {!! Form::label('name', 'Name:') !!} + {!! Form::text('name', null, ['class' => 'form-control']) !!} +
+ + +
+ {!! Form::label('required', 'Required:') !!} + {!! Form::text('required', null, ['class' => 'form-control']) !!} +
+ + +
+ {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!} + Cancel +
diff --git a/resources/views/admin/pirep_fields/index.blade.php b/resources/views/admin/pirep_fields/index.blade.php new file mode 100644 index 00000000..ce7746a5 --- /dev/null +++ b/resources/views/admin/pirep_fields/index.blade.php @@ -0,0 +1,23 @@ +@extends('admin.app') + +@section('content') +
+

PIREP Fields

+

+ Add New +

+
+
+
+ + @include('flash::message') + +
+
+
+ @include('admin.pirep_fields.table') +
+
+
+@endsection + diff --git a/resources/views/admin/pirep_fields/show.blade.php b/resources/views/admin/pirep_fields/show.blade.php new file mode 100644 index 00000000..a33643df --- /dev/null +++ b/resources/views/admin/pirep_fields/show.blade.php @@ -0,0 +1,17 @@ +@extends('layouts.app') + +@section('content') +
+

{!! $pirepFields->name !!}

+
+
+
+
+
+ @include('admin.pirep_fields.show_fields') + Back +
+
+
+
+@endsection diff --git a/resources/views/admin/pirep_fields/show_fields.blade.php b/resources/views/admin/pirep_fields/show_fields.blade.php new file mode 100644 index 00000000..970dc747 --- /dev/null +++ b/resources/views/admin/pirep_fields/show_fields.blade.php @@ -0,0 +1,30 @@ + +
+ {!! Form::label('id', 'Id:') !!} +

{!! $field->id !!}

+
+ + +
+ {!! Form::label('name', 'Name:') !!} +

{!! $field->name !!}

+
+ + +
+ {!! Form::label('required', 'Required:') !!} +

{!! $field->required !!}

+
+ + +
+ {!! Form::label('created_at', 'Created At:') !!} +

{!! $field->created_at !!}

+
+ + +
+ {!! Form::label('updated_at', 'Updated At:') !!} +

{!! $field->updated_at !!}

+
+ diff --git a/resources/views/admin/pirep_fields/table.blade.php b/resources/views/admin/pirep_fields/table.blade.php new file mode 100644 index 00000000..45f93a79 --- /dev/null +++ b/resources/views/admin/pirep_fields/table.blade.php @@ -0,0 +1,24 @@ + + + + + + + + @foreach($fields as $field) + + + + + + @endforeach + +
NameRequiredAction
{!! $field->name !!}{!! $field->required !!} + {!! Form::open(['route' => ['admin.pirepfields.destroy', $field->id], 'method' => 'delete']) !!} +
+ {{-- + --}} + {!! Form::button('', ['type' => 'submit', 'class' => 'btn btn-danger btn-xs', 'onclick' => "return confirm('Are you sure?')"]) !!} +
+ {!! Form::close() !!} +
diff --git a/resources/views/admin/pireps/create.blade.php b/resources/views/admin/pireps/create.blade.php new file mode 100644 index 00000000..64338ea5 --- /dev/null +++ b/resources/views/admin/pireps/create.blade.php @@ -0,0 +1,24 @@ +@extends('admin.app') + +@section('content') +
+

+ $MODEL_NAME_HUMAN$ +

+
+
+ @include('adminlte-templates::common.errors') +
+ +
+
+ {!! Form::open(['route' => 'admin.pireps.store']) !!} + + @include('admin.pireps.fields') + + {!! Form::close() !!} +
+
+
+
+@endsection diff --git a/resources/views/admin/pireps/edit.blade.php b/resources/views/admin/pireps/edit.blade.php new file mode 100644 index 00000000..f7c69606 --- /dev/null +++ b/resources/views/admin/pireps/edit.blade.php @@ -0,0 +1,23 @@ +@extends('admin.app') + +@section('content') +
+

+ $MODEL_NAME_HUMAN$ +

+
+
+ @include('adminlte-templates::common.errors') +
+
+
+ {!! Form::model($pirep, ['route' => ['admin.pireps.update', $pirep->id], 'method' => 'patch']) !!} + + @include('admin.pireps.fields') + + {!! Form::close() !!} +
+
+
+
+@endsection diff --git a/resources/views/admin/pireps/fields.blade.php b/resources/views/admin/pireps/fields.blade.php new file mode 100644 index 00000000..f5e1d2f8 --- /dev/null +++ b/resources/views/admin/pireps/fields.blade.php @@ -0,0 +1,47 @@ + +
+ {!! Form::label('flight_id', 'Flight ID:') !!} + {!! Form::text('flight_id', null, ['class' => 'form-control']) !!} +
+ + +
+ {!! Form::label('aircraft_id', 'Aircraft ID:') !!} + {!! Form::text('aircraft_id', null, ['class' => 'form-control']) !!} +
+ + +
+ {!! Form::label('flight_time', 'Flight Time:') !!} + {!! Form::text('flight_time', null, ['class' => 'form-control']) !!} +
+ + +
+ {!! Form::label('level', 'Flight Level:') !!} + {!! Form::text('level', null, ['class' => 'form-control']) !!} +
+ + +
+ {!! Form::label('route', 'Route:') !!} + {!! Form::text('route', null, ['class' => 'form-control']) !!} +
+ + +
+ {!! Form::label('notes', 'Notes:') !!} + {!! Form::text('notes', null, ['class' => 'form-control']) !!} +
+ + +
+ {!! Form::label('raw_data', 'Raw Data:') !!} + {!! Form::text('raw_data', null, ['class' => 'form-control']) !!} +
+ + +
+ {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!} + Cancel +
diff --git a/resources/views/admin/pireps/index.blade.php b/resources/views/admin/pireps/index.blade.php new file mode 100644 index 00000000..c8695878 --- /dev/null +++ b/resources/views/admin/pireps/index.blade.php @@ -0,0 +1,23 @@ +@extends('admin.app') + +@section('content') +
+

PIREPs

+

+ Add New +

+
+
+
+ + @include('flash::message') + +
+
+
+ @include('admin.pireps.table') +
+
+
+@endsection + diff --git a/resources/views/admin/pireps/show.blade.php b/resources/views/admin/pireps/show.blade.php new file mode 100644 index 00000000..2c197c5d --- /dev/null +++ b/resources/views/admin/pireps/show.blade.php @@ -0,0 +1,17 @@ +@extends('admin.app') + +@section('content') +
+

PIREP

+
+
+
+
+
+ @include('admin.pireps.show_fields') + Back +
+
+
+
+@endsection diff --git a/resources/views/admin/pireps/show_fields.blade.php b/resources/views/admin/pireps/show_fields.blade.php new file mode 100644 index 00000000..01878f16 --- /dev/null +++ b/resources/views/admin/pireps/show_fields.blade.php @@ -0,0 +1,66 @@ + +
+ {!! Form::label('id', 'Id:') !!} +

{!! $pirep->id !!}

+
+ + +
+ {!! Form::label('user_id', 'User Id:') !!} +

{!! $pirep->user_id !!}

+
+ + +
+ {!! Form::label('flight_id', 'Flight Id:') !!} +

{!! $pirep->flight_id !!}

+
+ + +
+ {!! Form::label('aircraft_id', 'Aircraft Id:') !!} +

{!! $pirep->aircraft_id !!}

+
+ + +
+ {!! Form::label('flight_time', 'Flight Time:') !!} +

{!! $pirep->flight_time !!}

+
+ + +
+ {!! Form::label('level', 'Level:') !!} +

{!! $pirep->level !!}

+
+ + +
+ {!! Form::label('route', 'Route:') !!} +

{!! $pirep->route !!}

+
+ + +
+ {!! Form::label('notes', 'Notes:') !!} +

{!! $pirep->notes !!}

+
+ + +
+ {!! Form::label('raw_data', 'Raw Data:') !!} +

{!! $pirep->raw_data !!}

+
+ + +
+ {!! Form::label('created_at', 'Created At:') !!} +

{!! $pirep->created_at !!}

+
+ + +
+ {!! Form::label('updated_at', 'Updated At:') !!} +

{!! $pirep->updated_at !!}

+
+ diff --git a/resources/views/admin/pireps/table.blade.php b/resources/views/admin/pireps/table.blade.php new file mode 100644 index 00000000..3f300c3f --- /dev/null +++ b/resources/views/admin/pireps/table.blade.php @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + @foreach($pireps as $pirep) + + + + + + + + + + + + @endforeach + +
User IdFlight IdAircraft IdFlight TimeLevelRouteNotesRaw DataAction
{!! $pirep->user_id !!}{!! $pirep->flight_id !!}{!! $pirep->aircraft_id !!}{!! $pirep->flight_time !!}{!! $pirep->level !!}{!! $pirep->route !!}{!! $pirep->notes !!}{!! $pirep->raw_data !!} + {!! Form::open(['route' => ['admin.pireps.destroy', $pirep->id], 'method' => 'delete']) !!} +
+ + + {!! Form::button('', ['type' => 'submit', 'class' => 'btn btn-danger btn-xs', 'onclick' => "return confirm('Are you sure?')"]) !!} +
+ {!! Form::close() !!} +
diff --git a/routes/admin.php b/routes/admin.php index e1f93f27..c34bfa04 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -30,6 +30,10 @@ Route::group([ Route::match(['get'], 'settings', 'SettingsController@index'); Route::match(['post', 'put'], 'settings', 'SettingsController@update'); + # pirep related routes + Route::resource('pireps', 'PirepController'); + Route::resource('pirepfields', 'PirepFieldController'); + # defaults Route::get('', ['uses' => 'DashboardController@index']); Route::get('/', ['uses' => 'DashboardController@index']);