diff --git a/Makefile b/Makefile
index 007d308a..73e8a6d3 100644
--- a/Makefile
+++ b/Makefile
@@ -19,6 +19,11 @@ db:
sqlite3 database/testing.sqlite ""
php artisan migrate
+unittest-db:
+ rm -f database/unittest.sqlite
+ sqlite3 database/unittest.sqlite ""
+ php artisan migrate:refresh --seed --env unittest
+
reset-db:
rm database/testing.sqlite
make db
diff --git a/app/Http/Controllers/Admin/AircraftClassController.php b/app/Http/Controllers/Admin/AircraftClassController.php
new file mode 100644
index 00000000..781f7218
--- /dev/null
+++ b/app/Http/Controllers/Admin/AircraftClassController.php
@@ -0,0 +1,155 @@
+aircraftClassRepository = $aircraftClassRepo;
+ }
+
+ /**
+ * Display a listing of the AircraftClass.
+ *
+ * @param Request $request
+ * @return Response
+ */
+ public function index(Request $request)
+ {
+ $this->aircraftClassRepository->pushCriteria(new RequestCriteria($request));
+ $aircraftClasses = $this->aircraftClassRepository->all();
+
+ return view('admin.aircraft_classes.index')
+ ->with('aircraftClasses', $aircraftClasses);
+ }
+
+ /**
+ * Show the form for creating a new AircraftClass.
+ *
+ * @return Response
+ */
+ public function create()
+ {
+ return view('admin.aircraft_classes.create');
+ }
+
+ /**
+ * Store a newly created AircraftClass in storage.
+ *
+ * @param CreateAircraftClassRequest $request
+ *
+ * @return Response
+ */
+ public function store(CreateAircraftClassRequest $request)
+ {
+ $input = $request->all();
+
+ $aircraftClass = $this->aircraftClassRepository->create($input);
+
+ Flash::success('Aircraft Class saved successfully.');
+
+ return redirect(route('admin.aircraftClasses.index'));
+ }
+
+ /**
+ * Display the specified AircraftClass.
+ *
+ * @param int $id
+ *
+ * @return Response
+ */
+ public function show($id)
+ {
+ $aircraftClass = $this->aircraftClassRepository->findWithoutFail($id);
+
+ if (empty($aircraftClass)) {
+ Flash::error('Aircraft Class not found');
+
+ return redirect(route('admin.aircraftClasses.index'));
+ }
+
+ return view('admin.aircraft_classes.show')->with('aircraftClass', $aircraftClass);
+ }
+
+ /**
+ * Show the form for editing the specified AircraftClass.
+ *
+ * @param int $id
+ *
+ * @return Response
+ */
+ public function edit($id)
+ {
+ $aircraftClass = $this->aircraftClassRepository->findWithoutFail($id);
+
+ if (empty($aircraftClass)) {
+ Flash::error('Aircraft Class not found');
+
+ return redirect(route('admin.aircraftClasses.index'));
+ }
+
+ return view('admin.aircraft_classes.edit')->with('aircraftClass', $aircraftClass);
+ }
+
+ /**
+ * Update the specified AircraftClass in storage.
+ *
+ * @param int $id
+ * @param UpdateAircraftClassRequest $request
+ *
+ * @return Response
+ */
+ public function update($id, UpdateAircraftClassRequest $request)
+ {
+ $aircraftClass = $this->aircraftClassRepository->findWithoutFail($id);
+
+ if (empty($aircraftClass)) {
+ Flash::error('Aircraft Class not found');
+
+ return redirect(route('admin.aircraftClasses.index'));
+ }
+
+ $aircraftClass = $this->aircraftClassRepository->update($request->all(), $id);
+
+ Flash::success('Aircraft Class updated successfully.');
+
+ return redirect(route('admin.aircraftClasses.index'));
+ }
+
+ /**
+ * Remove the specified AircraftClass from storage.
+ *
+ * @param int $id
+ *
+ * @return Response
+ */
+ public function destroy($id)
+ {
+ $aircraftClass = $this->aircraftClassRepository->findWithoutFail($id);
+
+ if (empty($aircraftClass)) {
+ Flash::error('Aircraft Class not found');
+
+ return redirect(route('admin.aircraftClasses.index'));
+ }
+
+ $this->aircraftClassRepository->delete($id);
+
+ Flash::success('Aircraft Class deleted successfully.');
+
+ return redirect(route('admin.aircraftClasses.index'));
+ }
+}
diff --git a/app/Http/Requests/CreateAircraftClassRequest.php b/app/Http/Requests/CreateAircraftClassRequest.php
new file mode 100644
index 00000000..4ca0a397
--- /dev/null
+++ b/app/Http/Requests/CreateAircraftClassRequest.php
@@ -0,0 +1,30 @@
+ 'required',
'full_name' => 'required',
'registration' => 'required',
+ 'active' => 'default:1'
];
+
+ /**
+ * foreign key
+ */
+ public function class()
+ {
+ return $this->belongsTo(
+ 'App\Models\AircraftClass',
+ 'aircraft_class_id'
+ );
+ }
}
diff --git a/app/Models/AircraftClass.php b/app/Models/AircraftClass.php
new file mode 100644
index 00000000..4afd5373
--- /dev/null
+++ b/app/Models/AircraftClass.php
@@ -0,0 +1,47 @@
+ 'string',
+ 'name' => 'string',
+ 'notes' => 'string'
+ ];
+
+ /**
+ * Validation rules
+ *
+ * @var array
+ */
+ public static $rules = [
+ 'code' => 'required',
+ 'name' => 'required'
+ ];
+}
diff --git a/app/Repositories/AircraftClassRepository.php b/app/Repositories/AircraftClassRepository.php
new file mode 100644
index 00000000..dbd104bc
--- /dev/null
+++ b/app/Repositories/AircraftClassRepository.php
@@ -0,0 +1,26 @@
+ [
- 'testing' => [
- 'driver' => 'sqlite',
- 'database' => database_path('testing.sqlite'),
- 'prefix' => '',
- ],
-
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
@@ -66,6 +60,24 @@ return [
'engine' => null,
],
+ 'local' => [
+ 'driver' => 'sqlite',
+ 'database' => database_path('testing.sqlite'),
+ 'prefix' => '',
+ ],
+
+ 'unittest' => [
+ 'driver' => 'sqlite',
+ 'database' => database_path('unittest.sqlite'),
+ 'prefix' => '',
+ ],
+
+ 'testing' => [
+ 'driver' => 'sqlite',
+ 'database' => ':memory:',
+ 'prefix' => '',
+ ],
+
],
/*
diff --git a/database/factories/AircraftClassFactory.php b/database/factories/AircraftClassFactory.php
new file mode 100644
index 00000000..cb943f06
--- /dev/null
+++ b/database/factories/AircraftClassFactory.php
@@ -0,0 +1,10 @@
+define(App\Models\AircraftClass::class, function (Faker\Generator $faker) {
+ return [
+ 'id' => 1,
+ 'code' => 'H',
+ 'name' => 'Heavy',
+ 'notes' => 'Heavy aircraft',
+ ];
+});
diff --git a/database/factories/ModelFactory.php b/database/factories/ModelFactory.php
index 59951643..e376e12e 100755
--- a/database/factories/ModelFactory.php
+++ b/database/factories/ModelFactory.php
@@ -1,16 +1,5 @@
define(App\User::class, function (Faker\Generator $faker) {
static $password;
diff --git a/database/migrations/2017_06_09_010621_create_aircrafts_table.php b/database/migrations/2017_06_09_010621_create_aircrafts_table.php
index 8dcb6629..bd0496e8 100644
--- a/database/migrations/2017_06_09_010621_create_aircrafts_table.php
+++ b/database/migrations/2017_06_09_010621_create_aircrafts_table.php
@@ -9,18 +9,37 @@ class CreateAircraftsTable extends Migration
{
Schema::create('aircraft', function (Blueprint $table) {
$table->increments('id');
+ $table->integer('aircraft_class_id')->unsigned();
$table->string('icao');
$table->string('name');
$table->string('full_name')->nullable();
$table->string('registration')->nullable();
- $table->boolean('active');
+ $table->string('tail_number')->nullable();
+ $table->string('cargo_capacity')->nullable();
+ $table->string('fuel_capacity')->nullable();
+ $table->boolean('active')->default(true);
$table->timestamps();
$table->softDeletes();
+
+ $table->index('icao');
+ $table->unique('registration');
+ });
+
+ Schema::create('aircraft_classes', function (Blueprint $table) {
+ $table->increments('id');
+ $table->string('code');
+ $table->string('name');
+ $table->string('notes')->nullable();
+ $table->timestamps();
+ $table->softDeletes();
+
+ $table->index('code');
});
}
public function down()
{
Schema::drop('aircraft');
+ Schema::drop('aircraft_classes');
}
}
diff --git a/database/schema/aircraft.json b/database/schema/aircraft.json
deleted file mode 100644
index d14fce49..00000000
--- a/database/schema/aircraft.json
+++ /dev/null
@@ -1,56 +0,0 @@
-[
- {
- "name": "id",
- "dbType": "increments",
- "htmlType": "",
- "validations": "",
- "searchable": false,
- "fillable": false,
- "primary": true,
- "inForm": false,
- "inIndex": false
- },
- {
- "name": "icao",
- "dbType": "string",
- "htmlType": "text",
- "validations": "required|max:4",
- "searchable": true
- },
- {
- "name": "name",
- "dbType": "string",
- "htmlType": "text",
- "validations": "required",
- "searchable": true
- },
- {
- "name": "enabled",
- "dbType": "boolean",
- "htmlType": "checkbox",
- "validations": "",
- "searchable": false
- },
- {
- "name": "created_at",
- "dbType": "timestamp",
- "htmlType": "",
- "validations": "",
- "searchable": false,
- "fillable": false,
- "primary": false,
- "inForm": false,
- "inIndex": false
- },
- {
- "name": "updated_at",
- "dbType": "timestamp",
- "htmlType": "",
- "validations": "",
- "searchable": false,
- "fillable": false,
- "primary": false,
- "inForm": false,
- "inIndex": false
- }
-]
diff --git a/database/schema/airlines.json b/database/schema/airlines.json
deleted file mode 100644
index 3af8026c..00000000
--- a/database/schema/airlines.json
+++ /dev/null
@@ -1,56 +0,0 @@
-[
- {
- "name": "id",
- "dbType": "increments",
- "htmlType": "",
- "validations": "",
- "searchable": false,
- "fillable": false,
- "primary": true,
- "inForm": false,
- "inIndex": false
- },
- {
- "name": "code",
- "dbType": "string",
- "htmlType": "text",
- "validations": "required",
- "searchable": true
- },
- {
- "name": "name",
- "dbType": "string",
- "htmlType": "text",
- "validations": "required",
- "searchable": true
- },
- {
- "name": "enabled",
- "dbType": "boolean",
- "htmlType": "checkbox",
- "validations": "",
- "searchable": false
- },
- {
- "name": "created_at",
- "dbType": "timestamp",
- "htmlType": "",
- "validations": "",
- "searchable": false,
- "fillable": false,
- "primary": false,
- "inForm": false,
- "inIndex": false
- },
- {
- "name": "updated_at",
- "dbType": "timestamp",
- "htmlType": "",
- "validations": "",
- "searchable": false,
- "fillable": false,
- "primary": false,
- "inForm": false,
- "inIndex": false
- }
-]
diff --git a/database/seeds/AircraftClassesSeeder.php b/database/seeds/AircraftClassesSeeder.php
new file mode 100644
index 00000000..f0f86634
--- /dev/null
+++ b/database/seeds/AircraftClassesSeeder.php
@@ -0,0 +1,18 @@
+call(UsersTableSeeder::class);
+// $this->call(AircraftClassesSeeder::class);
}
}
diff --git a/phpunit.xml b/phpunit.xml
index d06de2e8..126811b7 100755
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -22,6 +22,7 @@
+ Aircraft Classes
+
+
{!! $aircraftClass->id !!}
+{!! $aircraftClass->class !!}
+{!! $aircraftClass->name !!}
+{!! $aircraftClass->notes !!}
+{!! $aircraftClass->created_at !!}
+{!! $aircraftClass->updated_at !!}
+| Class | +Name | +Notes | +Action | + + + @foreach($aircraftClasses as $aircraftClass) +
|---|---|---|---|
| {!! $aircraftClass->class !!} | +{!! $aircraftClass->name !!} | +{!! $aircraftClass->notes !!} | ++ {!! Form::open(['route' => ['admin.aircraftClasses.destroy', $aircraftClass->id], 'method' => 'delete']) !!} + + {!! Form::close() !!} + | +