Fix formatting and interfaces in nearly every file

This commit is contained in:
Nabeel Shahzad
2018-03-19 20:50:40 -05:00
parent 04c5b9e7bf
commit ccf56ddec1
331 changed files with 3282 additions and 2492 deletions
+27
View File
@@ -0,0 +1,27 @@
<code_scheme name="PHPVMS" version="173">
<option name="RIGHT_MARGIN" value="100" />
<PHPCodeStyleSettings>
<option name="ALIGN_KEY_VALUE_PAIRS" value="true" />
<option name="LOWER_CASE_BOOLEAN_CONST" value="true" />
<option name="LOWER_CASE_NULL_CONST" value="true" />
<option name="ALIGN_CLASS_CONSTANTS" value="true" />
<option name="FORCE_SHORT_DECLARATION_ARRAY_STYLE" value="true" />
</PHPCodeStyleSettings>
<XML>
<option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
</XML>
<codeStyleSettings language="JAVA">
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="JSON">
<indentOptions>
<option name="INDENT_SIZE" value="4" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="PHP">
<option name="KEEP_FIRST_COLUMN_COMMENT" value="false" />
<option name="ALIGN_MULTILINE_ARRAY_INITIALIZER_EXPRESSION" value="true" />
</codeStyleSettings>
</code_scheme>
+3 -3
View File
@@ -2,14 +2,14 @@
namespace App\Awards; namespace App\Awards;
use App\Interfaces\AwardInterface; use App\Interfaces\Award;
/** /**
* Simple example of an awards class, where you can apply an award when a user * Simple example of an awards class, where you can apply an award when a user
* has 100 flights. All award classes need to extend the AwardInterface * has 100 flights. All award classes need to extend the AwardInterface
* @package App\Awards * @package App\Awards
*/ */
class PilotFlightAwards extends AwardInterface class PilotFlightAwards extends Award
{ {
/** /**
* Set the name of this award class to make it easier to see when * Set the name of this award class to make it easier to see when
@@ -38,7 +38,7 @@ class PilotFlightAwards extends AwardInterface
*/ */
public function check($number_of_flights = null): bool public function check($number_of_flights = null): bool
{ {
if(!$number_of_flights) { if (!$number_of_flights) {
$number_of_flights = 100; $number_of_flights = 100;
} }
-1
View File
@@ -24,7 +24,6 @@ class LoadConfiguration extends \Illuminate\Foundation\Bootstrap\LoadConfigurati
* *
* @param \Illuminate\Contracts\Foundation\Application $app * @param \Illuminate\Contracts\Foundation\Application $app
* @param \Illuminate\Contracts\Config\Repository $repository * @param \Illuminate\Contracts\Config\Repository $repository
* @return void
* @throws \Exception * @throws \Exception
*/ */
protected function loadConfigurationFiles(Application $app, RepositoryContract $repository) protected function loadConfigurationFiles(Application $app, RepositoryContract $repository)
@@ -2,12 +2,20 @@
namespace App\Console; namespace App\Console;
use Illuminate\Console\Command;
use Symfony\Component\Process\Process;
use Log; use Log;
use Symfony\Component\Process\Process;
class BaseCommand extends Command /**
* Class BaseCommand
* @package App\Console
*/
abstract class Command extends \Illuminate\Console\Command
{ {
/**
* @return mixed
*/
abstract public function handle();
/** /**
* Splice the logger and replace the active handlers with * Splice the logger and replace the active handlers with
* the handlers from the "cron" stack in config/logging.php * the handlers from the "cron" stack in config/logging.php
@@ -17,7 +25,7 @@ class BaseCommand extends Command
* *
* @param string $channel_name Channel name to grab the handlers from * @param string $channel_name Channel name to grab the handlers from
*/ */
public function redirectLoggingToStdout($channel_name) public function redirectLoggingToStdout($channel_name): void
{ {
$logger = app(\Illuminate\Log\Logger::class); $logger = app(\Illuminate\Log\Logger::class);
@@ -28,7 +36,7 @@ class BaseCommand extends Command
$handler->close(); $handler->close();
} }
} catch (\Exception $e) { } catch (\Exception $e) {
$this->error('Error closing handlers: ' . $e->getMessage()); $this->error('Error closing handlers: '.$e->getMessage());
} }
// Open the handlers for the channel name, // Open the handlers for the channel name,
@@ -38,7 +46,7 @@ class BaseCommand extends Command
Log::channel($channel_name)->getHandlers() Log::channel($channel_name)->getHandlers()
); );
} catch (\Exception $e) { } catch (\Exception $e) {
$this->error('Couldn\'t splice the logger: ' . $e->getMessage()); $this->error('Couldn\'t splice the logger: '.$e->getMessage());
} }
} }
@@ -47,10 +55,9 @@ class BaseCommand extends Command
* @param $filename * @param $filename
* @return \Generator * @return \Generator
*/ */
public function readFile($filename) public function readFile($filename): ?\Generator
{ {
$fp = fopen($filename, 'rb'); $fp = fopen($filename, 'rb');
while (($line = fgets($fp)) !== false) { while (($line = fgets($fp)) !== false) {
$line = rtrim($line, "\r\n"); $line = rtrim($line, "\r\n");
if ($line[0] === ';') { if ($line[0] === ';') {
@@ -70,14 +77,14 @@ class BaseCommand extends Command
* @throws \Symfony\Component\Process\Exception\RuntimeException * @throws \Symfony\Component\Process\Exception\RuntimeException
* @throws \Symfony\Component\Process\Exception\LogicException * @throws \Symfony\Component\Process\Exception\LogicException
*/ */
public function runCommand($cmd, $return = false, $verbose = true) public function runCommand($cmd, $return = false, $verbose = true): string
{ {
if (\is_array($cmd)) { if (\is_array($cmd)) {
$cmd = join(' ', $cmd); $cmd = join(' ', $cmd);
} }
if ($verbose) { if ($verbose) {
$this->info('Running "' . $cmd . '"'); $this->info('Running "'.$cmd.'"');
} }
$val = ''; $val = '';
+31 -26
View File
@@ -2,12 +2,16 @@
namespace App\Console\Commands; namespace App\Console\Commands;
use App\Console\BaseCommand; use App\Console\Command;
use App\Facades\Utils; use App\Facades\Utils;
use GuzzleHttp\Client; use GuzzleHttp\Client;
use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Collection;
class AcarsReplay extends BaseCommand /**
* Class AcarsReplay
* @package App\Console\Commands
*/
class AcarsReplay extends Command
{ {
protected $signature = 'phpvms:replay {files} {--manual} {--write-all} {--no-submit}'; protected $signature = 'phpvms:replay {files} {--manual} {--write-all} {--no-submit}';
protected $description = 'Replay an ACARS file'; protected $description = 'Replay an ACARS file';
@@ -35,7 +39,6 @@ class AcarsReplay extends BaseCommand
*/ */
protected $httpClient; protected $httpClient;
/** /**
* Return an instance of an HTTP client all ready to post * Return an instance of an HTTP client all ready to post
*/ */
@@ -51,23 +54,19 @@ class AcarsReplay extends BaseCommand
]); ]);
} }
/*protected function getArguments()
{
return [
['--files', InputOption::VALUE_OPTIONAL]
];
}*/
/** /**
* Make a request to start a PIREP * Make a request to start a PIREP
* @param \stdClass $flight * @param \stdClass $flight
* @return string * @return string
* @throws \RuntimeException
*/ */
protected function startPirep($flight): string protected function startPirep($flight): string
{ {
# convert the planned flight time to be completely in minutes # convert the planned flight time to be completely in minutes
$pft = Utils::hoursToMinutes($flight->planned_hrsenroute, $pft = Utils::hoursToMinutes(
$flight->planned_minenroute); $flight->planned_hrsenroute,
$flight->planned_minenroute
);
$flight_number = substr($flight->callsign, 3); $flight_number = substr($flight->callsign, 3);
@@ -85,6 +84,7 @@ class AcarsReplay extends BaseCommand
]); ]);
$body = \json_decode($response->getBody()->getContents()); $body = \json_decode($response->getBody()->getContents());
return $body->id; return $body->id;
} }
@@ -92,14 +92,16 @@ class AcarsReplay extends BaseCommand
* Mark the PIREP as filed * Mark the PIREP as filed
* @param $pirep_id * @param $pirep_id
* @return mixed * @return mixed
* @throws \RuntimeException
*/ */
protected function filePirep($pirep_id) protected function filePirep($pirep_id)
{ {
$response = $this->httpClient->post('/api/pireps/'.$pirep_id.'/file', [ $response = $this->httpClient->post('/api/pireps/'.$pirep_id.'/file', [
'json'=> [] 'json' => []
]); ]);
$body = \json_decode($response->getBody()->getContents()); $body = \json_decode($response->getBody()->getContents());
return $body; return $body;
} }
@@ -107,10 +109,11 @@ class AcarsReplay extends BaseCommand
* @param $pirep_id * @param $pirep_id
* @param $data * @param $data
* @return array * @return array
* @throws \RuntimeException
*/ */
protected function postUpdate($pirep_id, $data) protected function postUpdate($pirep_id, $data)
{ {
$uri = '/api/pireps/' . $pirep_id . '/acars/position'; $uri = '/api/pireps/'.$pirep_id.'/acars/position';
$position = [ $position = [
'log' => '', 'log' => '',
@@ -129,13 +132,14 @@ class AcarsReplay extends BaseCommand
]; ];
$this->info("Update: $data->callsign, $position[lat] x $position[lon] \t\t" $this->info("Update: $data->callsign, $position[lat] x $position[lon] \t\t"
. "hdg: $position[heading]\t\talt: $position[altitude]\t\tgs: $position[gs]"); ."hdg: $position[heading]\t\talt: $position[altitude]\t\tgs: $position[gs]");
$response = $this->httpClient->post($uri, [ $response = $this->httpClient->post($uri, [
'json' => $upd 'json' => $upd
]); ]);
$body = \json_decode($response->getBody()->getContents()); $body = \json_decode($response->getBody()->getContents());
return [ return [
$data->callsign, $data->callsign,
$position['lat'], $position['lat'],
@@ -149,22 +153,24 @@ class AcarsReplay extends BaseCommand
/** /**
* Parse this file and run the updates * Parse this file and run the updates
* @param array $files * @param array $files
* @throws \RuntimeException
*/ */
protected function updatesFromFile(array $files) protected function updatesFromFile(array $files)
{ {
/** /**
* @var $flights Collection * @var $flights Collection
*/ */
$flights = collect($files)->transform(function ($f) $flights = collect($files)->transform(function ($f) {
{ $file = storage_path('/replay/'.$f.'.json');
$file = storage_path('/replay/' . $f . '.json');
if (file_exists($file)) { if (file_exists($file)) {
$this->info('Loading ' . $file); $this->info('Loading '.$file);
$contents = file_get_contents($file); $contents = file_get_contents($file);
$contents = \json_decode($contents); $contents = \json_decode($contents);
return collect($contents->updates); return collect($contents->updates);
} else { } else {
$this->error($file . ' not found, skipping'); $this->error($file.' not found, skipping');
return false; return false;
} }
}) })
@@ -178,12 +184,11 @@ class AcarsReplay extends BaseCommand
/** /**
* File the initial pirep to get a "preflight" status * File the initial pirep to get a "preflight" status
*/ */
$flights->each(function ($updates, $idx) $flights->each(function ($updates, $idx) {
{
$update = $updates->first(); $update = $updates->first();
$pirep_id = $this->startPirep($update); $pirep_id = $this->startPirep($update);
$this->pirepList[$update->callsign] = $pirep_id; $this->pirepList[$update->callsign] = $pirep_id;
$this->info('Prefiled ' . $update->callsign . ', ID: ' . $pirep_id); $this->info('Prefiled '.$update->callsign.', ID: '.$pirep_id);
}); });
/** /**
@@ -202,14 +207,14 @@ class AcarsReplay extends BaseCommand
$this->postUpdate($pirep_id, $update); $this->postUpdate($pirep_id, $update);
# we're done and don't put the "no-submit" option # we're done and don't put the "no-submit" option
if($updates->count() === 0 && !$this->option('no-submit')) { if ($updates->count() === 0 && !$this->option('no-submit')) {
$this->filePirep($pirep_id); $this->filePirep($pirep_id);
} }
})->filter(function ($updates, $idx) { })->filter(function ($updates, $idx) {
return $updates->count() > 0; return $updates->count() > 0;
}); });
if(!$this->option('write-all')) { if (!$this->option('write-all')) {
if (!$this->option('manual')) { if (!$this->option('manual')) {
sleep($this->sleepTime); sleep($this->sleepTime);
} else { } else {
@@ -221,8 +226,8 @@ class AcarsReplay extends BaseCommand
/** /**
* Execute the console command. * Execute the console command.
*
* @return mixed * @return mixed
* @throws \RuntimeException
*/ */
public function handle() public function handle()
{ {
+26 -21
View File
@@ -2,15 +2,22 @@
namespace App\Console\Commands; namespace App\Console\Commands;
use App\Console\BaseCommand; use App\Console\Command;
use Log; use Log;
class CreateDatabase extends BaseCommand /**
* Class CreateDatabase
* @package App\Console\Commands
*/
class CreateDatabase extends Command
{ {
protected $signature = 'database:create {--reset} {--conn=?}'; protected $signature = 'database:create {--reset} {--conn=?}';
protected $description = 'Create a database'; protected $description = 'Create a database';
protected $os; protected $os;
/**
* CreateDatabase constructor.
*/
public function __construct() public function __construct()
{ {
parent::__construct(); parent::__construct();
@@ -24,21 +31,22 @@ class CreateDatabase extends BaseCommand
*/ */
protected function create_mysql($dbkey) protected function create_mysql($dbkey)
{ {
$host = config($dbkey . 'host'); $host = config($dbkey.'host');
$port = config($dbkey . 'port'); $port = config($dbkey.'port');
$name = config($dbkey . 'database'); $name = config($dbkey.'database');
$user = config($dbkey . 'username'); $user = config($dbkey.'username');
$pass = config($dbkey . 'password'); $pass = config($dbkey.'password');
$dbSvc = new \App\Console\Services\Database(); $dbSvc = new \App\Console\Services\Database();
$dsn = $dbSvc->createDsn($host, $port); $dsn = $dbSvc->createDsn($host, $port);
Log::info('Connection string: ' . $dsn); Log::info('Connection string: '.$dsn);
try { try {
$conn = $dbSvc->createPDO($dsn, $user, $pass); $conn = $dbSvc->createPDO($dsn, $user, $pass);
} catch (\PDOException $e) { } catch (\PDOException $e) {
Log::error($e); Log::error($e);
return false; return false;
} }
@@ -59,6 +67,7 @@ class CreateDatabase extends BaseCommand
$conn->exec($sql); $conn->exec($sql);
} catch (\PDOException $e) { } catch (\PDOException $e) {
Log::error($e); Log::error($e);
return false; return false;
} }
} }
@@ -75,14 +84,14 @@ class CreateDatabase extends BaseCommand
} }
if ($this->option('reset') === true) { if ($this->option('reset') === true) {
$cmd = ['rm', '-rf', config($dbkey . 'database')]; $cmd = ['rm', '-rf', config($dbkey.'database')];
$this->runCommand($cmd); $this->runCommand($cmd);
} }
if (!file_exists(config($dbkey . 'database'))) { if (!file_exists(config($dbkey.'database'))) {
$cmd = [ $cmd = [
$exec, $exec,
config($dbkey . 'database'), config($dbkey.'database'),
'""', '""',
]; ];
@@ -108,21 +117,17 @@ class CreateDatabase extends BaseCommand
} }
}*/ }*/
$this->info('Using connection "' . config('database.default') . '"'); $this->info('Using connection "'.config('database.default').'"');
$conn = config('database.default'); $conn = config('database.default');
$dbkey = 'database.connections.' . $conn . '.'; $dbkey = 'database.connections.'.$conn.'.';
if (config($dbkey . 'driver') === 'mysql') { if (config($dbkey.'driver') === 'mysql') {
$this->create_mysql($dbkey); $this->create_mysql($dbkey);
} } elseif (config($dbkey.'driver') === 'sqlite') {
elseif (config($dbkey . 'driver') === 'sqlite') {
$this->create_sqlite($dbkey); $this->create_sqlite($dbkey);
} } // TODO: Eventually
elseif (config($dbkey.'driver') === 'postgres') {
// TODO: Eventually
elseif (config($dbkey . 'driver') === 'postgres') {
$this->create_postgres($dbkey); $this->create_postgres($dbkey);
} }
} }
+13 -9
View File
@@ -2,7 +2,7 @@
namespace App\Console\Commands; namespace App\Console\Commands;
use App\Console\BaseCommand; use App\Console\Command;
use App\Models\Acars; use App\Models\Acars;
use App\Models\Airline; use App\Models\Airline;
use App\Models\Pirep; use App\Models\Pirep;
@@ -12,7 +12,11 @@ use DB;
use PDO; use PDO;
use Symfony\Component\Yaml\Yaml; use Symfony\Component\Yaml\Yaml;
class DevCommands extends BaseCommand /**
* Class DevCommands
* @package App\Console\Commands
*/
class DevCommands extends Command
{ {
protected $signature = 'phpvms {cmd} {param?}'; protected $signature = 'phpvms {cmd} {param?}';
protected $description = 'Developer commands'; protected $description = 'Developer commands';
@@ -38,7 +42,7 @@ class DevCommands extends BaseCommand
'xml-to-yaml' => 'xmlToYaml', 'xml-to-yaml' => 'xmlToYaml',
]; ];
if(!array_key_exists($command, $commands)) { if (!array_key_exists($command, $commands)) {
$this->error('Command not found!'); $this->error('Command not found!');
exit(); exit();
} }
@@ -56,7 +60,7 @@ class DevCommands extends BaseCommand
$headers = ['Award Name', 'Class']; $headers = ['Award Name', 'Class'];
$formatted_awards = []; $formatted_awards = [];
foreach($awards as $award) { foreach ($awards as $award) {
$formatted_awards[] = [$award->name, \get_class($award)]; $formatted_awards[] = [$award->name, \get_class($award)];
} }
@@ -68,7 +72,7 @@ class DevCommands extends BaseCommand
*/ */
protected function clearAcars() protected function clearAcars()
{ {
if(config('database.default') === 'mysql') { if (config('database.default') === 'mysql') {
DB::statement('SET foreign_key_checks=0'); DB::statement('SET foreign_key_checks=0');
} }
@@ -122,7 +126,7 @@ class DevCommands extends BaseCommand
$server_version = $pdo->getAttribute(PDO::ATTR_SERVER_VERSION); $server_version = $pdo->getAttribute(PDO::ATTR_SERVER_VERSION);
$emulate_prepares = version_compare($server_version, $emulate_prepares_below_version, '<'); $emulate_prepares = version_compare($server_version, $emulate_prepares_below_version, '<');
$this->info('Server Version: '. $server_version); $this->info('Server Version: '.$server_version);
$this->info('Emulate Prepares: '.$emulate_prepares); $this->info('Emulate Prepares: '.$emulate_prepares);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, $emulate_prepares); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, $emulate_prepares);
@@ -134,7 +138,7 @@ class DevCommands extends BaseCommand
protected function xmlToYaml() protected function xmlToYaml()
{ {
$file = $this->argument('param'); $file = $this->argument('param');
$this->info('Reading '. $file); $this->info('Reading '.$file);
$xml_str = file_get_contents($file); $xml_str = file_get_contents($file);
$xml = new \SimpleXMLElement($xml_str); $xml = new \SimpleXMLElement($xml_str);
@@ -148,7 +152,7 @@ class DevCommands extends BaseCommand
foreach ($xml->database->table_data->row as $row) { foreach ($xml->database->table_data->row as $row) {
$yaml_row = []; $yaml_row = [];
foreach($row->field as $field) { foreach ($row->field as $field) {
$fname = (string) $field['name']; $fname = (string) $field['name'];
$fvalue = (string) $field; $fvalue = (string) $field;
@@ -163,6 +167,6 @@ class DevCommands extends BaseCommand
$file_name = $table_name.'.yml'; $file_name = $table_name.'.yml';
file_put_contents(storage_path($file_name), Yaml::dump($yaml, 4, 2)); file_put_contents(storage_path($file_name), Yaml::dump($yaml, 4, 2));
$this->info('Writing yaml to storage: '. $file_name); $this->info('Writing yaml to storage: '.$file_name);
} }
} }
+6 -6
View File
@@ -2,14 +2,14 @@
namespace App\Console\Commands; namespace App\Console\Commands;
use App\Console\BaseCommand; use App\Console\Command;
use Modules\Installer\Services\ConfigService; use Modules\Installer\Services\ConfigService;
/** /**
* Create a fresh development install * Create a fresh development install
* @package App\Console\Commands * @package App\Console\Commands
*/ */
class DevInstall extends BaseCommand class DevInstall extends Command
{ {
protected $signature = 'phpvms:dev-install {--reset-db}'; protected $signature = 'phpvms:dev-install {--reset-db}';
protected $description = 'Run a developer install and run the sample migration'; protected $description = 'Run a developer install and run the sample migration';
@@ -20,7 +20,7 @@ class DevInstall extends BaseCommand
*/ */
public function handle() public function handle()
{ {
if(!$this->option('reset-db')) { if (!$this->option('reset-db')) {
$this->rewriteConfigs(); $this->rewriteConfigs();
} }
@@ -69,18 +69,18 @@ class DevInstall extends BaseCommand
# Remove the old files # Remove the old files
$config_file = base_path('config.php'); $config_file = base_path('config.php');
if(file_exists($config_file)) { if (file_exists($config_file)) {
unlink($config_file); unlink($config_file);
} }
$env_file = base_path('env.php'); $env_file = base_path('env.php');
if(file_exists($env_file)) { if (file_exists($env_file)) {
unlink($env_file); unlink($env_file);
} }
$this->info('Removing the sqlite db'); $this->info('Removing the sqlite db');
$db_file = storage_path('db.sqlite'); $db_file = storage_path('db.sqlite');
if(file_exists($db_file)) { if (file_exists($db_file)) {
unlink($db_file); unlink($db_file);
} }
+2 -2
View File
@@ -2,9 +2,9 @@
namespace App\Console\Commands; namespace App\Console\Commands;
use App\Console\BaseCommand; use App\Console\Command;
class ImportFromClassic extends BaseCommand class ImportFromClassic extends Command
{ {
protected $signature = 'phpvms:importer {db_host} {db_name} {db_user} {db_pass?} {table_prefix=phpvms_}'; protected $signature = 'phpvms:importer {db_host} {db_name} {db_user} {db_pass?} {table_prefix=phpvms_}';
protected $description = 'Import from an older version of phpVMS'; protected $description = 'Import from an older version of phpVMS';
+17 -10
View File
@@ -2,9 +2,13 @@
namespace App\Console\Commands; namespace App\Console\Commands;
use App\Console\BaseCommand; use App\Console\Command;
class Install extends BaseCommand /**
* Class Install
* @package App\Console\Commands
*/
class Install extends Command
{ {
protected $signature = 'phpvms:install protected $signature = 'phpvms:install
{--update} {--update}
@@ -13,11 +17,17 @@ class Install extends BaseCommand
protected $description = 'Install or update phpVMS'; protected $description = 'Install or update phpVMS';
/**
* Install constructor.
*/
public function __construct() public function __construct()
{ {
parent::__construct(); parent::__construct();
} }
/**
* @return mixed|void
*/
public function handle() public function handle()
{ {
$this->info('Installing phpVMS...'); $this->info('Installing phpVMS...');
@@ -25,7 +35,7 @@ class Install extends BaseCommand
$this->setupDatabase(); $this->setupDatabase();
# Only run these if we're doing an initial install # Only run these if we're doing an initial install
if(!$this->option('update')) { if (!$this->option('update')) {
$this->writeLocalConfig(); $this->writeLocalConfig();
$this->initialData(); $this->initialData();
} }
@@ -38,22 +48,20 @@ class Install extends BaseCommand
*/ */
protected function setupDatabase() protected function setupDatabase()
{ {
if(!$this->option('update')) { if (!$this->option('update')) {
$this->call('database:create'); $this->call('database:create');
} }
$this->info('Running database migrations...'); $this->info('Running database migrations...');
$this->call('migrate'); $this->call('migrate');
# TODO: Call initial seed data, for the groups and other supporting data # TODO: Call initial seed data, for the groups and other supporting data
} }
/** /**
* Write a local config file * Write a local config file
*/ */
protected function writeLocalConfig() protected function writeLocalConfig(): void
{ {
} }
/** /**
@@ -63,15 +71,14 @@ class Install extends BaseCommand
{ {
# TODO: Prompt for initial airline info # TODO: Prompt for initial airline info
$airline_name = $this->option('airline-name'); $airline_name = $this->option('airline-name');
if(!$airline_name) { if (!$airline_name) {
$airline_name = $this->ask('Enter your airline name'); $airline_name = $this->ask('Enter your airline name');
} }
$airline_code = $this->option('airline-code'); $airline_code = $this->option('airline-code');
if(!$airline_code) { if (!$airline_code) {
$airline_code = $this->ask('Enter your airline code'); $airline_code = $this->ask('Enter your airline code');
} }
# TODO: Prompt for admin user/password # TODO: Prompt for admin user/password
} }
} }
+30 -22
View File
@@ -2,15 +2,33 @@
namespace App\Console\Commands; namespace App\Console\Commands;
use App\Console\BaseCommand; use App\Console\Command;
use App\Models\Enums\NavaidType; use App\Models\Enums\NavaidType;
use App\Models\Navdata; use App\Models\Navdata;
class NavdataImport extends BaseCommand /**
* Class NavdataImport
* @package App\Console\Commands
*/
class NavdataImport extends Command
{ {
protected $signature = 'phpvms:navdata'; protected $signature = 'phpvms:navdata';
protected $description = ''; protected $description = '';
/**
* @return mixed|void
* @throws \League\Geotools\Exception\InvalidArgumentException
*/
public function handle()
{
$this->info('Emptying the current navdata...');
Navdata::query()->truncate();
$this->info('Looking for nav files...');
$this->read_wp_nav_aid();
$this->read_wp_nav_fix();
}
/** /**
* Read and parse in the navaid file * Read and parse in the navaid file
* @throws \League\Geotools\Exception\InvalidArgumentException * @throws \League\Geotools\Exception\InvalidArgumentException
@@ -49,6 +67,7 @@ class NavdataImport extends BaseCommand
$file_path = storage_path('/navdata/WPNAVAID.txt'); $file_path = storage_path('/navdata/WPNAVAID.txt');
if (!file_exists($file_path)) { if (!file_exists($file_path)) {
$this->error('WPNAVAID.txt not found in storage/navdata'); $this->error('WPNAVAID.txt not found in storage/navdata');
return false; return false;
} }
@@ -57,8 +76,7 @@ class NavdataImport extends BaseCommand
$imported = 0; $imported = 0;
foreach($generator as $line) { foreach ($generator as $line) {
$navaid = [ $navaid = [
'id' => trim(substr($line, 24, 4)), // ident column 'id' => trim(substr($line, 24, 4)), // ident column
'name' => trim(substr($line, 0, 24)), 'name' => trim(substr($line, 0, 24)),
@@ -70,8 +88,7 @@ class NavdataImport extends BaseCommand
]; ];
# Map to the Navaid enum # Map to the Navaid enum
switch($navaid['type']) switch ($navaid['type']) {
{
case 'ILS': case 'ILS':
$navaid['type'] = NavaidType::LOC; $navaid['type'] = NavaidType::LOC;
break; break;
@@ -104,12 +121,12 @@ class NavdataImport extends BaseCommand
], $navaid); ], $navaid);
$imported++; $imported++;
if($imported % 100 === 0) { if ($imported % 100 === 0) {
$this->info('Imported ' . $imported . ' entries...'); $this->info('Imported '.$imported.' entries...');
} }
} }
$this->info('Imported a total of ' . $imported . ' nav aids'); $this->info('Imported a total of '.$imported.' nav aids');
} }
/** /**
@@ -137,8 +154,9 @@ class NavdataImport extends BaseCommand
*/ */
$file_path = storage_path('/navdata/WPNAVFIX.txt'); $file_path = storage_path('/navdata/WPNAVFIX.txt');
if(!file_exists($file_path)) { if (!file_exists($file_path)) {
$this->error('WPNAVFIX.txt not found in storage/navdata'); $this->error('WPNAVFIX.txt not found in storage/navdata');
return false; return false;
} }
@@ -165,20 +183,10 @@ class NavdataImport extends BaseCommand
$imported++; $imported++;
if ($imported % 100 === 0) { if ($imported % 100 === 0) {
$this->info('Imported ' . $imported . ' entries...'); $this->info('Imported '.$imported.' entries...');
} }
} }
$this->info('Imported a total of ' . $imported . ' nav fixes'); $this->info('Imported a total of '.$imported.' nav fixes');
}
public function handle()
{
$this->info('Emptying the current navdata...');
Navdata::query()->truncate();
$this->info('Looking for nav files...');
$this->read_wp_nav_aid();
$this->read_wp_nav_fix();
} }
} }
+6 -3
View File
@@ -2,13 +2,16 @@
namespace App\Console\Commands; namespace App\Console\Commands;
use App\Console\BaseCommand; use App\Console\Command;
use GuzzleHttp\Client; use GuzzleHttp\Client;
class TestApi extends BaseCommand /**
* Class TestApi
* @package App\Console\Commands
*/
class TestApi extends Command
{ {
protected $signature = 'phpvms:test-api {apikey} {url}'; protected $signature = 'phpvms:test-api {apikey} {url}';
protected $httpClient; protected $httpClient;
/** /**
+11 -7
View File
@@ -2,10 +2,14 @@
namespace App\Console\Commands; namespace App\Console\Commands;
use App\Console\BaseCommand; use App\Console\Command;
use Symfony\Component\Yaml\Yaml; use Symfony\Component\Yaml\Yaml;
class Version extends BaseCommand /**
* Class Version
* @package App\Console\Commands
*/
class Version extends Command
{ {
protected $signature = 'phpvms:version {--write} {--base-only}'; protected $signature = 'phpvms:version {--write} {--base-only}';
@@ -19,7 +23,7 @@ class Version extends BaseCommand
# prefix with the date in YYMMDD format # prefix with the date in YYMMDD format
$date = date('ymd'); $date = date('ymd');
$version = $date . '-' . $version; $version = $date.'-'.$version;
return $version; return $version;
} }
@@ -46,11 +50,11 @@ class Version extends BaseCommand
# Only show the major.minor.patch version # Only show the major.minor.patch version
if ($this->option('base-only')) { if ($this->option('base-only')) {
$version = 'v' . $cfg['current']['major'] . '.' $version = 'v'.$cfg['current']['major'].'.'
. $cfg['current']['minor'] . '.' .$cfg['current']['minor'].'.'
. $cfg['current']['patch']; .$cfg['current']['patch'];
} }
print $version . "\n"; print $version."\n";
} }
} }
+13 -5
View File
@@ -2,16 +2,24 @@
namespace App\Console\Commands; namespace App\Console\Commands;
use App\Console\BaseCommand; use App\Console\Command;
use App\Services\DatabaseService; use App\Services\DatabaseService;
use DB; use DB;
use Symfony\Component\Yaml\Yaml; use Symfony\Component\Yaml\Yaml;
class YamlExport extends BaseCommand /**
* Class YamlExport
* @package App\Console\Commands
*/
class YamlExport extends Command
{ {
protected $signature = 'phpvms:export {tables*}'; protected $signature = 'phpvms:export {tables*}';
protected $description = 'YAML table export'; protected $description = 'YAML table export';
/**
* YamlExport constructor.
* @param DatabaseService $dbSvc
*/
public function __construct(DatabaseService $dbSvc) public function __construct(DatabaseService $dbSvc)
{ {
parent::__construct(); parent::__construct();
@@ -23,17 +31,17 @@ class YamlExport extends BaseCommand
public function handle() public function handle()
{ {
$tables = $this->argument('tables'); $tables = $this->argument('tables');
if(empty($tables)) { if (empty($tables)) {
$this->error('No tables specified'); $this->error('No tables specified');
exit(); exit();
} }
$export_tables = []; $export_tables = [];
foreach($tables as $table) { foreach ($tables as $table) {
$export_tables[$table] = []; $export_tables[$table] = [];
$rows = DB::table($table)->get(); $rows = DB::table($table)->get();
foreach($rows as $row) { foreach ($rows as $row) {
$export_tables[$table][] = (array) $row; $export_tables[$table][] = (array) $row;
} }
} }
+17 -13
View File
@@ -2,16 +2,23 @@
namespace App\Console\Commands; namespace App\Console\Commands;
use App\Console\BaseCommand; use App\Console\Command;
use App\Services\DatabaseService; use App\Services\DatabaseService;
class YamlImport extends BaseCommand /**
* Class YamlImport
* @package App\Console\Commands
*/
class YamlImport extends Command
{ {
protected $signature = 'phpvms:import {files*}'; protected $signature = 'phpvms:import {files*}';
protected $description = 'Developer commands'; protected $description = 'Developer commands';
protected $dbSvc; protected $dbSvc;
/**
* YamlImport constructor.
* @param DatabaseService $dbSvc
*/
public function __construct(DatabaseService $dbSvc) public function __construct(DatabaseService $dbSvc)
{ {
parent::__construct(); parent::__construct();
@@ -20,31 +27,28 @@ class YamlImport extends BaseCommand
/** /**
* Run dev related commands * Run dev related commands
* @throws \Exception
*/ */
public function handle() public function handle()
{ {
$files = $this->argument('files'); $files = $this->argument('files');
if(empty($files)) { if (empty($files)) {
$this->error('No files to import specified!'); $this->error('No files to import specified!');
exit(); exit();
} }
$ignore_errors = true; $ignore_errors = true;
/*$ignore_errors = $this->option('ignore_errors');
if(!$ignore_errors) {
$ignore_errors = false;
}*/
foreach($files as $file) { foreach ($files as $file) {
if(!file_exists($file)) { if (!file_exists($file)) {
$this->error('File ' . $file .' doesn\'t exist'); $this->error('File '.$file.' doesn\'t exist');
exit; exit;
} }
$this->info('Importing ' . $file); $this->info('Importing '.$file);
$imported = $this->dbSvc->seed_from_yaml_file($file, $ignore_errors); $imported = $this->dbSvc->seed_from_yaml_file($file, $ignore_errors);
foreach($imported as $table => $count) { foreach ($imported as $table => $count) {
$this->info('Imported '.$count.' records from "'.$table.'"'); $this->info('Imported '.$count.' records from "'.$table.'"');
} }
} }
+5 -2
View File
@@ -2,7 +2,7 @@
namespace App\Console\Cron; namespace App\Console\Cron;
use App\Console\BaseCommand; use App\Console\Command;
use App\Events\CronMonthly; use App\Events\CronMonthly;
/** /**
@@ -10,12 +10,15 @@ use App\Events\CronMonthly;
* listeners, etc can just be called to run those tasks * listeners, etc can just be called to run those tasks
* @package App\Console\Cron * @package App\Console\Cron
*/ */
class Monthly extends BaseCommand class Monthly extends Command
{ {
protected $signature = 'cron:monthly'; protected $signature = 'cron:monthly';
protected $description = 'Run the monthly cron tasks'; protected $description = 'Run the monthly cron tasks';
protected $schedule; protected $schedule;
/**
*
*/
public function handle(): void public function handle(): void
{ {
$this->redirectLoggingToStdout('cron'); $this->redirectLoggingToStdout('cron');
+5 -2
View File
@@ -2,7 +2,7 @@
namespace App\Console\Cron; namespace App\Console\Cron;
use App\Console\BaseCommand; use App\Console\Command;
use App\Events\CronNightly; use App\Events\CronNightly;
/** /**
@@ -10,12 +10,15 @@ use App\Events\CronNightly;
* listeners, etc can just be called to run those tasks * listeners, etc can just be called to run those tasks
* @package App\Console\Cron * @package App\Console\Cron
*/ */
class Nightly extends BaseCommand class Nightly extends Command
{ {
protected $signature = 'cron:nightly'; protected $signature = 'cron:nightly';
protected $description = 'Run the nightly cron tasks'; protected $description = 'Run the nightly cron tasks';
protected $schedule; protected $schedule;
/**
*
*/
public function handle(): void public function handle(): void
{ {
$this->redirectLoggingToStdout('cron'); $this->redirectLoggingToStdout('cron');
+5 -2
View File
@@ -2,7 +2,7 @@
namespace App\Console\Cron; namespace App\Console\Cron;
use App\Console\BaseCommand; use App\Console\Command;
use App\Events\CronMonthly; use App\Events\CronMonthly;
/** /**
@@ -10,12 +10,15 @@ use App\Events\CronMonthly;
* listeners, etc can just be called to run those tasks * listeners, etc can just be called to run those tasks
* @package App\Console\Cron * @package App\Console\Cron
*/ */
class Weekly extends BaseCommand class Weekly extends Command
{ {
protected $signature = 'cron:monthly'; protected $signature = 'cron:monthly';
protected $description = 'Run the monthly cron tasks'; protected $description = 'Run the monthly cron tasks';
protected $schedule; protected $schedule;
/**
*
*/
public function handle(): void public function handle(): void
{ {
$this->redirectLoggingToStdout('cron'); $this->redirectLoggingToStdout('cron');
+6 -7
View File
@@ -8,13 +8,12 @@ use App\Console\Cron\Weekly;
use Illuminate\Console\Scheduling\Schedule; use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel; use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
/**
* Class Kernel
* @package App\Console
*/
class Kernel extends ConsoleKernel class Kernel extends ConsoleKernel
{ {
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [ protected $commands = [
Commands\AcarsReplay::class, Commands\AcarsReplay::class,
Commands\CreateDatabase::class, Commands\CreateDatabase::class,
@@ -45,7 +44,7 @@ class Kernel extends ConsoleKernel
protected function commands(): void protected function commands(): void
{ {
require app_path('Routes/console.php'); require app_path('Routes/console.php');
$this->load(__DIR__ . '/Commands'); $this->load(__DIR__.'/Commands');
$this->load(__DIR__ . '/Cron'); $this->load(__DIR__.'/Cron');
} }
} }
+3 -3
View File
@@ -2,7 +2,7 @@
namespace App\Console\Services; namespace App\Console\Services;
use Doctrine\DBAL\Driver\PDOException; use PDOException;
use PDO; use PDO;
/** /**
@@ -18,11 +18,11 @@ class Database
* @param null $name * @param null $name
* @return string * @return string
*/ */
public function createDsn($host, $port, $name=null) public function createDsn($host, $port, $name = null)
{ {
$conn = config('database.default'); $conn = config('database.default');
$dsn = "$conn:host=$host;port=$port"; $dsn = "$conn:host=$host;port=$port";
if(filled($name)) { if (filled($name)) {
$dsn .= ';dbname='.$name; $dsn .= ';dbname='.$name;
} }
+59 -65
View File
@@ -15,7 +15,7 @@ use App\Models\Rank;
use App\Models\Subfleet; use App\Models\Subfleet;
use App\Models\User; use App\Models\User;
use Carbon\Carbon; use Carbon\Carbon;
use Doctrine\DBAL\Driver\PDOException; use PDOException;
use Illuminate\Database\QueryException; use Illuminate\Database\QueryException;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str; use Illuminate\Support\Str;
@@ -105,13 +105,13 @@ class Importer
*/ */
protected function reconnect() protected function reconnect()
{ {
$dsn = 'mysql:' . implode(';', [ $dsn = 'mysql:'.implode(';', [
'host=' . $this->creds['host'], 'host='.$this->creds['host'],
'port=' . $this->creds['port'], 'port='.$this->creds['port'],
'dbname=' . $this->creds['name'] 'dbname='.$this->creds['name']
]); ]);
$this->info('Connection string: ' . $dsn); $this->info('Connection string: '.$dsn);
try { try {
$this->conn = new PDO($dsn, $this->creds['user'], $this->creds['pass']); $this->conn = new PDO($dsn, $this->creds['user'], $this->creds['pass']);
@@ -127,14 +127,15 @@ class Importer
*/ */
protected function comment($message) protected function comment($message)
{ {
$this->log->writeln('<comment>' . $message . '</comment>'); $this->log->writeln('<comment>'.$message.'</comment>');
} }
/** /**
* @param $message * @param $message
*/ */
protected function error($message) { protected function error($message)
$this->log->writeln('<error>' . $message . '</error>'); {
$this->log->writeln('<error>'.$message.'</error>');
} }
/** /**
@@ -142,10 +143,9 @@ class Importer
*/ */
protected function info($message) protected function info($message)
{ {
if(\is_array($message)) { if (\is_array($message)) {
print_r($message); print_r($message);
} } else {
else {
$this->log->writeln('<info>'.$message.'</info>'); $this->log->writeln('<info>'.$message.'</info>');
} }
} }
@@ -157,7 +157,7 @@ class Importer
*/ */
protected function tableName($table) protected function tableName($table)
{ {
if($this->creds['table_prefix'] !== false) { if ($this->creds['table_prefix'] !== false) {
return $this->creds['table_prefix'].$table; return $this->creds['table_prefix'].$table;
} }
@@ -173,9 +173,10 @@ class Importer
{ {
try { try {
$model->save(); $model->save();
return true; return true;
} catch (QueryException $e) { } catch (QueryException $e) {
if($e->getCode() !== '23000') { if ($e->getCode() !== '23000') {
$this->error($e); $this->error($e);
} }
@@ -191,7 +192,7 @@ class Importer
*/ */
protected function addMapping($entity, $old_id, $new_id) protected function addMapping($entity, $old_id, $new_id)
{ {
if(!array_key_exists($entity, $this->mappedEntities)) { if (!array_key_exists($entity, $this->mappedEntities)) {
$this->mappedEntities[$entity] = []; $this->mappedEntities[$entity] = [];
} }
@@ -206,12 +207,12 @@ class Importer
*/ */
protected function getMapping($entity, $old_id) protected function getMapping($entity, $old_id)
{ {
if(!array_key_exists($entity, $this->mappedEntities)) { if (!array_key_exists($entity, $this->mappedEntities)) {
return 0; return 0;
} }
$entity = $this->mappedEntities[$entity]; $entity = $this->mappedEntities[$entity];
if(array_key_exists($old_id, $entity)) { if (array_key_exists($old_id, $entity)) {
return $entity[$old_id]; return $entity[$old_id];
} }
@@ -225,6 +226,7 @@ class Importer
protected function parseDate($date) protected function parseDate($date)
{ {
$carbon = Carbon::parse($date); $carbon = Carbon::parse($date);
return $carbon; return $carbon;
} }
@@ -235,9 +237,9 @@ class Importer
*/ */
protected function convertDuration($duration) protected function convertDuration($duration)
{ {
if(strpos($duration, '.') !== false) { if (strpos($duration, '.') !== false) {
$delim = '.'; $delim = '.';
} elseif(strpos($duration, ':')) { } elseif (strpos($duration, ':')) {
$delim = ':'; $delim = ':';
} else { } else {
# no delimiter, assume it's just a straight hour # no delimiter, assume it's just a straight hour
@@ -259,10 +261,11 @@ class Importer
{ {
$table = $this->tableName($table); $table = $this->tableName($table);
$sql = 'SELECT COUNT(*) FROM ' . $table; $sql = 'SELECT COUNT(*) FROM '.$table;
$rows = $this->conn->query($sql)->fetchColumn(); $rows = $this->conn->query($sql)->fetchColumn();
$this->info('Found '.$rows.' rows in '.$table); $this->info('Found '.$rows.' rows in '.$table);
return (int) $rows; return (int) $rows;
} }
@@ -272,39 +275,38 @@ class Importer
* @param null $read_rows Number of rows to read * @param null $read_rows Number of rows to read
* @return \Generator * @return \Generator
*/ */
protected function readRows($table, $read_rows=null) protected function readRows($table, $read_rows = null)
{ {
// Set the table prefix if it has been entered // Set the table prefix if it has been entered
$this->tableName($table); $this->tableName($table);
$offset = 0; $offset = 0;
if($read_rows === null) { if ($read_rows === null) {
$read_rows = self::BATCH_READ_ROWS; $read_rows = self::BATCH_READ_ROWS;
} }
$total_rows = $this->getTotalRows($table); $total_rows = $this->getTotalRows($table);
while($offset < $total_rows) while ($offset < $total_rows) {
{
$rows_to_read = $offset + $read_rows; $rows_to_read = $offset + $read_rows;
if($rows_to_read > $total_rows) { if ($rows_to_read > $total_rows) {
$rows_to_read = $total_rows; $rows_to_read = $total_rows;
} }
$this->info('Reading '.$offset.' to '.$rows_to_read.' of '.$total_rows); $this->info('Reading '.$offset.' to '.$rows_to_read.' of '.$total_rows);
$sql = 'SELECT * FROM ' . $this->tableName($table) $sql = 'SELECT * FROM '.$this->tableName($table)
. ' LIMIT ' . self::BATCH_READ_ROWS . ' OFFSET ' . $offset; .' LIMIT '.self::BATCH_READ_ROWS.' OFFSET '.$offset;
try { try {
foreach ($this->conn->query($sql) as $row) { foreach ($this->conn->query($sql) as $row) {
yield $row; yield $row;
} }
} catch(PDOException $e) { } catch (PDOException $e) {
// Without incrementing the offset, it should re-run the same query // Without incrementing the offset, it should re-run the same query
$this->error($e); $this->error($e);
if(strpos($e->getMessage(), 'server has gone away') !== false) { if (strpos($e->getMessage(), 'server has gone away') !== false) {
$this->reconnect(); $this->reconnect();
continue; continue;
} }
@@ -344,22 +346,21 @@ class Importer
$this->comment('--- RANK IMPORT ---'); $this->comment('--- RANK IMPORT ---');
$count = 0; $count = 0;
foreach ($this->readRows('ranks') as $row) foreach ($this->readRows('ranks') as $row) {
{
$rank = Rank::firstOrCreate( $rank = Rank::firstOrCreate(
['name' => $row->rank], ['name' => $row->rank],
['image_url' => $row->rankimage, 'hours'=>$row->minhours] ['image_url' => $row->rankimage, 'hours' => $row->minhours]
); );
$this->addMapping('ranks', $row->rankid, $rank->id); $this->addMapping('ranks', $row->rankid, $rank->id);
$this->addMapping('ranks', $row->rank, $rank->id); $this->addMapping('ranks', $row->rank, $rank->id);
if($rank->wasRecentlyCreated) { if ($rank->wasRecentlyCreated) {
++$count; ++$count;
} }
} }
$this->info('Imported ' . $count . ' ranks'); $this->info('Imported '.$count.' ranks');
} }
/** /**
@@ -371,8 +372,7 @@ class Importer
$this->comment('--- AIRLINE IMPORT ---'); $this->comment('--- AIRLINE IMPORT ---');
$count = 0; $count = 0;
foreach ($this->readRows('airlines') as $row) foreach ($this->readRows('airlines') as $row) {
{
$airline = Airline::firstOrCreate( $airline = Airline::firstOrCreate(
['icao' => $row->code], ['icao' => $row->code],
['iata' => $row->code, 'name' => $row->name, 'active' => $row->enabled] ['iata' => $row->code, 'name' => $row->name, 'active' => $row->enabled]
@@ -386,7 +386,7 @@ class Importer
} }
} }
$this->info('Imported '. $count.' airlines'); $this->info('Imported '.$count.' airlines');
} }
/** /**
@@ -401,8 +401,7 @@ class Importer
$this->info('Subfleet ID is '.$subfleet->id); $this->info('Subfleet ID is '.$subfleet->id);
$count = 0; $count = 0;
foreach($this->readRows('aircraft') as $row) foreach ($this->readRows('aircraft') as $row) {
{
$aircraft = Aircraft::firstOrCreate( $aircraft = Aircraft::firstOrCreate(
['name' => $row->fullname, 'registration' => $row->registration], ['name' => $row->fullname, 'registration' => $row->registration],
['icao' => $row->icao, ['icao' => $row->icao,
@@ -412,12 +411,12 @@ class Importer
$this->addMapping('aircraft', $row->id, $aircraft->id); $this->addMapping('aircraft', $row->id, $aircraft->id);
if($aircraft->wasRecentlyCreated) { if ($aircraft->wasRecentlyCreated) {
++$count; ++$count;
} }
} }
$this->info('Imported ' . $count . ' aircraft'); $this->info('Imported '.$count.' aircraft');
} }
/** /**
@@ -428,8 +427,7 @@ class Importer
$this->comment('--- AIRPORT IMPORT ---'); $this->comment('--- AIRPORT IMPORT ---');
$count = 0; $count = 0;
foreach ($this->readRows('airports') as $row) foreach ($this->readRows('airports') as $row) {
{
$attrs = [ $attrs = [
'id' => trim($row->icao), 'id' => trim($row->icao),
'icao' => trim($row->icao), 'icao' => trim($row->icao),
@@ -445,12 +443,12 @@ class Importer
$attrs $attrs
); );
if($airport->wasRecentlyCreated) { if ($airport->wasRecentlyCreated) {
++$count; ++$count;
} }
} }
$this->info('Imported ' . $count . ' airports'); $this->info('Imported '.$count.' airports');
} }
/** /**
@@ -461,8 +459,7 @@ class Importer
$this->comment('--- FLIGHT SCHEDULE IMPORT ---'); $this->comment('--- FLIGHT SCHEDULE IMPORT ---');
$count = 0; $count = 0;
foreach ($this->readRows('schedules') as $row) foreach ($this->readRows('schedules') as $row) {
{
$airline_id = $this->getMapping('airlines', $row->code); $airline_id = $this->getMapping('airlines', $row->code);
$flight_num = trim($row->flightnum); $flight_num = trim($row->flightnum);
@@ -493,12 +490,12 @@ class Importer
// TODO: deserialize route_details into ACARS table // TODO: deserialize route_details into ACARS table
if($flight->wasRecentlyCreated) { if ($flight->wasRecentlyCreated) {
++$count; ++$count;
} }
} }
$this->info('Imported ' . $count . ' flights'); $this->info('Imported '.$count.' flights');
} }
/** /**
@@ -509,8 +506,7 @@ class Importer
$this->comment('--- PIREP IMPORT ---'); $this->comment('--- PIREP IMPORT ---');
$count = 0; $count = 0;
foreach ($this->readRows('pireps') as $row) foreach ($this->readRows('pireps') as $row) {
{
$pirep_id = $row->pirepid; $pirep_id = $row->pirepid;
$user_id = $this->getMapping('users', $row->pilotid); $user_id = $this->getMapping('users', $row->pilotid);
$airline_id = $this->getMapping('airlines', $row->code); $airline_id = $this->getMapping('airlines', $row->code);
@@ -542,7 +538,7 @@ class Importer
$attrs['planned_flight_time'] = $duration; $attrs['planned_flight_time'] = $duration;
# Set how it was filed # Set how it was filed
if(strtoupper($row->source) === 'MANUAL') { if (strtoupper($row->source) === 'MANUAL') {
$attrs['source'] = PirepSource::MANUAL; $attrs['source'] = PirepSource::MANUAL;
} else { } else {
$attrs['source'] = PirepSource::ACARS; $attrs['source'] = PirepSource::ACARS;
@@ -550,16 +546,16 @@ class Importer
# Set the flight type # Set the flight type
$row->flighttype = strtoupper($row->flighttype); $row->flighttype = strtoupper($row->flighttype);
if($row->flighttype === 'P') { if ($row->flighttype === 'P') {
$attrs['flight_type'] = FlightType::PASSENGER; $attrs['flight_type'] = FlightType::PASSENGER;
} elseif($row->flighttype === 'C') { } elseif ($row->flighttype === 'C') {
$attrs['flight_type'] = FlightType::CARGO; $attrs['flight_type'] = FlightType::CARGO;
} else { } else {
$attrs['flight_type'] = FlightType::CHARTER; $attrs['flight_type'] = FlightType::CHARTER;
} }
# Set the flight level of the PIREP is set # Set the flight level of the PIREP is set
if(property_exists($row, 'flightlevel')) { if (property_exists($row, 'flightlevel')) {
$attrs['level'] = $row->flightlevel; $attrs['level'] = $row->flightlevel;
} else { } else {
$attrs['level'] = 0; $attrs['level'] = 0;
@@ -571,11 +567,11 @@ class Importer
); );
$source = strtoupper($row->source); $source = strtoupper($row->source);
if($source === 'SMARTCARS') { if ($source === 'SMARTCARS') {
# TODO: Parse smartcars log into the acars table # TODO: Parse smartcars log into the acars table
} elseif($source === 'KACARS') { } elseif ($source === 'KACARS') {
# TODO: Parse kACARS log into acars table # TODO: Parse kACARS log into acars table
} elseif($source === 'XACARS') { } elseif ($source === 'XACARS') {
# TODO: Parse XACARS log into acars table # TODO: Parse XACARS log into acars table
} }
@@ -587,7 +583,7 @@ class Importer
} }
} }
$this->info('Imported ' . $count . ' pireps'); $this->info('Imported '.$count.' pireps');
} }
protected function importUsers() protected function importUsers()
@@ -596,10 +592,9 @@ class Importer
$count = 0; $count = 0;
foreach ($this->readRows('pilots', 50) as $row) { foreach ($this->readRows('pilots', 50) as $row) {
# TODO: What to do about pilot ids # TODO: What to do about pilot ids
$name = $row->firstname . ' ' . $row->lastname; $name = $row->firstname.' '.$row->lastname;
$airline_id = $this->getMapping('airlines', $row->code); $airline_id = $this->getMapping('airlines', $row->code);
$rank_id = $this->getMapping('ranks', $row->rank); $rank_id = $this->getMapping('ranks', $row->rank);
@@ -615,7 +610,7 @@ class Importer
'rank_id' => $rank_id, 'rank_id' => $rank_id,
'home_airport_id' => $row->hub, 'home_airport_id' => $row->hub,
'curr_airport_id' => $row->hub, 'curr_airport_id' => $row->hub,
'flights' => (int)$row->totalflights, 'flights' => (int) $row->totalflights,
'flight_time' => Utils::hoursToMinutes($row->totalhours), 'flight_time' => Utils::hoursToMinutes($row->totalhours),
'state' => $state, 'state' => $state,
'created_at' => $this->parseDate($row->joindate), 'created_at' => $this->parseDate($row->joindate),
@@ -633,7 +628,7 @@ class Importer
} }
} }
$this->info('Imported ' . $count . ' users'); $this->info('Imported '.$count.' users');
} }
/** /**
@@ -641,7 +636,6 @@ class Importer
*/ */
protected function findLastPireps() protected function findLastPireps()
{ {
} }
/** /**
@@ -682,7 +676,7 @@ class Importer
} elseif ($state === $phpvms_classic_states['ON_LEAVE']) { } elseif ($state === $phpvms_classic_states['ON_LEAVE']) {
return UserState::ON_LEAVE; return UserState::ON_LEAVE;
} else { } else {
$this->error('Unknown status: '. $state); $this->error('Unknown status: '.$state);
} }
} }
} }
+1 -1
View File
@@ -5,7 +5,7 @@ use Faker\Generator as Faker;
$factory->define(App\Models\Aircraft::class, function (Faker $faker) { $factory->define(App\Models\Aircraft::class, function (Faker $faker) {
return [ return [
'id' => null, 'id' => null,
'subfleet_id' => function() { 'subfleet_id' => function () {
return factory(App\Models\Subfleet::class)->create()->id; return factory(App\Models\Subfleet::class)->create()->id;
}, },
'airport_id' => function () { 'airport_id' => function () {
+4 -1
View File
@@ -12,9 +12,12 @@ $factory->define(App\Models\Airline::class, function (Faker $faker) {
'icao' => function (array $apt) use ($faker) { 'icao' => function (array $apt) use ($faker) {
$hashids = new Hashids(microtime(), 5); $hashids = new Hashids(microtime(), 5);
$mt = str_replace('.', '', microtime(true)); $mt = str_replace('.', '', microtime(true));
return $hashids->encode($mt); return $hashids->encode($mt);
}, },
'iata' => function (array $apt) { return $apt['icao']; }, 'iata' => function (array $apt) {
return $apt['icao'];
},
'name' => $faker->sentence(3), 'name' => $faker->sentence(3),
'country' => $faker->country, 'country' => $faker->country,
'active' => 1 'active' => 1
+7 -4
View File
@@ -6,9 +6,8 @@ use Faker\Generator as Faker;
* Add any number of airports. Don't really care if they're real or not * Add any number of airports. Don't really care if they're real or not
*/ */
$factory->define(App\Models\Airport::class, function (Faker $faker) { $factory->define(App\Models\Airport::class, function (Faker $faker) {
return [ return [
'id' => function() { 'id' => function () {
$characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; $characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$string = ''; $string = '';
$max = strlen($characters) - 1; $max = strlen($characters) - 1;
@@ -18,8 +17,12 @@ $factory->define(App\Models\Airport::class, function (Faker $faker) {
return $string; return $string;
}, },
'icao' => function(array $apt) { return $apt['id']; }, 'icao' => function (array $apt) {
'iata' => function (array $apt) { return $apt['id']; }, return $apt['id'];
},
'iata' => function (array $apt) {
return $apt['id'];
},
'name' => $faker->sentence(3), 'name' => $faker->sentence(3),
'country' => $faker->country, 'country' => $faker->country,
'timezone' => $faker->timezone, 'timezone' => $faker->timezone,
+1 -1
View File
@@ -15,7 +15,7 @@ $factory->define(App\Models\Flight::class, function (Faker $faker) use ($airline
'flight_number' => $faker->unique()->numberBetween(10, 1000000), 'flight_number' => $faker->unique()->numberBetween(10, 1000000),
'route_code' => $faker->randomElement(['', $faker->text(5)]), 'route_code' => $faker->randomElement(['', $faker->text(5)]),
'route_leg' => $faker->randomElement(['', $faker->text(5)]), 'route_leg' => $faker->randomElement(['', $faker->text(5)]),
'dpt_airport_id' => function() { 'dpt_airport_id' => function () {
return factory(App\Models\Airport::class)->create()->id; return factory(App\Models\Airport::class)->create()->id;
}, },
'arr_airport_id' => function () { 'arr_airport_id' => function () {
+1 -2
View File
@@ -7,7 +7,6 @@ use Faker\Generator as Faker;
* Create a new PIREP * Create a new PIREP
*/ */
$factory->define(App\Models\Pirep::class, function (Faker $faker) { $factory->define(App\Models\Pirep::class, function (Faker $faker) {
return [ return [
'id' => null, 'id' => null,
'airline_id' => function () { 'airline_id' => function () {
@@ -47,7 +46,7 @@ $factory->define(App\Models\Pirep::class, function (Faker $faker) {
'state' => PirepState::PENDING, 'state' => PirepState::PENDING,
'status' => PirepStatus::SCHEDULED, 'status' => PirepStatus::SCHEDULED,
'created_at' => Carbon::now()->toDateTimeString(), 'created_at' => Carbon::now()->toDateTimeString(),
'updated_at' => function(array $pirep) { 'updated_at' => function (array $pirep) {
return $pirep['created_at']; return $pirep['created_at'];
}, },
]; ];
+1 -2
View File
@@ -3,8 +3,7 @@
use App\Models\Enums\UserState; use App\Models\Enums\UserState;
use Faker\Generator as Faker; use Faker\Generator as Faker;
$factory->define(App\Models\User::class, function (Faker $faker) $factory->define(App\Models\User::class, function (Faker $faker) {
{
static $password; static $password;
return [ return [
@@ -81,7 +81,6 @@ class RolesPermissionsTables extends Migration
], ],
]; ];
$this->addData('roles', $roles); $this->addData('roles', $roles);
} }
@@ -5,7 +5,6 @@ use Illuminate\Database\Schema\Blueprint;
class CreateAirlinesTable extends Migration class CreateAirlinesTable extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
* *
@@ -27,7 +27,6 @@ class CreateAircraftsTable extends Migration
$table->unique('registration'); $table->unique('registration');
$table->index('airport_id'); $table->index('airport_id');
}); });
} }
public function down() public function down()
@@ -5,7 +5,6 @@ use Illuminate\Database\Schema\Blueprint;
class CreateFaresTable extends Migration class CreateFaresTable extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
* *
@@ -6,7 +6,6 @@ use Illuminate\Database\Schema\Blueprint;
class CreateFlightTables extends Migration class CreateFlightTables extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
* *
@@ -5,7 +5,6 @@ use Illuminate\Database\Schema\Blueprint;
class CreateRanksTable extends Migration class CreateRanksTable extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
* *
@@ -35,7 +35,7 @@ class CreateSubfleetTables extends Migration
$table->index(['fare_id', 'subfleet_id']); $table->index(['fare_id', 'subfleet_id']);
}); });
Schema::create('subfleet_flight', function(Blueprint $table) { Schema::create('subfleet_flight', function (Blueprint $table) {
$table->unsignedInteger('subfleet_id'); $table->unsignedInteger('subfleet_id');
$table->string('flight_id', 12); $table->string('flight_id', 12);
@@ -43,7 +43,7 @@ class CreateSubfleetTables extends Migration
$table->index(['flight_id', 'subfleet_id']); $table->index(['flight_id', 'subfleet_id']);
}); });
Schema::create('subfleet_rank', function(Blueprint $table) { Schema::create('subfleet_rank', function (Blueprint $table) {
$table->unsignedInteger('rank_id'); $table->unsignedInteger('rank_id');
$table->unsignedInteger('subfleet_id'); $table->unsignedInteger('subfleet_id');
$table->string('acars_pay')->nullable(); $table->string('acars_pay')->nullable();
@@ -8,7 +8,6 @@ use Illuminate\Database\Schema\Blueprint;
class CreatePirepTables extends Migration class CreatePirepTables extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
* *
@@ -22,7 +22,6 @@ class CreateStatsTable extends Migration
$table->primary('id'); $table->primary('id');
$table->timestamps(); $table->timestamps();
}); });
/*$this->addCounterGroups([ /*$this->addCounterGroups([
'flights' => 1, 'flights' => 1,
]); ]);
@@ -1,8 +1,8 @@
<?php <?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateAwardsTable extends Migration class CreateAwardsTable extends Migration
{ {
@@ -30,7 +30,6 @@ class CreateAwardsTable extends Migration
$table->index(['ref_class']); $table->index(['ref_class']);
}); });
Schema::create('user_awards', function (Blueprint $table) { Schema::create('user_awards', function (Blueprint $table) {
$table->increments('id'); $table->increments('id');
$table->unsignedInteger('user_id'); $table->unsignedInteger('user_id');
@@ -9,7 +9,6 @@ class CreateExpensesTable extends Migration
public function up() public function up()
{ {
Schema::create('expenses', function (Blueprint $table) { Schema::create('expenses', function (Blueprint $table) {
$table->increments('id'); $table->increments('id');
$table->unsignedInteger('airline_id')->nullable(); $table->unsignedInteger('airline_id')->nullable();
+2 -2
View File
@@ -20,13 +20,13 @@ class DatabaseSeeder extends Seeder
public function run() public function run()
{ {
$env = App::environment(); $env = App::environment();
if(array_key_exists($env, self::$seed_mapper)) { if (array_key_exists($env, self::$seed_mapper)) {
$env = self::$seed_mapper[$env]; $env = self::$seed_mapper[$env];
} }
$path = database_path('seeds/'.$env.'.yml'); $path = database_path('seeds/'.$env.'.yml');
if(!file_exists($path)) { if (!file_exists($path)) {
$path = database_path('seeds/prod.yml'); $path = database_path('seeds/prod.yml');
} }
+3
View File
@@ -14,6 +14,9 @@ class CronMonthly
{ {
use Dispatchable, SerializesModels; use Dispatchable, SerializesModels;
/**
* CronMonthly constructor.
*/
public function __construct() public function __construct()
{ {
+3
View File
@@ -14,6 +14,9 @@ class CronNightly
{ {
use Dispatchable, SerializesModels; use Dispatchable, SerializesModels;
/**
* CronNightly constructor.
*/
public function __construct() public function __construct()
{ {
+3
View File
@@ -14,6 +14,9 @@ class CronWeekly
{ {
use Dispatchable, SerializesModels; use Dispatchable, SerializesModels;
/**
* CronWeekly constructor.
*/
public function __construct() public function __construct()
{ {
+1 -2
View File
@@ -32,13 +32,12 @@ use Illuminate\Queue\SerializesModels;
class Expenses class Expenses
{ {
use Dispatchable, SerializesModels; use Dispatchable, SerializesModels;
public $pirep; public $pirep;
/** /**
* @param Pirep|null $pirep * @param Pirep|null $pirep
*/ */
public function __construct(Pirep $pirep=null) public function __construct(Pirep $pirep = null)
{ {
$this->pirep = $pirep; $this->pirep = $pirep;
} }
+8
View File
@@ -7,12 +7,20 @@ use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
/**
* Class PirepAccepted
* @package App\Events
*/
class PirepAccepted class PirepAccepted
{ {
use Dispatchable, InteractsWithSockets, SerializesModels; use Dispatchable, InteractsWithSockets, SerializesModels;
public $pirep; public $pirep;
/**
* PirepAccepted constructor.
* @param Pirep $pirep
*/
public function __construct(Pirep $pirep) public function __construct(Pirep $pirep)
{ {
$this->pirep = $pirep; $this->pirep = $pirep;
-1
View File
@@ -10,7 +10,6 @@ use Illuminate\Queue\SerializesModels;
class PirepFiled class PirepFiled
{ {
use Dispatchable, InteractsWithSockets, SerializesModels; use Dispatchable, InteractsWithSockets, SerializesModels;
public $pirep; public $pirep;
public function __construct(Pirep $pirep) public function __construct(Pirep $pirep)
+8
View File
@@ -7,12 +7,20 @@ use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
/**
* Class PirepRejected
* @package App\Events
*/
class PirepRejected class PirepRejected
{ {
use Dispatchable, InteractsWithSockets, SerializesModels; use Dispatchable, InteractsWithSockets, SerializesModels;
public $pirep; public $pirep;
/**
* PirepRejected constructor.
* @param Pirep $pirep
*/
public function __construct(Pirep $pirep) public function __construct(Pirep $pirep)
{ {
$this->pirep = $pirep; $this->pirep = $pirep;
+5
View File
@@ -7,6 +7,10 @@ use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
/**
* Class TestEvent
* @package App\Events
*/
class TestEvent class TestEvent
{ {
use Dispatchable, InteractsWithSockets, SerializesModels; use Dispatchable, InteractsWithSockets, SerializesModels;
@@ -15,6 +19,7 @@ class TestEvent
/** /**
* Create a new event instance. * Create a new event instance.
* @param User $user
*/ */
public function __construct(User $user) public function __construct(User $user)
{ {
+8
View File
@@ -7,12 +7,20 @@ use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
/**
* Class UserAccepted
* @package App\Events
*/
class UserAccepted class UserAccepted
{ {
use Dispatchable, InteractsWithSockets, SerializesModels; use Dispatchable, InteractsWithSockets, SerializesModels;
public $user; public $user;
/**
* UserAccepted constructor.
* @param User $user
*/
public function __construct(User $user) public function __construct(User $user)
{ {
$this->user = $user; $this->user = $user;
+8
View File
@@ -7,12 +7,20 @@ use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
/**
* Class UserRegistered
* @package App\Events
*/
class UserRegistered class UserRegistered
{ {
use Dispatchable, InteractsWithSockets, SerializesModels; use Dispatchable, InteractsWithSockets, SerializesModels;
public $user; public $user;
/**
* UserRegistered constructor.
* @param User $user
*/
public function __construct(User $user) public function __construct(User $user)
{ {
$this->user = $user; $this->user = $user;
+5
View File
@@ -17,6 +17,11 @@ class UserStateChanged
public $old_state, $user; public $old_state, $user;
/**
* UserStateChanged constructor.
* @param User $user
* @param $old_state
*/
public function __construct(User $user, $old_state) public function __construct(User $user, $old_state)
{ {
$this->old_state = $old_state; $this->old_state = $old_state;
+4
View File
@@ -7,6 +7,10 @@ use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
/**
* Class UserStatsChanged
* @package App\Events
*/
class UserStatsChanged class UserStatsChanged
{ {
use Dispatchable, InteractsWithSockets, SerializesModels; use Dispatchable, InteractsWithSockets, SerializesModels;
+10 -5
View File
@@ -1,16 +1,21 @@
<?php <?php
/**
*
*/
namespace App\Exceptions; namespace App\Exceptions;
use Symfony\Component\HttpKernel\Exception\HttpException; use Symfony\Component\HttpKernel\Exception\HttpException;
/**
* Class AircraftPermissionDenied
* @package App\Exceptions
*/
class AircraftPermissionDenied extends HttpException class AircraftPermissionDenied extends HttpException
{ {
public function __construct(string $message = null, \Exception $previous = null, int $code = 0, array $headers = []) public function __construct(
{ string $message = null,
\Exception $previous = null,
int $code = 0,
array $headers = []
) {
parent::__construct( parent::__construct(
400, 400,
'User is not allowed to fly this aircraft', 'User is not allowed to fly this aircraft',
+10 -5
View File
@@ -1,16 +1,21 @@
<?php <?php
/**
*
*/
namespace App\Exceptions; namespace App\Exceptions;
use Symfony\Component\HttpKernel\Exception\HttpException; use Symfony\Component\HttpKernel\Exception\HttpException;
/**
* Class BidExists
* @package App\Exceptions
*/
class BidExists extends HttpException class BidExists extends HttpException
{ {
public function __construct(string $message = null, \Exception $previous = null, int $code = 0, array $headers = []) public function __construct(
{ string $message = null,
\Exception $previous = null,
int $code = 0,
array $headers = []
) {
parent::__construct( parent::__construct(
409, 409,
'A bid already exists for this flight', 'A bid already exists for this flight',
+7 -7
View File
@@ -67,12 +67,11 @@ class Handler extends ExceptionHandler
public function render($request, Exception $exception) public function render($request, Exception $exception)
{ {
if ($request->is('api/*')) { if ($request->is('api/*')) {
$headers = []; $headers = [];
Log::error('API Error', $exception->getTrace()); Log::error('API Error', $exception->getTrace());
if($exception instanceof ModelNotFoundException || if ($exception instanceof ModelNotFoundException ||
$exception instanceof NotFoundHttpException) { $exception instanceof NotFoundHttpException) {
$error = $this->createError(404, $exception->getMessage()); $error = $this->createError(404, $exception->getMessage());
} }
@@ -88,10 +87,10 @@ class Handler extends ExceptionHandler
} }
# Create the detailed errors from the validation errors # Create the detailed errors from the validation errors
elseif($exception instanceof ValidationException) { elseif ($exception instanceof ValidationException) {
$error_messages = []; $error_messages = [];
$errors = $exception->errors(); $errors = $exception->errors();
foreach($errors as $field => $error) { foreach ($errors as $field => $error) {
$error_messages[] = implode(', ', $error); $error_messages[] = implode(', ', $error);
} }
@@ -107,7 +106,7 @@ class Handler extends ExceptionHandler
} }
# Only add trace if in dev # Only add trace if in dev
if(config('app.env') === 'dev') { if (config('app.env') === 'dev') {
$error['error']['trace'] = $exception->getTrace()[0]; $error['error']['trace'] = $exception->getTrace()[0];
} }
@@ -133,6 +132,7 @@ class Handler extends ExceptionHandler
{ {
if ($request->expectsJson() || $request->is('api/*')) { if ($request->expectsJson() || $request->is('api/*')) {
$error = $this->createError(401, 'Unauthenticated'); $error = $this->createError(401, 'Unauthenticated');
return response()->json($error, 401); return response()->json($error, 401);
} }
@@ -148,9 +148,9 @@ class Handler extends ExceptionHandler
{ {
$status = $e->getStatusCode(); $status = $e->getStatusCode();
view()->replaceNamespace('errors', [ view()->replaceNamespace('errors', [
resource_path('views/layouts/' . config('phpvms.skin') . '/errors'), resource_path('views/layouts/'.config('phpvms.skin').'/errors'),
resource_path('views/errors'), resource_path('views/errors'),
__DIR__ . '/views', __DIR__.'/views',
]); ]);
if (view()->exists("errors::{$status}")) { if (view()->exists("errors::{$status}")) {
+10 -5
View File
@@ -1,16 +1,21 @@
<?php <?php
/**
*
*/
namespace App\Exceptions; namespace App\Exceptions;
use Symfony\Component\HttpKernel\Exception\HttpException; use Symfony\Component\HttpKernel\Exception\HttpException;
/**
* Class PirepCancelled
* @package App\Exceptions
*/
class PirepCancelled extends HttpException class PirepCancelled extends HttpException
{ {
public function __construct(string $message = null, \Exception $previous = null, int $code = 0, array $headers = []) public function __construct(
{ string $message = null,
\Exception $previous = null,
int $code = 0,
array $headers = []
) {
parent::__construct( parent::__construct(
400, 400,
'PIREP has been cancelled, updates are not allowed', 'PIREP has been cancelled, updates are not allowed',
+4 -4
View File
@@ -1,13 +1,13 @@
<?php <?php
/**
*
*/
namespace App\Exceptions; namespace App\Exceptions;
use Symfony\Component\HttpKernel\Exception\HttpException; use Symfony\Component\HttpKernel\Exception\HttpException;
/**
* Class SettingNotFound
* @package App\Exceptions
*/
class SettingNotFound extends HttpException class SettingNotFound extends HttpException
{ {
} }
+25 -17
View File
@@ -5,8 +5,15 @@ namespace App\Facades;
use GuzzleHttp\Client; use GuzzleHttp\Client;
use Illuminate\Support\Facades\Facade; use Illuminate\Support\Facades\Facade;
/**
* Class Utils
* @package App\Facades
*/
class Utils extends Facade class Utils extends Facade
{ {
/**
* @return string
*/
protected static function getFacadeAccessor() protected static function getFacadeAccessor()
{ {
return 'utils'; return 'utils';
@@ -19,11 +26,11 @@ class Utils extends Facade
*/ */
public static function isObject($obj) public static function isObject($obj)
{ {
if(!$obj) { if (!$obj) {
return false; return false;
} }
if($obj[0] === '{' || $obj[0] === '[') { if ($obj[0] === '{' || $obj[0] === '[') {
return true; return true;
} }
@@ -38,10 +45,10 @@ class Utils extends Facade
* @return string * @return string
* @throws \RuntimeException * @throws \RuntimeException
*/ */
public static function downloadUrl($uri, $file=null) public static function downloadUrl($uri, $file = null)
{ {
$opts = []; $opts = [];
if($file !== null) { if ($file !== null) {
$opts['sink'] = $file; $opts['sink'] = $file;
} }
@@ -49,21 +56,20 @@ class Utils extends Facade
$response = $client->request('GET', $uri, $opts); $response = $client->request('GET', $uri, $opts);
$body = $response->getBody()->getContents(); $body = $response->getBody()->getContents();
if($response->getHeader('content-type') === 'application/json') { if ($response->getHeader('content-type') === 'application/json') {
$body = \GuzzleHttp\json_decode($body); $body = \GuzzleHttp\json_decode($body);
} }
return $body; return $body;
} }
/** /**
* Returns a 40 character API key that a user can use * Returns a 40 character API key that a user can use
* @return string * @return string
*/ */
public static function generateApiKey() public static function generateApiKey()
{ {
$key = substr(sha1(time() . mt_rand()), 0, 20); $key = substr(sha1(time().mt_rand()), 0, 20);
return $key; return $key;
} }
@@ -78,7 +84,7 @@ class Utils extends Facade
public static function minutesToTimeString($minutes): string public static function minutesToTimeString($minutes): string
{ {
$hm = self::minutesToTimeParts($minutes); $hm = self::minutesToTimeParts($minutes);
return $hm['h']. 'h '. $hm['m'] . 'm'; return $hm['h'].'h '.$hm['m'].'m';
} }
/** /**
@@ -107,11 +113,11 @@ class Utils extends Facade
* @param bool $incl_sec * @param bool $incl_sec
* @return string * @return string
*/ */
public static function secondsToTimeString($seconds, $incl_sec=false): string public static function secondsToTimeString($seconds, $incl_sec = false): string
{ {
$hms = self::secondsToTimeParts($seconds); $hms = self::secondsToTimeParts($seconds);
$format = $hms['h'].'h '.$hms['m'].'m'; $format = $hms['h'].'h '.$hms['m'].'m';
if($incl_sec) { if ($incl_sec) {
$format .= ' '.$hms['s'].'s'; $format .= ' '.$hms['s'].'s';
} }
@@ -134,7 +140,7 @@ class Utils extends Facade
*/ */
public static function secondsToMinutes($seconds) public static function secondsToMinutes($seconds)
{ {
return ceil($seconds/60); return ceil($seconds / 60);
} }
/** /**
@@ -144,7 +150,7 @@ class Utils extends Facade
*/ */
public static function minutesToHours($minutes) public static function minutesToHours($minutes)
{ {
return $minutes/60; return $minutes / 60;
} }
/** /**
@@ -152,10 +158,10 @@ class Utils extends Facade
* @param null $minutes * @param null $minutes
* @return float|int * @return float|int
*/ */
public static function hoursToMinutes($hours, $minutes=null) public static function hoursToMinutes($hours, $minutes = null)
{ {
$total = (int) $hours * 60; $total = (int) $hours * 60;
if($minutes) { if ($minutes) {
$total += (int) $minutes; $total += (int) $minutes;
} }
@@ -168,8 +174,9 @@ class Utils extends Facade
* @param array $day_enums Array of values from config("enum.days") * @param array $day_enums Array of values from config("enum.days")
* @return int * @return int
*/ */
public static function setDays(int $datefield, array $day_enums) { public static function setDays(int $datefield, array $day_enums)
foreach($day_enums as $day) { {
foreach ($day_enums as $day) {
$datefield |= $day; $datefield |= $day;
} }
@@ -182,7 +189,8 @@ class Utils extends Facade
* @param int $day_enum Value from config("enum.days") * @param int $day_enum Value from config("enum.days")
* @return bool * @return bool
*/ */
public static function hasDay(int $datefield, int $day_enum) { public static function hasDay(int $datefield, int $day_enum)
{
return ($datefield & $day_enum) === $datefield; return ($datefield & $day_enum) === $datefield;
} }
} }
@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Admin;
use App\Http\Requests\CreateAircraftRequest; use App\Http\Requests\CreateAircraftRequest;
use App\Http\Requests\UpdateAircraftRequest; use App\Http\Requests\UpdateAircraftRequest;
use App\Interfaces\Controller;
use App\Models\Aircraft; use App\Models\Aircraft;
use App\Models\Enums\AircraftStatus; use App\Models\Enums\AircraftStatus;
use App\Models\Expense; use App\Models\Expense;
@@ -13,8 +14,11 @@ use Flash;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Prettus\Repository\Criteria\RequestCriteria; use Prettus\Repository\Criteria\RequestCriteria;
/**
class AircraftController extends BaseController * Class AircraftController
* @package App\Http\Controllers\Admin
*/
class AircraftController extends Controller
{ {
private $aircraftRepo; private $aircraftRepo;
@@ -63,6 +67,7 @@ class AircraftController extends BaseController
$aircraft = $this->aircraftRepo->create($attrs); $aircraft = $this->aircraftRepo->create($attrs);
Flash::success('Aircraft saved successfully.'); Flash::success('Aircraft saved successfully.');
return redirect(route('admin.aircraft.edit', ['id' => $aircraft->id])); return redirect(route('admin.aircraft.edit', ['id' => $aircraft->id]));
} }
@@ -75,6 +80,7 @@ class AircraftController extends BaseController
if (empty($aircraft)) { if (empty($aircraft)) {
Flash::error('Aircraft not found'); Flash::error('Aircraft not found');
return redirect(route('admin.aircraft.index')); return redirect(route('admin.aircraft.index'));
} }
@@ -92,6 +98,7 @@ class AircraftController extends BaseController
if (empty($aircraft)) { if (empty($aircraft)) {
Flash::error('Aircraft not found'); Flash::error('Aircraft not found');
return redirect(route('admin.aircraft.index')); return redirect(route('admin.aircraft.index'));
} }
@@ -112,6 +119,7 @@ class AircraftController extends BaseController
if (empty($aircraft)) { if (empty($aircraft)) {
Flash::error('Aircraft not found'); Flash::error('Aircraft not found');
return redirect(route('admin.aircraft.index')); return redirect(route('admin.aircraft.index'));
} }
@@ -119,6 +127,7 @@ class AircraftController extends BaseController
$this->aircraftRepo->update($attrs, $id); $this->aircraftRepo->update($attrs, $id);
Flash::success('Aircraft updated successfully.'); Flash::success('Aircraft updated successfully.');
return redirect(route('admin.aircraft.index')); return redirect(route('admin.aircraft.index'));
} }
@@ -131,12 +140,14 @@ class AircraftController extends BaseController
if (empty($aircraft)) { if (empty($aircraft)) {
Flash::error('Aircraft not found'); Flash::error('Aircraft not found');
return redirect(route('admin.aircraft.index')); return redirect(route('admin.aircraft.index'));
} }
$this->aircraftRepo->delete($id); $this->aircraftRepo->delete($id);
Flash::success('Aircraft deleted successfully.'); Flash::success('Aircraft deleted successfully.');
return redirect(route('admin.aircraft.index')); return redirect(route('admin.aircraft.index'));
} }
@@ -147,6 +158,7 @@ class AircraftController extends BaseController
protected function return_expenses_view(?Aircraft $aircraft) protected function return_expenses_view(?Aircraft $aircraft)
{ {
$aircraft->refresh(); $aircraft->refresh();
return view('admin.aircraft.expenses', [ return view('admin.aircraft.expenses', [
'aircraft' => $aircraft, 'aircraft' => $aircraft,
]); ]);
@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Admin;
use App\Http\Requests\CreateAirlineRequest; use App\Http\Requests\CreateAirlineRequest;
use App\Http\Requests\UpdateAirlineRequest; use App\Http\Requests\UpdateAirlineRequest;
use App\Interfaces\Controller;
use App\Repositories\AirlineRepository; use App\Repositories\AirlineRepository;
use App\Support\Countries; use App\Support\Countries;
use Flash; use Flash;
@@ -11,9 +12,12 @@ use Illuminate\Http\Request;
use Prettus\Repository\Criteria\RequestCriteria; use Prettus\Repository\Criteria\RequestCriteria;
use Response; use Response;
class AirlinesController extends BaseController /**
* Class AirlinesController
* @package App\Http\Controllers\Admin
*/
class AirlinesController extends Controller
{ {
/** @var AirlineRepository */
private $airlineRepo; private $airlineRepo;
/** /**
@@ -59,6 +63,7 @@ class AirlinesController extends BaseController
$airlines = $this->airlineRepo->create($input); $airlines = $this->airlineRepo->create($input);
Flash::success('Airlines saved successfully.'); Flash::success('Airlines saved successfully.');
return redirect(route('admin.airlines.index')); return redirect(route('admin.airlines.index'));
} }
@@ -73,6 +78,7 @@ class AirlinesController extends BaseController
if (empty($airlines)) { if (empty($airlines)) {
Flash::error('Airlines not found'); Flash::error('Airlines not found');
return redirect(route('admin.airlines.index')); return redirect(route('admin.airlines.index'));
} }
@@ -92,6 +98,7 @@ class AirlinesController extends BaseController
if (empty($airline)) { if (empty($airline)) {
Flash::error('Airline not found'); Flash::error('Airline not found');
return redirect(route('admin.airlines.index')); return redirect(route('admin.airlines.index'));
} }
@@ -114,6 +121,7 @@ class AirlinesController extends BaseController
if (empty($airlines)) { if (empty($airlines)) {
Flash::error('Airlines not found'); Flash::error('Airlines not found');
return redirect(route('admin.airlines.index')); return redirect(route('admin.airlines.index'));
} }
@@ -135,12 +143,14 @@ class AirlinesController extends BaseController
if (empty($airlines)) { if (empty($airlines)) {
Flash::error('Airlines not found'); Flash::error('Airlines not found');
return redirect(route('admin.airlines.index')); return redirect(route('admin.airlines.index'));
} }
$this->airlineRepo->delete($id); $this->airlineRepo->delete($id);
Flash::success('Airlines deleted successfully.'); Flash::success('Airlines deleted successfully.');
return redirect(route('admin.airlines.index')); return redirect(route('admin.airlines.index'));
} }
} }
@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Admin;
use App\Http\Requests\CreateAirportRequest; use App\Http\Requests\CreateAirportRequest;
use App\Http\Requests\UpdateAirportRequest; use App\Http\Requests\UpdateAirportRequest;
use App\Interfaces\Controller;
use App\Models\Airport; use App\Models\Airport;
use App\Models\Expense; use App\Models\Expense;
use App\Repositories\AirportRepository; use App\Repositories\AirportRepository;
@@ -13,14 +14,15 @@ use Illuminate\Http\Request;
use Jackiedo\Timezonelist\Facades\Timezonelist; use Jackiedo\Timezonelist\Facades\Timezonelist;
use Response; use Response;
/**
class AirportController extends BaseController * Class AirportController
* @package App\Http\Controllers\Admin
*/
class AirportController extends Controller
{ {
/** @var AirportRepository */
private $airportRepo; private $airportRepo;
/** /**
* AirportController constructor.
* @param AirportRepository $airportRepo * @param AirportRepository $airportRepo
*/ */
public function __construct( public function __construct(
@@ -38,7 +40,7 @@ class AirportController extends BaseController
public function index(Request $request) public function index(Request $request)
{ {
$where = []; $where = [];
if($request->has('icao')) { if ($request->has('icao')) {
$where['icao'] = $request->get('icao'); $where['icao'] = $request->get('icao');
} }
@@ -77,6 +79,7 @@ class AirportController extends BaseController
$this->airportRepo->create($input); $this->airportRepo->create($input);
Flash::success('Airport saved successfully.'); Flash::success('Airport saved successfully.');
return redirect(route('admin.airports.index')); return redirect(route('admin.airports.index'));
} }
@@ -91,6 +94,7 @@ class AirportController extends BaseController
if (empty($airport)) { if (empty($airport)) {
Flash::error('Airport not found'); Flash::error('Airport not found');
return redirect(route('admin.airports.index')); return redirect(route('admin.airports.index'));
} }
@@ -110,6 +114,7 @@ class AirportController extends BaseController
if (empty($airport)) { if (empty($airport)) {
Flash::error('Airport not found'); Flash::error('Airport not found');
return redirect(route('admin.airports.index')); return redirect(route('admin.airports.index'));
} }
@@ -132,6 +137,7 @@ class AirportController extends BaseController
if (empty($airport)) { if (empty($airport)) {
Flash::error('Airport not found'); Flash::error('Airport not found');
return redirect(route('admin.airports.index')); return redirect(route('admin.airports.index'));
} }
@@ -141,6 +147,7 @@ class AirportController extends BaseController
$this->airportRepo->update($attrs, $id); $this->airportRepo->update($attrs, $id);
Flash::success('Airport updated successfully.'); Flash::success('Airport updated successfully.');
return redirect(route('admin.airports.index')); return redirect(route('admin.airports.index'));
} }
@@ -155,12 +162,14 @@ class AirportController extends BaseController
if (empty($airport)) { if (empty($airport)) {
Flash::error('Airport not found'); Flash::error('Airport not found');
return redirect(route('admin.airports.index')); return redirect(route('admin.airports.index'));
} }
$this->airportRepo->delete($id); $this->airportRepo->delete($id);
Flash::success('Airport deleted successfully.'); Flash::success('Airport deleted successfully.');
return redirect(route('admin.airports.index')); return redirect(route('admin.airports.index'));
} }
@@ -171,6 +180,7 @@ class AirportController extends BaseController
protected function return_expenses_view(?Airport $airport) protected function return_expenses_view(?Airport $airport)
{ {
$airport->refresh(); $airport->refresh();
return view('admin.airports.expenses', [ return view('admin.airports.expenses', [
'airport' => $airport, 'airport' => $airport,
]); ]);
@@ -224,6 +234,7 @@ class AirportController extends BaseController
$airport = $this->airportRepo->findWithoutFail($id); $airport = $this->airportRepo->findWithoutFail($id);
if (empty($airport)) { if (empty($airport)) {
Flash::error('Flight not found'); Flash::error('Flight not found');
return redirect(route('admin.flights.index')); return redirect(route('admin.flights.index'));
} }
+15 -3
View File
@@ -4,19 +4,25 @@ namespace App\Http\Controllers\Admin;
use App\Http\Requests\CreateAwardRequest; use App\Http\Requests\CreateAwardRequest;
use App\Http\Requests\UpdateAwardRequest; use App\Http\Requests\UpdateAwardRequest;
use App\Interfaces\Controller;
use App\Repositories\AwardRepository; use App\Repositories\AwardRepository;
use App\Services\AwardService; use App\Services\AwardService;
use Illuminate\Http\Request;
use Flash; use Flash;
use Illuminate\Http\Request;
use Prettus\Repository\Criteria\RequestCriteria; use Prettus\Repository\Criteria\RequestCriteria;
use Response; use Response;
class AwardController extends BaseController class AwardController extends Controller
{ {
/** @var AwardRepository */ /** @var AwardRepository */
private $awardRepository, private $awardRepository,
$awardSvc; $awardSvc;
/**
* AwardController constructor.
* @param AwardRepository $awardRepo
* @param AwardService $awardSvc
*/
public function __construct( public function __construct(
AwardRepository $awardRepo, AwardRepository $awardRepo,
AwardService $awardSvc AwardService $awardSvc
@@ -38,7 +44,7 @@ class AwardController extends BaseController
$descriptions = []; $descriptions = [];
$award_classes = $this->awardSvc->findAllAwardClasses(); $award_classes = $this->awardSvc->findAllAwardClasses();
foreach($award_classes as $class_ref => $award) { foreach ($award_classes as $class_ref => $award) {
$awards[$class_ref] = $award->name; $awards[$class_ref] = $award->name;
$descriptions[$class_ref] = $award->param_description; $descriptions[$class_ref] = $award->param_description;
} }
@@ -72,6 +78,7 @@ class AwardController extends BaseController
public function create() public function create()
{ {
$class_refs = $this->getAwardClassesAndDescriptions(); $class_refs = $this->getAwardClassesAndDescriptions();
return view('admin.awards.create', [ return view('admin.awards.create', [
'award_classes' => $class_refs['awards'], 'award_classes' => $class_refs['awards'],
'award_descriptions' => $class_refs['descriptions'], 'award_descriptions' => $class_refs['descriptions'],
@@ -103,6 +110,7 @@ class AwardController extends BaseController
$award = $this->awardRepository->findWithoutFail($id); $award = $this->awardRepository->findWithoutFail($id);
if (empty($award)) { if (empty($award)) {
Flash::error('Award not found'); Flash::error('Award not found');
return redirect(route('admin.awards.index')); return redirect(route('admin.awards.index'));
} }
@@ -121,10 +129,12 @@ class AwardController extends BaseController
$award = $this->awardRepository->findWithoutFail($id); $award = $this->awardRepository->findWithoutFail($id);
if (empty($award)) { if (empty($award)) {
Flash::error('Award not found'); Flash::error('Award not found');
return redirect(route('admin.awards.index')); return redirect(route('admin.awards.index'));
} }
$class_refs = $this->getAwardClassesAndDescriptions(); $class_refs = $this->getAwardClassesAndDescriptions();
return view('admin.awards.edit', [ return view('admin.awards.edit', [
'award' => $award, 'award' => $award,
'award_classes' => $class_refs['awards'], 'award_classes' => $class_refs['awards'],
@@ -144,6 +154,7 @@ class AwardController extends BaseController
$award = $this->awardRepository->findWithoutFail($id); $award = $this->awardRepository->findWithoutFail($id);
if (empty($award)) { if (empty($award)) {
Flash::error('Award not found'); Flash::error('Award not found');
return redirect(route('admin.awards.index')); return redirect(route('admin.awards.index'));
} }
@@ -165,6 +176,7 @@ class AwardController extends BaseController
$award = $this->awardRepository->findWithoutFail($id); $award = $this->awardRepository->findWithoutFail($id);
if (empty($award)) { if (empty($award)) {
Flash::error('Fare not found'); Flash::error('Fare not found');
return redirect(route('admin.awards.index')); return redirect(route('admin.awards.index'));
} }
@@ -1,12 +0,0 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Response;
class BaseController extends Controller
{
}
@@ -3,6 +3,7 @@
namespace App\Http\Controllers\Admin; namespace App\Http\Controllers\Admin;
use App\Facades\Utils; use App\Facades\Utils;
use App\Interfaces\Controller;
use App\Repositories\NewsRepository; use App\Repositories\NewsRepository;
use App\Repositories\PirepRepository; use App\Repositories\PirepRepository;
use App\Repositories\UserRepository; use App\Repositories\UserRepository;
@@ -13,9 +14,15 @@ use Log;
use Version; use Version;
use vierbergenlars\SemVer\version as semver; use vierbergenlars\SemVer\version as semver;
class DashboardController extends BaseController /**
* Class DashboardController
* @package App\Http\Controllers\Admin
*/
class DashboardController extends Controller
{ {
private $newsRepo, $pirepRepo, $userRepo; private $newsRepo,
$pirepRepo,
$userRepo;
/** /**
* DashboardController constructor. * DashboardController constructor.
@@ -46,7 +53,7 @@ class DashboardController extends BaseController
$latest_version = new semver(Utils::downloadUrl(config('phpvms.version_file'))); $latest_version = new semver(Utils::downloadUrl(config('phpvms.version_file')));
if (semver::gt($latest_version, $current_version)) { if (semver::gt($latest_version, $current_version)) {
Flash::warning('New version ' . $latest_version . ' is available!'); Flash::warning('New version '.$latest_version.' is available!');
} }
} catch (\Exception $e) { } catch (\Exception $e) {
Log::error($e->getMessage()); Log::error($e->getMessage());
@@ -76,7 +83,7 @@ class DashboardController extends BaseController
*/ */
public function news(Request $request) public function news(Request $request)
{ {
if($request->isMethod('post')) { if ($request->isMethod('post')) {
$attrs = $request->post(); $attrs = $request->post();
$attrs['user_id'] = Auth::user()->id; $attrs['user_id'] = Auth::user()->id;
@@ -2,8 +2,7 @@
namespace App\Http\Controllers\Admin; namespace App\Http\Controllers\Admin;
use App\Http\Requests\CreateAirlineRequest; use App\Interfaces\Controller;
use App\Http\Requests\UpdateAirlineRequest;
use App\Models\Enums\ExpenseType; use App\Models\Enums\ExpenseType;
use App\Models\Expense; use App\Models\Expense;
use App\Repositories\AirlineRepository; use App\Repositories\AirlineRepository;
@@ -13,7 +12,11 @@ use Illuminate\Http\Request;
use Prettus\Repository\Criteria\RequestCriteria; use Prettus\Repository\Criteria\RequestCriteria;
use Response; use Response;
class ExpenseController extends BaseController /**
* Class ExpenseController
* @package App\Http\Controllers\Admin
*/
class ExpenseController extends Controller
{ {
private $airlineRepo, private $airlineRepo,
$expenseRepo; $expenseRepo;
@@ -73,6 +76,7 @@ class ExpenseController extends BaseController
$this->expenseRepo->create($input); $this->expenseRepo->create($input);
Flash::success('Expense saved successfully.'); Flash::success('Expense saved successfully.');
return redirect(route('admin.expenses.index')); return redirect(route('admin.expenses.index'));
} }
@@ -87,6 +91,7 @@ class ExpenseController extends BaseController
if (empty($expenses)) { if (empty($expenses)) {
Flash::error('expenses not found'); Flash::error('expenses not found');
return redirect(route('admin.expenses.index')); return redirect(route('admin.expenses.index'));
} }
@@ -106,6 +111,7 @@ class ExpenseController extends BaseController
if (empty($expense)) { if (empty($expense)) {
Flash::error('Expense not found'); Flash::error('Expense not found');
return redirect(route('admin.expenses.index')); return redirect(route('admin.expenses.index'));
} }
@@ -129,12 +135,14 @@ class ExpenseController extends BaseController
if (empty($expenses)) { if (empty($expenses)) {
Flash::error('Expense not found'); Flash::error('Expense not found');
return redirect(route('admin.expenses.index')); return redirect(route('admin.expenses.index'));
} }
$this->expenseRepo->update($request->all(), $id); $this->expenseRepo->update($request->all(), $id);
Flash::success('Expense updated successfully.'); Flash::success('Expense updated successfully.');
return redirect(route('admin.expenses.index')); return redirect(route('admin.expenses.index'));
} }
@@ -149,12 +157,14 @@ class ExpenseController extends BaseController
if (empty($expenses)) { if (empty($expenses)) {
Flash::error('Expense not found'); Flash::error('Expense not found');
return redirect(route('admin.expenses.index')); return redirect(route('admin.expenses.index'));
} }
$this->expenseRepo->delete($id); $this->expenseRepo->delete($id);
Flash::success('Expense deleted successfully.'); Flash::success('Expense deleted successfully.');
return redirect(route('admin.expenses.index')); return redirect(route('admin.expenses.index'));
} }
} }
+10 -2
View File
@@ -4,15 +4,19 @@ namespace App\Http\Controllers\Admin;
use App\Http\Requests\CreateFareRequest; use App\Http\Requests\CreateFareRequest;
use App\Http\Requests\UpdateFareRequest; use App\Http\Requests\UpdateFareRequest;
use App\Interfaces\Controller;
use App\Repositories\FareRepository; use App\Repositories\FareRepository;
use Flash; use Flash;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Prettus\Repository\Criteria\RequestCriteria; use Prettus\Repository\Criteria\RequestCriteria;
use Response; use Response;
class FareController extends BaseController /**
* Class FareController
* @package App\Http\Controllers\Admin
*/
class FareController extends Controller
{ {
/** @var FareRepository */
private $fareRepository; private $fareRepository;
/** /**
@@ -75,6 +79,7 @@ class FareController extends BaseController
$fare = $this->fareRepository->findWithoutFail($id); $fare = $this->fareRepository->findWithoutFail($id);
if (empty($fare)) { if (empty($fare)) {
Flash::error('Fare not found'); Flash::error('Fare not found');
return redirect(route('admin.fares.index')); return redirect(route('admin.fares.index'));
} }
@@ -91,6 +96,7 @@ class FareController extends BaseController
$fare = $this->fareRepository->findWithoutFail($id); $fare = $this->fareRepository->findWithoutFail($id);
if (empty($fare)) { if (empty($fare)) {
Flash::error('Fare not found'); Flash::error('Fare not found');
return redirect(route('admin.fares.index')); return redirect(route('admin.fares.index'));
} }
@@ -109,6 +115,7 @@ class FareController extends BaseController
$fare = $this->fareRepository->findWithoutFail($id); $fare = $this->fareRepository->findWithoutFail($id);
if (empty($fare)) { if (empty($fare)) {
Flash::error('Fare not found'); Flash::error('Fare not found');
return redirect(route('admin.fares.index')); return redirect(route('admin.fares.index'));
} }
@@ -128,6 +135,7 @@ class FareController extends BaseController
$fare = $this->fareRepository->findWithoutFail($id); $fare = $this->fareRepository->findWithoutFail($id);
if (empty($fare)) { if (empty($fare)) {
Flash::error('Fare not found'); Flash::error('Fare not found');
return redirect(route('admin.fares.index')); return redirect(route('admin.fares.index'));
} }
@@ -2,12 +2,11 @@
namespace App\Http\Controllers\Admin; namespace App\Http\Controllers\Admin;
use App\Interfaces\Controller;
use App\Models\Enums\JournalType; use App\Models\Enums\JournalType;
use App\Models\Journal; use App\Models\Journal;
use App\Models\JournalTransaction; use App\Models\JournalTransaction;
use App\Repositories\AirlineRepository; use App\Repositories\AirlineRepository;
use App\Repositories\JournalRepository;
use App\Services\Finance\PirepFinanceService;
use App\Support\Dates; use App\Support\Dates;
use App\Support\Money; use App\Support\Money;
use Illuminate\Http\Request; use Illuminate\Http\Request;
@@ -16,25 +15,17 @@ use Illuminate\Http\Request;
* Class FinanceController * Class FinanceController
* @package App\Http\Controllers\Admin * @package App\Http\Controllers\Admin
*/ */
class FinanceController extends BaseController class FinanceController extends Controller
{ {
private $airlineRepo, private $airlineRepo;
$financeSvc,
$journalRepo;
/** /**
* @param AirlineRepository $airlineRepo * @param AirlineRepository $airlineRepo
* @param PirepFinanceService $financeSvc
* @param JournalRepository $journalRepo
*/ */
public function __construct( public function __construct(
AirlineRepository $airlineRepo, AirlineRepository $airlineRepo
PirepFinanceService $financeSvc,
JournalRepository $journalRepo
) { ) {
$this->airlineRepo = $airlineRepo; $this->airlineRepo = $airlineRepo;
$this->financeSvc = $financeSvc;
$this->journalRepo = $journalRepo;
} }
/** /**
@@ -58,8 +49,7 @@ class FinanceController extends BaseController
$airlines = $this->airlineRepo->orderBy('icao')->all(); $airlines = $this->airlineRepo->orderBy('icao')->all();
# group by the airline # group by the airline
foreach($airlines as $airline) { foreach ($airlines as $airline) {
# Return all the transactions, grouped by the transaction group # Return all the transactions, grouped by the transaction group
$transactions = JournalTransaction::groupBy('transaction_group') $transactions = JournalTransaction::groupBy('transaction_group')
->selectRaw('transaction_group, currency, ->selectRaw('transaction_group, currency,
@@ -102,6 +92,5 @@ class FinanceController extends BaseController
*/ */
public function show($id) public function show($id)
{ {
} }
} }
+30 -14
View File
@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Admin;
use App\Http\Requests\CreateFlightRequest; use App\Http\Requests\CreateFlightRequest;
use App\Http\Requests\UpdateFlightRequest; use App\Http\Requests\UpdateFlightRequest;
use App\Interfaces\Controller;
use App\Models\Enums\FlightType; use App\Models\Enums\FlightType;
use App\Models\Flight; use App\Models\Flight;
use App\Models\FlightFields; use App\Models\FlightFields;
@@ -19,7 +20,11 @@ use Flash;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Response; use Response;
class FlightController extends BaseController /**
* Class FlightController
* @package App\Http\Controllers\Admin
*/
class FlightController extends Controller
{ {
private $airlineRepo, private $airlineRepo,
$airportRepo, $airportRepo,
@@ -84,6 +89,7 @@ class FlightController extends BaseController
public function index(Request $request) public function index(Request $request)
{ {
$flights = $this->flightRepo->searchCriteria($request, false)->paginate(); $flights = $this->flightRepo->searchCriteria($request, false)->paginate();
return view('admin.flights.index', [ return view('admin.flights.index', [
'flights' => $flights, 'flights' => $flights,
'airlines' => $this->airlineRepo->selectBoxList(true), 'airlines' => $this->airlineRepo->selectBoxList(true),
@@ -120,17 +126,18 @@ class FlightController extends BaseController
'flight_number' => $input['flight_number'], 'flight_number' => $input['flight_number'],
]; ];
if(filled($input['route_code'])) { if (filled($input['route_code'])) {
$where['route_code'] = $input['route_code']; $where['route_code'] = $input['route_code'];
} }
if(filled($input['route_leg'])) { if (filled($input['route_leg'])) {
$where['route_leg'] = $input['route_leg']; $where['route_leg'] = $input['route_leg'];
} }
$flights = $this->flightRepo->findWhere($where); $flights = $this->flightRepo->findWhere($where);
if($flights->count() > 0) { if ($flights->count() > 0) {
Flash::error('Duplicate flight with same number/code/leg found, please change to proceed'); Flash::error('Duplicate flight with same number/code/leg found, please change to proceed');
return redirect()->back()->withInput($request->all()); return redirect()->back()->withInput($request->all());
} }
@@ -142,6 +149,7 @@ class FlightController extends BaseController
$flight = $this->flightRepo->create($input); $flight = $this->flightRepo->create($input);
Flash::success('Flight saved successfully.'); Flash::success('Flight saved successfully.');
return redirect(route('admin.flights.edit', $flight->id)); return redirect(route('admin.flights.edit', $flight->id));
} }
@@ -155,10 +163,12 @@ class FlightController extends BaseController
if (empty($flight)) { if (empty($flight)) {
Flash::error('Flight not found'); Flash::error('Flight not found');
return redirect(route('admin.flights.index')); return redirect(route('admin.flights.index'));
} }
$avail_subfleets = $this->getAvailSubfleets($flight); $avail_subfleets = $this->getAvailSubfleets($flight);
return view('admin.flights.show', [ return view('admin.flights.show', [
'flight' => $flight, 'flight' => $flight,
'avail_subfleets' => $avail_subfleets, 'avail_subfleets' => $avail_subfleets,
@@ -174,6 +184,7 @@ class FlightController extends BaseController
$flight = $this->flightRepo->findWithoutFail($id); $flight = $this->flightRepo->findWithoutFail($id);
if (empty($flight)) { if (empty($flight)) {
Flash::error('Flight not found'); Flash::error('Flight not found');
return redirect(route('admin.flights.index')); return redirect(route('admin.flights.index'));
} }
@@ -205,6 +216,7 @@ class FlightController extends BaseController
if (empty($flight)) { if (empty($flight)) {
Flash::error('Flight not found'); Flash::error('Flight not found');
return redirect(route('admin.flights.index')); return redirect(route('admin.flights.index'));
} }
@@ -227,6 +239,7 @@ class FlightController extends BaseController
$flights = $this->flightRepo->findWhere($where); $flights = $this->flightRepo->findWhere($where);
if ($flights->count() > 0) { if ($flights->count() > 0) {
Flash::error('Duplicate flight with same number/code/leg found, please change to proceed'); Flash::error('Duplicate flight with same number/code/leg found, please change to proceed');
return redirect()->back()->withInput($request->all()); return redirect()->back()->withInput($request->all());
} }
@@ -239,6 +252,7 @@ class FlightController extends BaseController
$this->flightRepo->update($input, $id); $this->flightRepo->update($input, $id);
Flash::success('Flight updated successfully.'); Flash::success('Flight updated successfully.');
return redirect(route('admin.flights.index')); return redirect(route('admin.flights.index'));
} }
@@ -253,12 +267,14 @@ class FlightController extends BaseController
if (empty($flight)) { if (empty($flight)) {
Flash::error('Flight not found'); Flash::error('Flight not found');
return redirect(route('admin.flights.index')); return redirect(route('admin.flights.index'));
} }
$this->flightSvc->deleteFlight($flight); $this->flightSvc->deleteFlight($flight);
Flash::success('Flight deleted successfully.'); Flash::success('Flight deleted successfully.');
return redirect(route('admin.flights.index')); return redirect(route('admin.flights.index'));
} }
@@ -269,6 +285,7 @@ class FlightController extends BaseController
protected function return_fields_view($flight) protected function return_fields_view($flight)
{ {
$flight->refresh(); $flight->refresh();
return view('admin.flights.flight_fields', [ return view('admin.flights.flight_fields', [
'flight' => $flight, 'flight' => $flight,
]); ]);
@@ -285,6 +302,7 @@ class FlightController extends BaseController
$flight = $this->flightRepo->findWithoutFail($id); $flight = $this->flightRepo->findWithoutFail($id);
if (empty($flight)) { if (empty($flight)) {
Flash::error('Flight not found'); Flash::error('Flight not found');
return redirect(route('admin.flights.index')); return redirect(route('admin.flights.index'));
} }
@@ -295,16 +313,12 @@ class FlightController extends BaseController
$field->name = $request->name; $field->name = $request->name;
$field->value = $request->value; $field->value = $request->value;
$field->save(); $field->save();
} } elseif ($request->isMethod('put')) {
elseif ($request->isMethod('put')) {
$field = FlightFields::where('id', $request->field_id)->first(); $field = FlightFields::where('id', $request->field_id)->first();
$field->value = $request->value; $field->value = $request->value;
$field->save(); $field->save();
// update the field value // update the field value
} } // remove custom field from flight
// remove custom field from flight
elseif ($request->isMethod('delete')) { elseif ($request->isMethod('delete')) {
FlightFields::destroy($request->field_id); FlightFields::destroy($request->field_id);
} }
@@ -319,6 +333,7 @@ class FlightController extends BaseController
protected function return_subfleet_view($flight) protected function return_subfleet_view($flight)
{ {
$avail_subfleets = $this->getAvailSubfleets($flight); $avail_subfleets = $this->getAvailSubfleets($flight);
return view('admin.flights.subfleets', [ return view('admin.flights.subfleets', [
'flight' => $flight, 'flight' => $flight,
'avail_subfleets' => $avail_subfleets, 'avail_subfleets' => $avail_subfleets,
@@ -335,15 +350,14 @@ class FlightController extends BaseController
$flight = $this->flightRepo->findWithoutFail($id); $flight = $this->flightRepo->findWithoutFail($id);
if (empty($flight)) { if (empty($flight)) {
Flash::error('Flight not found'); Flash::error('Flight not found');
return redirect(route('admin.flights.index')); return redirect(route('admin.flights.index'));
} }
// add aircraft to flight // add aircraft to flight
if ($request->isMethod('post')) { if ($request->isMethod('post')) {
$flight->subfleets()->syncWithoutDetaching([$request->subfleet_id]); $flight->subfleets()->syncWithoutDetaching([$request->subfleet_id]);
} } // remove aircraft from flight
// remove aircraft from flight
elseif ($request->isMethod('delete')) { elseif ($request->isMethod('delete')) {
$flight->subfleets()->detach($request->subfleet_id); $flight->subfleets()->detach($request->subfleet_id);
} }
@@ -360,7 +374,7 @@ class FlightController extends BaseController
$all_fares = $this->fareRepo->all(); $all_fares = $this->fareRepo->all();
$avail_fares = $all_fares->except($flight->fares->modelKeys()); $avail_fares = $all_fares->except($flight->fares->modelKeys());
foreach ($avail_fares as $fare) { foreach ($avail_fares as $fare) {
$retval[$fare->id] = $fare->name . $retval[$fare->id] = $fare->name.
' (base price: '.$fare->price.')'; ' (base price: '.$fare->price.')';
} }
@@ -374,6 +388,7 @@ class FlightController extends BaseController
protected function return_fares_view(Flight $flight) protected function return_fares_view(Flight $flight)
{ {
$flight->refresh(); $flight->refresh();
return view('admin.flights.fares', [ return view('admin.flights.fares', [
'flight' => $flight, 'flight' => $flight,
'avail_fares' => $this->getAvailFares($flight), 'avail_fares' => $this->getAvailFares($flight),
@@ -400,6 +415,7 @@ class FlightController extends BaseController
if ($request->isMethod('delete')) { if ($request->isMethod('delete')) {
$fare = $this->fareRepo->findWithoutFail($request->fare_id); $fare = $this->fareRepo->findWithoutFail($request->fare_id);
$this->fareSvc->delFareFromFlight($flight, $fare); $this->fareSvc->delFareFromFlight($flight, $fare);
return $this->return_fares_view($flight); return $this->return_fares_view($flight);
} }
+22 -11
View File
@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Admin;
use App\Facades\Utils; use App\Facades\Utils;
use App\Http\Requests\CreatePirepRequest; use App\Http\Requests\CreatePirepRequest;
use App\Http\Requests\UpdatePirepRequest; use App\Http\Requests\UpdatePirepRequest;
use App\Interfaces\Controller;
use App\Models\Enums\PirepSource; use App\Models\Enums\PirepSource;
use App\Models\Enums\PirepState; use App\Models\Enums\PirepState;
use App\Models\Pirep; use App\Models\Pirep;
@@ -27,8 +28,11 @@ use Log;
use Prettus\Repository\Criteria\RequestCriteria; use Prettus\Repository\Criteria\RequestCriteria;
use Response; use Response;
/**
class PirepController extends BaseController * Class PirepController
* @package App\Http\Controllers\Admin
*/
class PirepController extends Controller
{ {
private $airportRepo, private $airportRepo,
$airlineRepo, $airlineRepo,
@@ -83,11 +87,11 @@ class PirepController extends BaseController
* @param null $user * @param null $user
* @return array * @return array
*/ */
public function aircraftList($user=null) public function aircraftList($user = null)
{ {
$aircraft = []; $aircraft = [];
if($user === null) { if ($user === null) {
$subfleets = $this->subfleetRepo->all(); $subfleets = $this->subfleetRepo->all();
} else { } else {
$subfleets = $this->userSvc->getAllowableSubfleets($user); $subfleets = $this->userSvc->getAllowableSubfleets($user);
@@ -96,7 +100,7 @@ class PirepController extends BaseController
foreach ($subfleets as $subfleet) { foreach ($subfleets as $subfleet) {
$tmp = []; $tmp = [];
foreach ($subfleet->aircraft as $ac) { foreach ($subfleet->aircraft as $ac) {
$tmp[$ac->id] = $ac['name'] . ' - ' . $ac['registration']; $tmp[$ac->id] = $ac['name'].' - '.$ac['registration'];
} }
$aircraft[$subfleet->name] = $tmp; $aircraft[$subfleet->name] = $tmp;
@@ -140,8 +144,7 @@ class PirepController extends BaseController
{ {
$fares = []; $fares = [];
foreach ($pirep->aircraft->subfleet->fares as $fare) { foreach ($pirep->aircraft->subfleet->fares as $fare) {
$field_name = 'fare_'.$fare->id;
$field_name = 'fare_' . $fare->id;
if (!$request->filled($field_name)) { if (!$request->filled($field_name)) {
$count = 0; $count = 0;
} else { } else {
@@ -247,6 +250,7 @@ class PirepController extends BaseController
$this->saveFares($pirep, $request); $this->saveFares($pirep, $request);
Flash::success('Pirep saved successfully.'); Flash::success('Pirep saved successfully.');
return redirect(route('admin.pireps.index')); return redirect(route('admin.pireps.index'));
} }
@@ -261,6 +265,7 @@ class PirepController extends BaseController
if (empty($pirep)) { if (empty($pirep)) {
Flash::error('Pirep not found'); Flash::error('Pirep not found');
return redirect(route('admin.pireps.index')); return redirect(route('admin.pireps.index'));
} }
@@ -280,6 +285,7 @@ class PirepController extends BaseController
$pirep = $this->pirepRepo->findWithoutFail($id); $pirep = $this->pirepRepo->findWithoutFail($id);
if (empty($pirep)) { if (empty($pirep)) {
Flash::error('Pirep not found'); Flash::error('Pirep not found');
return redirect(route('admin.pireps.index')); return redirect(route('admin.pireps.index'));
} }
@@ -297,7 +303,7 @@ class PirepController extends BaseController
# set the fares # set the fares
foreach ($pirep->fares as $fare) { foreach ($pirep->fares as $fare) {
$field_name = 'fare_' . $fare->fare_id; $field_name = 'fare_'.$fare->fare_id;
$pirep->{$field_name} = $fare->count; $pirep->{$field_name} = $fare->count;
} }
@@ -327,6 +333,7 @@ class PirepController extends BaseController
if (empty($pirep)) { if (empty($pirep)) {
Flash::error('Pirep not found'); Flash::error('Pirep not found');
return redirect(route('admin.pireps.index')); return redirect(route('admin.pireps.index'));
} }
@@ -343,7 +350,7 @@ class PirepController extends BaseController
$pirep = $this->pirepRepo->update($attrs, $id); $pirep = $this->pirepRepo->update($attrs, $id);
// A route change in the PIREP, so update the saved points in the ACARS table // A route change in the PIREP, so update the saved points in the ACARS table
if($pirep->route !== $orig_route) { if ($pirep->route !== $orig_route) {
$this->pirepSvc->saveRoute($pirep); $this->pirepSvc->saveRoute($pirep);
} }
@@ -351,6 +358,7 @@ class PirepController extends BaseController
$this->saveFares($pirep, $request); $this->saveFares($pirep, $request);
Flash::success('Pirep updated successfully.'); Flash::success('Pirep updated successfully.');
return redirect(route('admin.pireps.index')); return redirect(route('admin.pireps.index'));
} }
@@ -365,12 +373,14 @@ class PirepController extends BaseController
if (empty($pirep)) { if (empty($pirep)) {
Flash::error('Pirep not found'); Flash::error('Pirep not found');
return redirect(route('admin.pireps.index')); return redirect(route('admin.pireps.index'));
} }
$this->pirepRepo->delete($id); $this->pirepRepo->delete($id);
Flash::success('Pirep deleted successfully.'); Flash::success('Pirep deleted successfully.');
return redirect(route('admin.pireps.index')); return redirect(route('admin.pireps.index'));
} }
@@ -384,12 +394,13 @@ class PirepController extends BaseController
Log::info('PIREP state update call', [$request->toArray()]); Log::info('PIREP state update call', [$request->toArray()]);
$pirep = $this->pirepRepo->findWithoutFail($request->id); $pirep = $this->pirepRepo->findWithoutFail($request->id);
if($request->isMethod('post')) { if ($request->isMethod('post')) {
$new_status = (int) $request->post('new_status'); $new_status = (int) $request->post('new_status');
$pirep = $this->pirepSvc->changeState($pirep, $new_status); $pirep = $this->pirepSvc->changeState($pirep, $new_status);
} }
$pirep->refresh(); $pirep->refresh();
return view('admin.pireps.actions', ['pirep' => $pirep, 'on_edit_page' => false]); return view('admin.pireps.actions', ['pirep' => $pirep, 'on_edit_page' => false]);
} }
@@ -415,7 +426,7 @@ class PirepController extends BaseController
$pirep->refresh(); $pirep->refresh();
} }
if($request->isMethod('delete')) { if ($request->isMethod('delete')) {
$comment = PirepComment::find($request->get('comment_id')); $comment = PirepComment::find($request->get('comment_id'));
$comment->delete(); $comment->delete();
$pirep->refresh(); $pirep->refresh();
@@ -4,15 +4,19 @@ namespace App\Http\Controllers\Admin;
use App\Http\Requests\CreatePirepFieldRequest; use App\Http\Requests\CreatePirepFieldRequest;
use App\Http\Requests\UpdatePirepFieldRequest; use App\Http\Requests\UpdatePirepFieldRequest;
use App\Interfaces\Controller;
use App\Repositories\PirepFieldRepository; use App\Repositories\PirepFieldRepository;
use Flash; use Flash;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Prettus\Repository\Criteria\RequestCriteria; use Prettus\Repository\Criteria\RequestCriteria;
use Response; use Response;
class PirepFieldController extends BaseController /**
* Class PirepFieldController
* @package App\Http\Controllers\Admin
*/
class PirepFieldController extends Controller
{ {
/** @var PirepFieldRepository */
private $pirepFieldRepo; private $pirepFieldRepo;
/** /**
@@ -21,7 +25,7 @@ class PirepFieldController extends BaseController
*/ */
public function __construct( public function __construct(
PirepFieldRepository $pirepFieldRepo PirepFieldRepository $pirepFieldRepo
){ ) {
$this->pirepFieldRepo = $pirepFieldRepo; $this->pirepFieldRepo = $pirepFieldRepo;
} }
@@ -65,6 +69,7 @@ class PirepFieldController extends BaseController
$this->pirepFieldRepo->create($attrs); $this->pirepFieldRepo->create($attrs);
Flash::success('Field added successfully.'); Flash::success('Field added successfully.');
return redirect(route('admin.pirepfields.index')); return redirect(route('admin.pirepfields.index'));
} }
@@ -79,6 +84,7 @@ class PirepFieldController extends BaseController
if (empty($field)) { if (empty($field)) {
Flash::error('PirepField not found'); Flash::error('PirepField not found');
return redirect(route('admin.pirepfields.index')); return redirect(route('admin.pirepfields.index'));
} }
@@ -98,6 +104,7 @@ class PirepFieldController extends BaseController
if (empty($field)) { if (empty($field)) {
Flash::error('Field not found'); Flash::error('Field not found');
return redirect(route('admin.pirepfields.index')); return redirect(route('admin.pirepfields.index'));
} }
@@ -116,6 +123,7 @@ class PirepFieldController extends BaseController
if (empty($field)) { if (empty($field)) {
Flash::error('PirepField not found'); Flash::error('PirepField not found');
return redirect(route('admin.pirepfields.index')); return redirect(route('admin.pirepfields.index'));
} }
@@ -125,6 +133,7 @@ class PirepFieldController extends BaseController
$this->pirepFieldRepo->update($attrs, $id); $this->pirepFieldRepo->update($attrs, $id);
Flash::success('Field updated successfully.'); Flash::success('Field updated successfully.');
return redirect(route('admin.pirepfields.index')); return redirect(route('admin.pirepfields.index'));
} }
@@ -139,12 +148,14 @@ class PirepFieldController extends BaseController
if (empty($field)) { if (empty($field)) {
Flash::error('Field not found'); Flash::error('Field not found');
return redirect(route('admin.pirepfields.index')); return redirect(route('admin.pirepfields.index'));
} }
$this->pirepFieldRepo->delete($id); $this->pirepFieldRepo->delete($id);
Flash::success('Field deleted successfully.'); Flash::success('Field deleted successfully.');
return redirect(route('admin.pirepfields.index')); return redirect(route('admin.pirepfields.index'));
} }
} }
+17 -8
View File
@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Admin;
use App\Http\Requests\CreateRankRequest; use App\Http\Requests\CreateRankRequest;
use App\Http\Requests\UpdateRankRequest; use App\Http\Requests\UpdateRankRequest;
use App\Interfaces\Controller;
use App\Repositories\RankRepository; use App\Repositories\RankRepository;
use App\Repositories\SubfleetRepository; use App\Repositories\SubfleetRepository;
use App\Services\FleetService; use App\Services\FleetService;
@@ -13,9 +14,12 @@ use Illuminate\Http\Request;
use Prettus\Repository\Criteria\RequestCriteria; use Prettus\Repository\Criteria\RequestCriteria;
use Response; use Response;
class RankController extends BaseController /**
* Class RankController
* @package App\Http\Controllers\Admin
*/
class RankController extends Controller
{ {
/** @var RankRepository */
private $fleetSvc, private $fleetSvc,
$rankRepository, $rankRepository,
$subfleetRepo; $subfleetRepo;
@@ -109,6 +113,7 @@ class RankController extends BaseController
if (empty($rank)) { if (empty($rank)) {
Flash::error('Ranking not found'); Flash::error('Ranking not found');
return redirect(route('admin.ranks.index')); return redirect(route('admin.ranks.index'));
} }
@@ -128,10 +133,12 @@ class RankController extends BaseController
if (empty($rank)) { if (empty($rank)) {
Flash::error('Ranking not found'); Flash::error('Ranking not found');
return redirect(route('admin.ranks.index')); return redirect(route('admin.ranks.index'));
} }
$avail_subfleets = $this->getAvailSubfleets($rank); $avail_subfleets = $this->getAvailSubfleets($rank);
return view('admin.ranks.edit', [ return view('admin.ranks.edit', [
'rank' => $rank, 'rank' => $rank,
'avail_subfleets' => $avail_subfleets, 'avail_subfleets' => $avail_subfleets,
@@ -151,6 +158,7 @@ class RankController extends BaseController
if (empty($rank)) { if (empty($rank)) {
Flash::error('Ranking not found'); Flash::error('Ranking not found');
return redirect(route('admin.ranks.index')); return redirect(route('admin.ranks.index'));
} }
@@ -158,6 +166,7 @@ class RankController extends BaseController
Cache::forget(config('cache.keys.RANKS_PILOT_LIST.key')); Cache::forget(config('cache.keys.RANKS_PILOT_LIST.key'));
Flash::success('Ranking updated successfully.'); Flash::success('Ranking updated successfully.');
return redirect(route('admin.ranks.index')); return redirect(route('admin.ranks.index'));
} }
@@ -172,12 +181,14 @@ class RankController extends BaseController
if (empty($rank)) { if (empty($rank)) {
Flash::error('Ranking not found'); Flash::error('Ranking not found');
return redirect(route('admin.ranks.index')); return redirect(route('admin.ranks.index'));
} }
$this->rankRepository->delete($id); $this->rankRepository->delete($id);
Flash::success('Ranking deleted successfully.'); Flash::success('Ranking deleted successfully.');
return redirect(route('admin.ranks.index')); return redirect(route('admin.ranks.index'));
} }
@@ -188,6 +199,7 @@ class RankController extends BaseController
protected function return_subfleet_view($rank) protected function return_subfleet_view($rank)
{ {
$avail_subfleets = $this->getAvailSubfleets($rank); $avail_subfleets = $this->getAvailSubfleets($rank);
return view('admin.ranks.subfleets', [ return view('admin.ranks.subfleets', [
'rank' => $rank, 'rank' => $rank,
'avail_subfleets' => $avail_subfleets, 'avail_subfleets' => $avail_subfleets,
@@ -205,6 +217,7 @@ class RankController extends BaseController
$rank = $this->rankRepository->findWithoutFail($id); $rank = $this->rankRepository->findWithoutFail($id);
if (empty($rank)) { if (empty($rank)) {
Flash::error('Rank not found!'); Flash::error('Rank not found!');
return redirect(route('admin.ranks.index')); return redirect(route('admin.ranks.index'));
} }
@@ -212,17 +225,13 @@ class RankController extends BaseController
if ($request->isMethod('post')) { if ($request->isMethod('post')) {
$subfleet = $this->subfleetRepo->find($request->input('subfleet_id')); $subfleet = $this->subfleetRepo->find($request->input('subfleet_id'));
$this->fleetSvc->addSubfleetToRank($subfleet, $rank); $this->fleetSvc->addSubfleetToRank($subfleet, $rank);
} } elseif ($request->isMethod('put')) {
elseif($request->isMethod('put')) {
$override = []; $override = [];
$override[$request->name] = $request->value; $override[$request->name] = $request->value;
$subfleet = $this->subfleetRepo->find($request->input('subfleet_id')); $subfleet = $this->subfleetRepo->find($request->input('subfleet_id'));
$this->fleetSvc->addSubfleetToRank($subfleet, $rank); $this->fleetSvc->addSubfleetToRank($subfleet, $rank);
} } // remove aircraft from flight
// remove aircraft from flight
elseif ($request->isMethod('delete')) { elseif ($request->isMethod('delete')) {
$subfleet = $this->subfleetRepo->find($request->input('subfleet_id')); $subfleet = $this->subfleetRepo->find($request->input('subfleet_id'));
$this->fleetSvc->removeSubfleetFromRank($subfleet, $rank); $this->fleetSvc->removeSubfleetFromRank($subfleet, $rank);
@@ -2,11 +2,16 @@
namespace App\Http\Controllers\Admin; namespace App\Http\Controllers\Admin;
use App\Interfaces\Controller;
use App\Models\Setting; use App\Models\Setting;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Log; use Log;
class SettingsController extends BaseController /**
* Class SettingsController
* @package App\Http\Controllers\Admin
*/
class SettingsController extends Controller
{ {
/** /**
* Display the settings. Group them by the setting group * Display the settings. Group them by the setting group
@@ -16,7 +21,7 @@ class SettingsController extends BaseController
$settings = Setting::orderBy('order', 'asc')->get(); $settings = Setting::orderBy('order', 'asc')->get();
$settings = $settings->groupBy('group'); $settings = $settings->groupBy('group');
return view('admin.settings.index',[ return view('admin.settings.index', [
'grouped_settings' => $settings, 'grouped_settings' => $settings,
]); ]);
} }
@@ -28,9 +33,9 @@ class SettingsController extends BaseController
*/ */
public function update(Request $request) public function update(Request $request)
{ {
foreach($request->post() as $id => $value) { foreach ($request->post() as $id => $value) {
$setting = Setting::find($id); $setting = Setting::find($id);
if(!$setting) { if (!$setting) {
continue; continue;
} }
@@ -40,6 +45,7 @@ class SettingsController extends BaseController
} }
flash('Settings saved!'); flash('Settings saved!');
return redirect('/admin/settings'); return redirect('/admin/settings');
} }
} }
@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Admin;
use App\Http\Requests\CreateSubfleetRequest; use App\Http\Requests\CreateSubfleetRequest;
use App\Http\Requests\UpdateSubfleetRequest; use App\Http\Requests\UpdateSubfleetRequest;
use App\Interfaces\Controller;
use App\Models\Airline; use App\Models\Airline;
use App\Models\Enums\FuelType; use App\Models\Enums\FuelType;
use App\Models\Expense; use App\Models\Expense;
@@ -19,9 +20,12 @@ use Illuminate\Http\Request;
use Prettus\Repository\Criteria\RequestCriteria; use Prettus\Repository\Criteria\RequestCriteria;
use Response; use Response;
class SubfleetController extends BaseController /**
* Class SubfleetController
* @package App\Http\Controllers\Admin
*/
class SubfleetController extends Controller
{ {
/** @var SubfleetRepository */
private $aircraftRepo, private $aircraftRepo,
$fareRepo, $fareRepo,
$fareSvc, $fareSvc,
@@ -129,6 +133,7 @@ class SubfleetController extends BaseController
$subfleet = $this->subfleetRepo->create($input); $subfleet = $this->subfleetRepo->create($input);
Flash::success('Subfleet saved successfully.'); Flash::success('Subfleet saved successfully.');
return redirect(route('admin.subfleets.edit', ['id' => $subfleet->id])); return redirect(route('admin.subfleets.edit', ['id' => $subfleet->id]));
} }
@@ -143,10 +148,12 @@ class SubfleetController extends BaseController
if (empty($subfleet)) { if (empty($subfleet)) {
Flash::error('Subfleet not found'); Flash::error('Subfleet not found');
return redirect(route('admin.subfleets.index')); return redirect(route('admin.subfleets.index'));
} }
$avail_fares = $this->getAvailFares($subfleet); $avail_fares = $this->getAvailFares($subfleet);
return view('admin.subfleets.show', [ return view('admin.subfleets.show', [
'subfleet' => $subfleet, 'subfleet' => $subfleet,
'avail_fares' => $avail_fares, 'avail_fares' => $avail_fares,
@@ -164,6 +171,7 @@ class SubfleetController extends BaseController
if (empty($subfleet)) { if (empty($subfleet)) {
Flash::error('Subfleet not found'); Flash::error('Subfleet not found');
return redirect(route('admin.subfleets.index')); return redirect(route('admin.subfleets.index'));
} }
@@ -192,12 +200,14 @@ class SubfleetController extends BaseController
if (empty($subfleet)) { if (empty($subfleet)) {
Flash::error('Subfleet not found'); Flash::error('Subfleet not found');
return redirect(route('admin.subfleets.index')); return redirect(route('admin.subfleets.index'));
} }
$this->subfleetRepo->update($request->all(), $id); $this->subfleetRepo->update($request->all(), $id);
Flash::success('Subfleet updated successfully.'); Flash::success('Subfleet updated successfully.');
return redirect(route('admin.subfleets.index')); return redirect(route('admin.subfleets.index'));
} }
@@ -212,20 +222,23 @@ class SubfleetController extends BaseController
if (empty($subfleet)) { if (empty($subfleet)) {
Flash::error('Subfleet not found'); Flash::error('Subfleet not found');
return redirect(route('admin.subfleets.index')); return redirect(route('admin.subfleets.index'));
} }
# Make sure no aircraft are assigned to this subfleet # Make sure no aircraft are assigned to this subfleet
# before trying to delete it, or else things might go boom # before trying to delete it, or else things might go boom
$aircraft = $this->aircraftRepo->findWhere(['subfleet_id' => $id], ['id']); $aircraft = $this->aircraftRepo->findWhere(['subfleet_id' => $id], ['id']);
if($aircraft->count() > 0) { if ($aircraft->count() > 0) {
Flash::error('There are aircraft still assigned to this subfleet, you can\'t delete it!')->important(); Flash::error('There are aircraft still assigned to this subfleet, you can\'t delete it!')->important();
return redirect(route('admin.subfleets.index')); return redirect(route('admin.subfleets.index'));
} }
$this->subfleetRepo->delete($id); $this->subfleetRepo->delete($id);
Flash::success('Subfleet deleted successfully.'); Flash::success('Subfleet deleted successfully.');
return redirect(route('admin.subfleets.index')); return redirect(route('admin.subfleets.index'));
} }
@@ -284,23 +297,20 @@ class SubfleetController extends BaseController
if ($request->isMethod('post')) { if ($request->isMethod('post')) {
$rank = $this->rankRepo->find($request->input('rank_id')); $rank = $this->rankRepo->find($request->input('rank_id'));
$this->fleetSvc->addSubfleetToRank($subfleet, $rank); $this->fleetSvc->addSubfleetToRank($subfleet, $rank);
} } elseif ($request->isMethod('put')) {
elseif ($request->isMethod('put')) {
$override = []; $override = [];
$rank = $this->rankRepo->find($request->input('rank_id')); $rank = $this->rankRepo->find($request->input('rank_id'));
$override[$request->name] = $request->value; $override[$request->name] = $request->value;
$this->fleetSvc->addSubfleetToRank($subfleet, $rank, $override); $this->fleetSvc->addSubfleetToRank($subfleet, $rank, $override);
} } // dissassociate fare from teh aircraft
// dissassociate fare from teh aircraft
elseif ($request->isMethod('delete')) { elseif ($request->isMethod('delete')) {
$rank = $this->rankRepo->find($request->input('rank_id')); $rank = $this->rankRepo->find($request->input('rank_id'));
$this->fleetSvc->removeSubfleetFromRank($subfleet, $rank); $this->fleetSvc->removeSubfleetFromRank($subfleet, $rank);
} }
$subfleet->save(); $subfleet->save();
return $this->return_ranks_view($subfleet); return $this->return_ranks_view($subfleet);
} }
@@ -311,6 +321,7 @@ class SubfleetController extends BaseController
protected function return_expenses_view(?Subfleet $subfleet) protected function return_expenses_view(?Subfleet $subfleet)
{ {
$subfleet->refresh(); $subfleet->refresh();
return view('admin.subfleets.expenses', [ return view('admin.subfleets.expenses', [
'subfleet' => $subfleet, 'subfleet' => $subfleet,
]); ]);
@@ -379,17 +390,13 @@ class SubfleetController extends BaseController
if ($request->isMethod('post')) { if ($request->isMethod('post')) {
$fare = $this->fareRepo->find($request->fare_id); $fare = $this->fareRepo->find($request->fare_id);
$this->fareSvc->setForSubfleet($subfleet, $fare); $this->fareSvc->setForSubfleet($subfleet, $fare);
} } // update the pivot table with overrides for the fares
// update the pivot table with overrides for the fares
elseif ($request->isMethod('put')) { elseif ($request->isMethod('put')) {
$override = []; $override = [];
$fare = $this->fareRepo->find($request->fare_id); $fare = $this->fareRepo->find($request->fare_id);
$override[$request->name] = $request->value; $override[$request->name] = $request->value;
$this->fareSvc->setForSubfleet($subfleet, $fare, $override); $this->fareSvc->setForSubfleet($subfleet, $fare, $override);
} } // dissassociate fare from teh aircraft
// dissassociate fare from teh aircraft
elseif ($request->isMethod('delete')) { elseif ($request->isMethod('delete')) {
$fare = $this->fareRepo->find($request->fare_id); $fare = $this->fareRepo->find($request->fare_id);
$this->fareSvc->delFareFromSubfleet($subfleet, $fare); $this->fareSvc->delFareFromSubfleet($subfleet, $fare);
+18 -6
View File
@@ -5,7 +5,7 @@ namespace App\Http\Controllers\Admin;
use App\Facades\Utils; use App\Facades\Utils;
use App\Http\Requests\CreateUserRequest; use App\Http\Requests\CreateUserRequest;
use App\Http\Requests\UpdateUserRequest; use App\Http\Requests\UpdateUserRequest;
use App\Models\Airline; use App\Interfaces\Controller;
use App\Models\Rank; use App\Models\Rank;
use App\Models\Role; use App\Models\Role;
use App\Models\User; use App\Models\User;
@@ -23,7 +23,11 @@ use Log;
use Prettus\Repository\Exceptions\RepositoryException; use Prettus\Repository\Exceptions\RepositoryException;
use Response; use Response;
class UserController extends BaseController /**
* Class UserController
* @package App\Http\Controllers\Admin
*/
class UserController extends Controller
{ {
private $airlineRepo, private $airlineRepo,
$airportRepo, $airportRepo,
@@ -105,6 +109,7 @@ class UserController extends BaseController
$user = $this->userRepo->create($input); $user = $this->userRepo->create($input);
Flash::success('User saved successfully.'); Flash::success('User saved successfully.');
return redirect(route('admin.users.index')); return redirect(route('admin.users.index'));
} }
@@ -119,6 +124,7 @@ class UserController extends BaseController
if (empty($user)) { if (empty($user)) {
Flash::error('User not found'); Flash::error('User not found');
return redirect(route('admin.users.index')); return redirect(route('admin.users.index'));
} }
@@ -152,6 +158,7 @@ class UserController extends BaseController
if (empty($user)) { if (empty($user)) {
Flash::error('User not found'); Flash::error('User not found');
return redirect(route('admin.users.index')); return redirect(route('admin.users.index'));
} }
@@ -192,11 +199,12 @@ class UserController extends BaseController
if (empty($user)) { if (empty($user)) {
Flash::error('User not found'); Flash::error('User not found');
return redirect(route('admin.users.index')); return redirect(route('admin.users.index'));
} }
$req_data = $request->all(); $req_data = $request->all();
if(!$request->filled('password')) { if (!$request->filled('password')) {
unset($req_data['password']); unset($req_data['password']);
} else { } else {
$req_data['password'] = Hash::make($req_data['password']); $req_data['password'] = Hash::make($req_data['password']);
@@ -206,17 +214,18 @@ class UserController extends BaseController
$user = $this->userRepo->update($req_data, $id); $user = $this->userRepo->update($req_data, $id);
if($original_user_state !== $user->state) { if ($original_user_state !== $user->state) {
$this->userSvc->changeUserState($user, $original_user_state); $this->userSvc->changeUserState($user, $original_user_state);
} }
# Delete all of the roles and then re-attach the valid ones # Delete all of the roles and then re-attach the valid ones
DB::table('role_user')->where('user_id',$id)->delete(); DB::table('role_user')->where('user_id', $id)->delete();
foreach ($request->input('roles') as $key => $value) { foreach ($request->input('roles') as $key => $value) {
$user->attachRole($value); $user->attachRole($value);
} }
Flash::success('User updated successfully.'); Flash::success('User updated successfully.');
return redirect(route('admin.users.index')); return redirect(route('admin.users.index'));
} }
@@ -231,12 +240,14 @@ class UserController extends BaseController
if (empty($user)) { if (empty($user)) {
Flash::error('User not found'); Flash::error('User not found');
return redirect(route('admin.users.index')); return redirect(route('admin.users.index'));
} }
$this->userRepo->delete($id); $this->userRepo->delete($id);
Flash::success('User deleted successfully.'); Flash::success('User deleted successfully.');
return redirect(route('admin.users.index')); return redirect(route('admin.users.index'));
} }
@@ -249,12 +260,13 @@ class UserController extends BaseController
public function regen_apikey($id, Request $request) public function regen_apikey($id, Request $request)
{ {
$user = User::find($id); $user = User::find($id);
Log::info('Regenerating API key "' . $user->pilot_id . '"'); Log::info('Regenerating API key "'.$user->pilot_id.'"');
$user->api_key = Utils::generateApiKey(); $user->api_key = Utils::generateApiKey();
$user->save(); $user->save();
flash('New API key generated!')->success(); flash('New API key generated!')->success();
return redirect(route('admin.users.edit', ['id' => $id])); return redirect(route('admin.users.edit', ['id' => $id]));
} }
} }
+9 -8
View File
@@ -2,30 +2,31 @@
namespace App\Http\Controllers\Api; namespace App\Http\Controllers\Api;
use App\Interfaces\Controller;
use App\Repositories\AcarsRepository; use App\Repositories\AcarsRepository;
use App\Repositories\PirepRepository;
use App\Services\GeoService; use App\Services\GeoService;
use Illuminate\Http\Request; use Illuminate\Http\Request;
/**
class AcarsController extends RestController * Class AcarsController
* @package App\Http\Controllers\Api
*/
class AcarsController extends Controller
{ {
protected $acarsRepo, $geoSvc, $pirepRepo; private $acarsRepo,
$geoSvc;
/** /**
* AcarsController constructor. * AcarsController constructor.
* @param GeoService $geoSvc * @param GeoService $geoSvc
* @param AcarsRepository $acarsRepo * @param AcarsRepository $acarsRepo
* @param PirepRepository $pirepRepo
*/ */
public function __construct( public function __construct(
GeoService $geoSvc, GeoService $geoSvc,
AcarsRepository $acarsRepo, AcarsRepository $acarsRepo
PirepRepository $pirepRepo
) { ) {
$this->geoSvc = $geoSvc; $this->geoSvc = $geoSvc;
$this->acarsRepo = $acarsRepo; $this->acarsRepo = $acarsRepo;
$this->pirepRepo = $pirepRepo;
} }
/** /**
@@ -3,12 +3,17 @@
namespace App\Http\Controllers\Api; namespace App\Http\Controllers\Api;
use App\Http\Resources\Airline as AirlineResource; use App\Http\Resources\Airline as AirlineResource;
use App\Interfaces\Controller;
use App\Repositories\AirlineRepository; use App\Repositories\AirlineRepository;
use Illuminate\Http\Request; use Illuminate\Http\Request;
class AirlineController extends RestController /**
* Class AirlineController
* @package App\Http\Controllers\Api
*/
class AirlineController extends Controller
{ {
protected $airlineRepo; private $airlineRepo;
/** /**
* AirlineController constructor. * AirlineController constructor.
@@ -43,6 +48,7 @@ class AirlineController extends RestController
public function get($id) public function get($id)
{ {
$id = strtoupper($id); $id = strtoupper($id);
return new AirlineResource($this->airlineRepo->find($id)); return new AirlineResource($this->airlineRepo->find($id));
} }
} }
+10 -3
View File
@@ -3,15 +3,20 @@
namespace App\Http\Controllers\Api; namespace App\Http\Controllers\Api;
use App\Http\Resources\Airport as AirportResource; use App\Http\Resources\Airport as AirportResource;
use App\Interfaces\Controller;
use App\Repositories\AirportRepository; use App\Repositories\AirportRepository;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
use Log; use Log;
use VaCentral\Airport as AirportLookup; use VaCentral\Airport as AirportLookup;
class AirportController extends RestController /**
* Class AirportController
* @package App\Http\Controllers\Api
*/
class AirportController extends Controller
{ {
protected $airportRepo; private $airportRepo;
/** /**
* AirportController constructor. * AirportController constructor.
@@ -66,6 +71,7 @@ class AirportController extends RestController
public function get($id) public function get($id)
{ {
$id = strtoupper($id); $id = strtoupper($id);
return new AirportResource($this->airportRepo->find($id)); return new AirportResource($this->airportRepo->find($id));
} }
@@ -77,13 +83,14 @@ class AirportController extends RestController
public function lookup($id) public function lookup($id)
{ {
$airport = Cache::remember( $airport = Cache::remember(
config('cache.keys.AIRPORT_VACENTRAL_LOOKUP.key') . $id, config('cache.keys.AIRPORT_VACENTRAL_LOOKUP.key').$id,
config('cache.keys.RANKS_PILOT_LIST.time'), config('cache.keys.RANKS_PILOT_LIST.time'),
function () use ($id) { function () use ($id) {
try { try {
return AirportLookup::get($id); return AirportLookup::get($id);
} catch (\VaCentral\HttpException $e) { } catch (\VaCentral\HttpException $e) {
Log::error($e); Log::error($e);
return []; return [];
} }
} }
+9 -3
View File
@@ -4,13 +4,19 @@ namespace App\Http\Controllers\Api;
use App\Http\Resources\Aircraft as AircraftResource; use App\Http\Resources\Aircraft as AircraftResource;
use App\Http\Resources\Subfleet as SubfleetResource; use App\Http\Resources\Subfleet as SubfleetResource;
use App\Interfaces\Controller;
use App\Repositories\AircraftRepository; use App\Repositories\AircraftRepository;
use App\Repositories\SubfleetRepository; use App\Repositories\SubfleetRepository;
use Illuminate\Http\Request; use Illuminate\Http\Request;
class FleetController extends RestController /**
* Class FleetController
* @package App\Http\Controllers\Api
*/
class FleetController extends Controller
{ {
protected $aircraftRepo, $subfleetRepo; private $aircraftRepo,
$subfleetRepo;
/** /**
* FleetController constructor. * FleetController constructor.
@@ -48,7 +54,7 @@ class FleetController extends RestController
public function get_aircraft($id, Request $request) public function get_aircraft($id, Request $request)
{ {
$where = []; $where = [];
if($request->filled('type')) { if ($request->filled('type')) {
$where[$request->get('type')] = $id; $where[$request->get('type')] = $id;
} else { } else {
$where['id'] = $id; $where['id'] = $id;
@@ -4,10 +4,10 @@ namespace App\Http\Controllers\Api;
use App\Http\Resources\Flight as FlightResource; use App\Http\Resources\Flight as FlightResource;
use App\Http\Resources\Navdata as NavdataResource; use App\Http\Resources\Navdata as NavdataResource;
use App\Interfaces\Controller;
use App\Repositories\Criteria\WhereCriteria; use App\Repositories\Criteria\WhereCriteria;
use App\Repositories\FlightRepository; use App\Repositories\FlightRepository;
use App\Services\FlightService; use App\Services\FlightService;
use App\Services\UserService;
use Auth; use Auth;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Prettus\Repository\Criteria\RequestCriteria; use Prettus\Repository\Criteria\RequestCriteria;
@@ -17,24 +17,22 @@ use Prettus\Repository\Exceptions\RepositoryException;
* Class FlightController * Class FlightController
* @package App\Http\Controllers\Api * @package App\Http\Controllers\Api
*/ */
class FlightController extends RestController class FlightController extends Controller
{ {
protected $flightRepo, $flightSvc, $userSvc; private $flightRepo,
$flightSvc;
/** /**
* FlightController constructor. * FlightController constructor.
* @param FlightRepository $flightRepo * @param FlightRepository $flightRepo
* @param FlightService $flightSvc * @param FlightService $flightSvc
* @param UserService $userSvc
*/ */
public function __construct( public function __construct(
FlightRepository $flightRepo, FlightRepository $flightRepo,
FlightService $flightSvc, FlightService $flightSvc
UserService $userSvc
) { ) {
$this->flightRepo = $flightRepo; $this->flightRepo = $flightRepo;
$this->flightSvc = $flightSvc; $this->flightSvc = $flightSvc;
$this->userSvc = $userSvc;
} }
/** /**
@@ -55,7 +53,7 @@ class FlightController extends RestController
->whereOrder($where, 'flight_number', 'asc') ->whereOrder($where, 'flight_number', 'asc')
->paginate(); ->paginate();
foreach($flights as $flight) { foreach ($flights as $flight) {
$this->flightSvc->filterSubfleets($user, $flight); $this->flightSvc->filterSubfleets($user, $flight);
} }
+26 -20
View File
@@ -16,6 +16,7 @@ use App\Http\Resources\AcarsRoute as AcarsRouteResource;
use App\Http\Resources\JournalTransaction as JournalTransactionResource; use App\Http\Resources\JournalTransaction as JournalTransactionResource;
use App\Http\Resources\Pirep as PirepResource; use App\Http\Resources\Pirep as PirepResource;
use App\Http\Resources\PirepComment as PirepCommentResource; use App\Http\Resources\PirepComment as PirepCommentResource;
use App\Interfaces\Controller;
use App\Models\Acars; use App\Models\Acars;
use App\Models\Enums\AcarsType; use App\Models\Enums\AcarsType;
use App\Models\Enums\PirepSource; use App\Models\Enums\PirepSource;
@@ -35,7 +36,11 @@ use Auth;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Log; use Log;
class PirepController extends RestController /**
* Class PirepController
* @package App\Http\Controllers\Api
*/
class PirepController extends Controller
{ {
private $acarsRepo, private $acarsRepo,
$fareSvc, $fareSvc,
@@ -49,6 +54,7 @@ class PirepController extends RestController
/** /**
* PirepController constructor. * PirepController constructor.
* @param AcarsRepository $acarsRepo * @param AcarsRepository $acarsRepo
* @param FareService $fareSvc
* @param PirepFinanceService $financeSvc * @param PirepFinanceService $financeSvc
* @param GeoService $geoSvc * @param GeoService $geoSvc
* @param JournalRepository $journalRepo * @param JournalRepository $journalRepo
@@ -127,12 +133,12 @@ class PirepController extends RestController
*/ */
protected function updateFares($pirep, Request $request) protected function updateFares($pirep, Request $request)
{ {
if(!$request->filled('fares')) { if (!$request->filled('fares')) {
return; return;
} }
$fares = []; $fares = [];
foreach($request->post('fares') as $fare) { foreach ($request->post('fares') as $fare) {
$fares[] = [ $fares[] = [
'fare_id' => $fare['id'], 'fare_id' => $fare['id'],
'count' => $fare['count'], 'count' => $fare['count'],
@@ -168,7 +174,7 @@ class PirepController extends RestController
$pirep = new Pirep($attrs); $pirep = new Pirep($attrs);
# See if this user is allowed to fly this aircraft # See if this user is allowed to fly this aircraft
if(setting('pireps.restrict_aircraft_to_rank', false)) { if (setting('pireps.restrict_aircraft_to_rank', false)) {
$can_use_ac = $this->userSvc->aircraftAllowed($user, $pirep->aircraft_id); $can_use_ac = $this->userSvc->aircraftAllowed($user, $pirep->aircraft_id);
if (!$can_use_ac) { if (!$can_use_ac) {
throw new AircraftPermissionDenied(); throw new AircraftPermissionDenied();
@@ -177,7 +183,7 @@ class PirepController extends RestController
# Find if there's a duplicate, if so, let's work on that # Find if there's a duplicate, if so, let's work on that
$dupe_pirep = $this->pirepSvc->findDuplicate($pirep); $dupe_pirep = $this->pirepSvc->findDuplicate($pirep);
if($dupe_pirep !== false) { if ($dupe_pirep !== false) {
$pirep = $dupe_pirep; $pirep = $dupe_pirep;
$this->checkCancelled($pirep); $this->checkCancelled($pirep);
} }
@@ -208,7 +214,7 @@ class PirepController extends RestController
*/ */
public function update($id, UpdateRequest $request) public function update($id, UpdateRequest $request)
{ {
Log::info('PIREP Update, user ' . Auth::id(), $request->post()); Log::info('PIREP Update, user '.Auth::id(), $request->post());
$user = Auth::user(); $user = Auth::user();
$pirep = $this->pirepRepo->find($id); $pirep = $this->pirepRepo->find($id);
@@ -246,7 +252,7 @@ class PirepController extends RestController
*/ */
public function file($id, FileRequest $request) public function file($id, FileRequest $request)
{ {
Log::info('PIREP file, user ' . Auth::id(), $request->post()); Log::info('PIREP file, user '.Auth::id(), $request->post());
$user = Auth::user(); $user = Auth::user();
@@ -283,7 +289,7 @@ class PirepController extends RestController
# route that's been posted from the PIREP # route that's been posted from the PIREP
$w = ['pirep_id' => $pirep->id, 'type' => AcarsType::ROUTE]; $w = ['pirep_id' => $pirep->id, 'type' => AcarsType::ROUTE];
$count = Acars::where($w)->count(['id']); $count = Acars::where($w)->count(['id']);
if($count === 0) { if ($count === 0) {
$this->pirepSvc->saveRoute($pirep); $this->pirepSvc->saveRoute($pirep);
} }
@@ -299,7 +305,7 @@ class PirepController extends RestController
*/ */
public function cancel($id, Request $request) public function cancel($id, Request $request)
{ {
Log::info('PIREP Cancel, user ' . Auth::id(), $request->post()); Log::info('PIREP Cancel, user '.Auth::id(), $request->post());
$pirep = $this->pirepRepo->update([ $pirep = $this->pirepRepo->update([
'state' => PirepState::CANCELLED, 'state' => PirepState::CANCELLED,
@@ -361,8 +367,7 @@ class PirepController extends RestController
$count = 0; $count = 0;
$positions = $request->post('positions'); $positions = $request->post('positions');
foreach($positions as $position) foreach ($positions as $position) {
{
$position['pirep_id'] = $id; $position['pirep_id'] = $id;
$position['type'] = AcarsType::FLIGHT_PATH; $position['type'] = AcarsType::FLIGHT_PATH;
@@ -376,7 +381,7 @@ class PirepController extends RestController
$pirep->status = PirepStatus::ENROUTE; $pirep->status = PirepStatus::ENROUTE;
$pirep->save(); $pirep->save();
return $this->message($count . ' positions added', $count); return $this->message($count.' positions added', $count);
} }
/** /**
@@ -398,8 +403,7 @@ class PirepController extends RestController
$count = 0; $count = 0;
$logs = $request->post('logs'); $logs = $request->post('logs');
foreach($logs as $log) { foreach ($logs as $log) {
$log['pirep_id'] = $id; $log['pirep_id'] = $id;
$log['type'] = AcarsType::LOG; $log['type'] = AcarsType::LOG;
@@ -408,7 +412,7 @@ class PirepController extends RestController
++$count; ++$count;
} }
return $this->message($count . ' logs added', $count); return $this->message($count.' logs added', $count);
} }
/** /**
@@ -426,12 +430,11 @@ class PirepController extends RestController
$pirep = $this->pirepRepo->find($id); $pirep = $this->pirepRepo->find($id);
$this->checkCancelled($pirep); $this->checkCancelled($pirep);
Log::debug('Posting ACARS event, PIREP: ' . $id, $request->post()); Log::debug('Posting ACARS event, PIREP: '.$id, $request->post());
$count = 0; $count = 0;
$logs = $request->post('events'); $logs = $request->post('events');
foreach ($logs as $log) { foreach ($logs as $log) {
$log['pirep_id'] = $id; $log['pirep_id'] = $id;
$log['type'] = AcarsType::LOG; $log['type'] = AcarsType::LOG;
$log['log'] = $log['event']; $log['log'] = $log['event'];
@@ -441,7 +444,7 @@ class PirepController extends RestController
++$count; ++$count;
} }
return $this->message($count . ' logs added', $count); return $this->message($count.' logs added', $count);
} }
/** /**
@@ -453,6 +456,7 @@ class PirepController extends RestController
public function comments_get($id, Request $request) public function comments_get($id, Request $request)
{ {
$pirep = $this->pirepRepo->find($id); $pirep = $this->pirepRepo->find($id);
return PirepCommentResource::collection($pirep->comments); return PirepCommentResource::collection($pirep->comments);
} }
@@ -490,6 +494,7 @@ class PirepController extends RestController
{ {
$pirep = $this->pirepRepo->find($id); $pirep = $this->pirepRepo->find($id);
$transactions = $this->journalRepo->getAllForObject($pirep); $transactions = $this->journalRepo->getAllForObject($pirep);
return JournalTransactionResource::collection($transactions); return JournalTransactionResource::collection($transactions);
} }
@@ -509,6 +514,7 @@ class PirepController extends RestController
$pirep->refresh(); $pirep->refresh();
$transactions = $this->journalRepo->getAllForObject($pirep); $transactions = $this->journalRepo->getAllForObject($pirep);
return JournalTransactionResource::collection($transactions['transactions']); return JournalTransactionResource::collection($transactions['transactions']);
} }
@@ -545,7 +551,7 @@ class PirepController extends RestController
$count = 0; $count = 0;
$route = $request->post('route', []); $route = $request->post('route', []);
foreach($route as $position) { foreach ($route as $position) {
$position['pirep_id'] = $id; $position['pirep_id'] = $id;
$position['type'] = AcarsType::ROUTE; $position['type'] = AcarsType::ROUTE;
@@ -555,7 +561,7 @@ class PirepController extends RestController
++$count; ++$count;
} }
return $this->message($count . ' points added', $count); return $this->message($count.' points added', $count);
} }
/** /**
@@ -3,12 +3,17 @@
namespace App\Http\Controllers\Api; namespace App\Http\Controllers\Api;
use App\Http\Resources\Setting as SettingResource; use App\Http\Resources\Setting as SettingResource;
use App\Interfaces\Controller;
use App\Repositories\SettingRepository; use App\Repositories\SettingRepository;
use Illuminate\Http\Request; use Illuminate\Http\Request;
class SettingsController extends RestController /**
* Class SettingsController
* @package App\Http\Controllers\Api
*/
class SettingsController extends Controller
{ {
protected $settingRepo; private $settingRepo;
/** /**
* SettingsController constructor. * SettingsController constructor.
@@ -2,9 +2,14 @@
namespace App\Http\Controllers\Api; namespace App\Http\Controllers\Api;
use App\Interfaces\Controller;
use PragmaRX\Version\Package\Facade as Version; use PragmaRX\Version\Package\Facade as Version;
class StatusController extends RestController /**
* Class StatusController
* @package App\Http\Controllers\Api
*/
class StatusController extends Controller
{ {
/** /**
* @return \Illuminate\Http\JsonResponse * @return \Illuminate\Http\JsonResponse
+12 -7
View File
@@ -3,12 +3,12 @@
namespace App\Http\Controllers\Api; namespace App\Http\Controllers\Api;
use App\Http\Resources\Bid as BidResource; use App\Http\Resources\Bid as BidResource;
use App\Http\Resources\Flight as FlightResource;
use App\Http\Resources\Pirep as PirepResource; use App\Http\Resources\Pirep as PirepResource;
use App\Http\Resources\Subfleet as SubfleetResource; use App\Http\Resources\Subfleet as SubfleetResource;
use App\Http\Resources\User as UserResource; use App\Http\Resources\User as UserResource;
use App\Models\Enums\PirepState; use App\Interfaces\Controller;
use App\Models\Bid; use App\Models\Bid;
use App\Models\Enums\PirepState;
use App\Repositories\Criteria\WhereCriteria; use App\Repositories\Criteria\WhereCriteria;
use App\Repositories\FlightRepository; use App\Repositories\FlightRepository;
use App\Repositories\PirepRepository; use App\Repositories\PirepRepository;
@@ -21,10 +21,13 @@ use Illuminate\Http\Request;
use Prettus\Repository\Criteria\RequestCriteria; use Prettus\Repository\Criteria\RequestCriteria;
use Prettus\Repository\Exceptions\RepositoryException; use Prettus\Repository\Exceptions\RepositoryException;
/**
class UserController extends RestController * Class UserController
* @package App\Http\Controllers\Api
*/
class UserController extends Controller
{ {
protected $flightRepo, private $flightRepo,
$flightSvc, $flightSvc,
$pirepRepo, $pirepRepo,
$subfleetRepo, $subfleetRepo,
@@ -106,11 +109,12 @@ class UserController extends RestController
$flight_id = $request->input('flight_id'); $flight_id = $request->input('flight_id');
$flight = $this->flightRepo->find($flight_id); $flight = $this->flightRepo->find($flight_id);
$bid = $this->flightSvc->addBid($flight, $user); $bid = $this->flightSvc->addBid($flight, $user);
return new BidResource($bid); return new BidResource($bid);
} }
if ($request->isMethod('DELETE')) { if ($request->isMethod('DELETE')) {
if($request->filled('bid_id')) { if ($request->filled('bid_id')) {
$bid = Bid::findOrFail($request->input('bid_id')); $bid = Bid::findOrFail($request->input('bid_id'));
$flight_id = $bid->flight_id; $flight_id = $bid->flight_id;
} else { } else {
@@ -123,6 +127,7 @@ class UserController extends RestController
# Return the flights they currently have bids on # Return the flights they currently have bids on
$bids = Bid::where(['user_id' => $user->id])->get(); $bids = Bid::where(['user_id' => $user->id])->get();
return BidResource::collection($bids); return BidResource::collection($bids);
} }
@@ -152,7 +157,7 @@ class UserController extends RestController
'user_id' => $this->getUserId($request), 'user_id' => $this->getUserId($request),
]; ];
if(filled($request->query('state'))) { if (filled($request->query('state'))) {
$where['state'] = $request->query('state'); $where['state'] = $request->query('state');
} else { } else {
$where[] = ['state', '!=', PirepState::CANCELLED]; $where[] = ['state', '!=', PirepState::CANCELLED];
@@ -2,9 +2,13 @@
namespace App\Http\Controllers\Auth; namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller; use App\Interfaces\Controller;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails; use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
/**
* Class ForgotPasswordController
* @package App\Http\Controllers\Auth
*/
class ForgotPasswordController extends Controller class ForgotPasswordController extends Controller
{ {
use SendsPasswordResetEmails; use SendsPasswordResetEmails;
@@ -2,13 +2,17 @@
namespace App\Http\Controllers\Auth; namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller; use App\Interfaces\Controller;
use App\Models\Enums\UserState; use App\Models\Enums\UserState;
use Illuminate\Foundation\Auth\AuthenticatesUsers; use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
/**
* Class LoginController
* @package App\Http\Controllers\Auth
*/
class LoginController extends Controller class LoginController extends Controller
{ {
use AuthenticatesUsers; use AuthenticatesUsers;
@@ -44,17 +48,16 @@ class LoginController extends Controller
$user->save(); $user->save();
// TODO: How to handle ON_LEAVE? // TODO: How to handle ON_LEAVE?
if($user->state !== UserState::ACTIVE) { if ($user->state !== UserState::ACTIVE) {
Log::info('Trying to login '.$user->pilot_id.', state '
Log::info('Trying to login '. $user->pilot_id .', state ' .UserState::label($user->state));
. UserState::label($user->state));
// Log them out // Log them out
$this->guard()->logout(); $this->guard()->logout();
$request->session()->invalidate(); $request->session()->invalidate();
// Redirect to one of the error pages // Redirect to one of the error pages
if($user->state === UserState::PENDING) { if ($user->state === UserState::PENDING) {
return view('auth.pending'); return view('auth.pending');
} elseif ($user->state === UserState::REJECTED) { } elseif ($user->state === UserState::REJECTED) {
return view('auth.rejected'); return view('auth.rejected');
@@ -3,7 +3,7 @@
namespace App\Http\Controllers\Auth; namespace App\Http\Controllers\Auth;
use App\Facades\Utils; use App\Facades\Utils;
use App\Http\Controllers\Controller; use App\Interfaces\Controller;
use App\Models\Enums\UserState; use App\Models\Enums\UserState;
use App\Models\User; use App\Models\User;
use App\Repositories\AirlineRepository; use App\Repositories\AirlineRepository;
@@ -16,6 +16,10 @@ use Jackiedo\Timezonelist\Facades\Timezonelist;
use Log; use Log;
use Validator; use Validator;
/**
* Class RegisterController
* @package App\Http\Controllers\Auth
*/
class RegisterController extends Controller class RegisterController extends Controller
{ {
use RegistersUsers; use RegistersUsers;
@@ -26,7 +30,7 @@ class RegisterController extends Controller
*/ */
protected $redirectTo = '/'; protected $redirectTo = '/';
protected $airlineRepo, private $airlineRepo,
$airportRepo, $airportRepo,
$userService; $userService;
@@ -129,18 +133,19 @@ class RegisterController extends Controller
'password' => 'required|confirmed' 'password' => 'required|confirmed'
]; ];
if(config('captcha.enabled')) { if (config('captcha.enabled')) {
$rules['g-recaptcha-response'] = 'required|captcha'; $rules['g-recaptcha-response'] = 'required|captcha';
} }
$this->validate(request(), $rules); $this->validate(request(), $rules);
$user = $this->create($request->all()); $user = $this->create($request->all());
if($user->state === UserState::PENDING) { if ($user->state === UserState::PENDING) {
return view('auth.pending'); return view('auth.pending');
} }
$this->guard()->login($user); $this->guard()->login($user);
return redirect('/dashboard'); return redirect('/dashboard');
} }
} }
@@ -2,16 +2,20 @@
namespace App\Http\Controllers\Auth; namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller; use App\Interfaces\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords; use Illuminate\Foundation\Auth\ResetsPasswords;
use Illuminate\Http\Request; use Illuminate\Http\Request;
/**
* Class ResetPasswordController
* @package App\Http\Controllers\Auth
*/
class ResetPasswordController extends Controller class ResetPasswordController extends Controller
{ {
protected $redirectTo = '/login';
use ResetsPasswords; use ResetsPasswords;
protected $redirectTo = '/login';
/** /**
* @param Request $request * @param Request $request
* @param null $token * @param null $token
-25
View File
@@ -1,25 +0,0 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
/**
* Display a view but pull it from the active skin
* @param string $template
* @param array $vars
* @param array $merge_data
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function view($template, array $vars=[], $merge_data=[])
{
return view($template, $vars, $merge_data);
}
}
@@ -2,14 +2,19 @@
namespace App\Http\Controllers\Frontend; namespace App\Http\Controllers\Frontend;
use App\Http\Controllers\Controller; use App\Interfaces\Controller;
use App\Repositories\AcarsRepository; use App\Repositories\AcarsRepository;
use App\Services\GeoService; use App\Services\GeoService;
use Illuminate\Http\Request; use Illuminate\Http\Request;
/**
* Class AcarsController
* @package App\Http\Controllers\Frontend
*/
class AcarsController extends Controller class AcarsController extends Controller
{ {
private $acarsRepo, $geoSvc; private $acarsRepo,
$geoSvc;
/** /**
* AcarsController constructor. * AcarsController constructor.
@@ -33,7 +38,7 @@ class AcarsController extends Controller
$pireps = $this->acarsRepo->getPositions(); $pireps = $this->acarsRepo->getPositions();
$positions = $this->geoSvc->getFeatureForLiveFlights($pireps); $positions = $this->geoSvc->getFeatureForLiveFlights($pireps);
return view('acars.index',[ return view('acars.index', [
'pireps' => $pireps, 'pireps' => $pireps,
'positions' => $positions, 'positions' => $positions,
]); ]);
@@ -2,26 +2,26 @@
namespace App\Http\Controllers\Frontend; namespace App\Http\Controllers\Frontend;
use App\Http\Controllers\Controller; use App\Interfaces\Controller;
use App\Repositories\PirepRepository; use App\Repositories\PirepRepository;
use App\Repositories\UserRepository;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
/**
* Class DashboardController
* @package App\Http\Controllers\Frontend
*/
class DashboardController extends Controller class DashboardController extends Controller
{ {
private $pirepRepo, $userRepo; private $pirepRepo;
/** /**
* DashboardController constructor. * DashboardController constructor.
* @param PirepRepository $pirepRepo * @param PirepRepository $pirepRepo
* @param UserRepository $userRepo
*/ */
public function __construct( public function __construct(
PirepRepository $pirepRepo, PirepRepository $pirepRepo
UserRepository $userRepo
) { ) {
$this->pirepRepo = $pirepRepo; $this->pirepRepo = $pirepRepo;
$this->userRepo = $userRepo;
} }
/** /**
@@ -34,7 +34,8 @@ class DashboardController extends Controller
try { try {
$last_pirep = $this->pirepRepo->find($user->last_pirep_id); $last_pirep = $this->pirepRepo->find($user->last_pirep_id);
} catch(\Exception $e) { } } catch (\Exception $e) {
}
return view('dashboard.index', [ return view('dashboard.index', [
'user' => $user, 'user' => $user,
@@ -2,19 +2,22 @@
namespace App\Http\Controllers\Frontend; namespace App\Http\Controllers\Frontend;
use App\Http\Controllers\Controller; use App\Interfaces\Controller;
use App\Models\Bid; use App\Models\Bid;
use App\Repositories\AirlineRepository; use App\Repositories\AirlineRepository;
use App\Repositories\AirportRepository; use App\Repositories\AirportRepository;
use App\Repositories\Criteria\WhereCriteria; use App\Repositories\Criteria\WhereCriteria;
use App\Repositories\FlightRepository; use App\Repositories\FlightRepository;
use App\Services\FlightService;
use App\Services\GeoService; use App\Services\GeoService;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Log; use Log;
use Prettus\Repository\Exceptions\RepositoryException; use Prettus\Repository\Exceptions\RepositoryException;
/**
* Class FlightController
* @package App\Http\Controllers\Frontend
*/
class FlightController extends Controller class FlightController extends Controller
{ {
private $airlineRepo, private $airlineRepo,
@@ -27,20 +30,18 @@ class FlightController extends Controller
* @param AirlineRepository $airlineRepo * @param AirlineRepository $airlineRepo
* @param AirportRepository $airportRepo * @param AirportRepository $airportRepo
* @param FlightRepository $flightRepo * @param FlightRepository $flightRepo
* @param FlightService $flightSvc
* @param GeoService $geoSvc * @param GeoService $geoSvc
*/ */
public function __construct( public function __construct(
AirlineRepository $airlineRepo, AirlineRepository $airlineRepo,
AirportRepository $airportRepo, AirportRepository $airportRepo,
FlightRepository $flightRepo, FlightRepository $flightRepo,
FlightService $flightSvc,
GeoService $geoSvc GeoService $geoSvc
) { )
{
$this->airlineRepo = $airlineRepo; $this->airlineRepo = $airlineRepo;
$this->airportRepo = $airportRepo; $this->airportRepo = $airportRepo;
$this->flightRepo = $flightRepo; $this->flightRepo = $flightRepo;
$this->flightSvc = $flightSvc;
$this->geoSvc = $geoSvc; $this->geoSvc = $geoSvc;
} }
@@ -107,6 +108,7 @@ class FlightController extends Controller
$flight = $this->flightRepo->find($id); $flight = $this->flightRepo->find($id);
if (empty($flight)) { if (empty($flight)) {
Flash::error('Flight not found!'); Flash::error('Flight not found!');
return redirect(route('frontend.dashboard.index')); return redirect(route('frontend.dashboard.index'));
} }
@@ -2,10 +2,14 @@
namespace App\Http\Controllers\Frontend; namespace App\Http\Controllers\Frontend;
use App\Http\Controllers\Controller; use App\Interfaces\Controller;
use App\Models\User; use App\Models\User;
use Illuminate\Database\QueryException; use Illuminate\Database\QueryException;
/**
* Class HomeController
* @package App\Http\Controllers\Frontend
*/
class HomeController extends Controller class HomeController extends Controller
{ {
/** /**
@@ -3,9 +3,9 @@
namespace App\Http\Controllers\Frontend; namespace App\Http\Controllers\Frontend;
use App\Facades\Utils; use App\Facades\Utils;
use App\Http\Controllers\Controller;
use App\Http\Requests\CreatePirepRequest; use App\Http\Requests\CreatePirepRequest;
use App\Http\Requests\UpdatePirepRequest; use App\Http\Requests\UpdatePirepRequest;
use App\Interfaces\Controller;
use App\Models\Enums\PirepSource; use App\Models\Enums\PirepSource;
use App\Models\Enums\PirepState; use App\Models\Enums\PirepState;
use App\Models\Pirep; use App\Models\Pirep;
@@ -25,7 +25,10 @@ use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Log; use Log;
/**
* Class PirepController
* @package App\Http\Controllers\Frontend
*/
class PirepController extends Controller class PirepController extends Controller
{ {
private $aircraftRepo, private $aircraftRepo,
@@ -78,19 +81,19 @@ class PirepController extends Controller
* @param null $user * @param null $user
* @return array * @return array
*/ */
public function aircraftList($user=null, $add_blank=false) public function aircraftList($user = null, $add_blank = false)
{ {
$aircraft = []; $aircraft = [];
$subfleets = $this->userSvc->getAllowableSubfleets($user); $subfleets = $this->userSvc->getAllowableSubfleets($user);
if($add_blank) { if ($add_blank) {
$aircraft[''] = ''; $aircraft[''] = '';
} }
foreach ($subfleets as $subfleet) { foreach ($subfleets as $subfleet) {
$tmp = []; $tmp = [];
foreach ($subfleet->aircraft as $ac) { foreach ($subfleet->aircraft as $ac) {
$tmp[$ac->id] = $ac['name'] . ' - ' . $ac['registration']; $tmp[$ac->id] = $ac['name'].' - '.$ac['registration'];
} }
$aircraft[$subfleet->name] = $tmp; $aircraft[$subfleet->name] = $tmp;
@@ -133,10 +136,9 @@ class PirepController extends Controller
protected function saveFares(Pirep $pirep, Request $request) protected function saveFares(Pirep $pirep, Request $request)
{ {
$fares = []; $fares = [];
foreach($pirep->aircraft->subfleet->fares as $fare) { foreach ($pirep->aircraft->subfleet->fares as $fare) {
$field_name = 'fare_'.$fare->id; $field_name = 'fare_'.$fare->id;
if(!$request->filled($field_name)) { if (!$request->filled($field_name)) {
$count = 0; $count = 0;
} else { } else {
$count = $request->input($field_name); $count = $request->input($field_name);
@@ -181,6 +183,7 @@ class PirepController extends Controller
$pirep = $this->pirepRepo->find($id); $pirep = $this->pirepRepo->find($id);
if (empty($pirep)) { if (empty($pirep)) {
Flash::error('Pirep not found'); Flash::error('Pirep not found');
return redirect(route('frontend.pirep.index')); return redirect(route('frontend.pirep.index'));
} }
@@ -242,6 +245,7 @@ class PirepController extends Controller
$dupe_pirep = $this->pirepSvc->findDuplicate($pirep); $dupe_pirep = $this->pirepSvc->findDuplicate($pirep);
if ($dupe_pirep !== false) { if ($dupe_pirep !== false) {
flash()->error('This PIREP has already been filed.'); flash()->error('This PIREP has already been filed.');
return redirect(route('frontend.pireps.create'))->withInput(); return redirect(route('frontend.pireps.create'))->withInput();
} }
@@ -268,6 +272,7 @@ class PirepController extends Controller
$pirep = $this->pirepRepo->findWithoutFail($id); $pirep = $this->pirepRepo->findWithoutFail($id);
if (empty($pirep)) { if (empty($pirep)) {
Flash::error('Pirep not found'); Flash::error('Pirep not found');
return redirect(route('frontend.pireps.index')); return redirect(route('frontend.pireps.index'));
} }
@@ -279,12 +284,12 @@ class PirepController extends Controller
$read_only = $pirep->state !== PirepState::PENDING; $read_only = $pirep->state !== PirepState::PENDING;
# set the custom fields # set the custom fields
foreach($pirep->fields as $field) { foreach ($pirep->fields as $field) {
$pirep->{$field->slug} = $field->value; $pirep->{$field->slug} = $field->value;
} }
# set the fares # set the fares
foreach($pirep->fares as $fare) { foreach ($pirep->fares as $fare) {
$field_name = 'fare_'.$fare->fare_id; $field_name = 'fare_'.$fare->fare_id;
$pirep->{$field_name} = $fare->count; $pirep->{$field_name} = $fare->count;
} }
@@ -313,6 +318,7 @@ class PirepController extends Controller
if (empty($pirep)) { if (empty($pirep)) {
Flash::error('Pirep not found'); Flash::error('Pirep not found');
return redirect(route('admin.pireps.index')); return redirect(route('admin.pireps.index'));
} }
@@ -336,6 +342,7 @@ class PirepController extends Controller
$this->saveFares($pirep, $request); $this->saveFares($pirep, $request);
Flash::success('Pirep updated successfully.'); Flash::success('Pirep updated successfully.');
return redirect(route('frontend.pireps.show', ['id' => $pirep->id])); return redirect(route('frontend.pireps.show', ['id' => $pirep->id]));
} }
} }
@@ -3,7 +3,7 @@
namespace App\Http\Controllers\Frontend; namespace App\Http\Controllers\Frontend;
use App\Facades\Utils; use App\Facades\Utils;
use App\Http\Controllers\Controller; use App\Interfaces\Controller;
use App\Models\User; use App\Models\User;
use App\Repositories\AirlineRepository; use App\Repositories\AirlineRepository;
use App\Repositories\AirportRepository; use App\Repositories\AirportRepository;
@@ -17,6 +17,10 @@ use Jackiedo\Timezonelist\Facades\Timezonelist;
use Log; use Log;
use Validator; use Validator;
/**
* Class ProfileController
* @package App\Http\Controllers\Frontend
*/
class ProfileController extends Controller class ProfileController extends Controller
{ {
private $airlineRepo, private $airlineRepo,
@@ -44,7 +48,7 @@ class ProfileController extends Controller
*/ */
public function index() public function index()
{ {
if(setting('pilots.home_hubs_only')) { if (setting('pilots.home_hubs_only')) {
$airports = $this->airportRepo->findWhere(['hub' => true]); $airports = $this->airportRepo->findWhere(['hub' => true]);
} else { } else {
$airports = $this->airportRepo->all(); $airports = $this->airportRepo->all();
@@ -65,6 +69,7 @@ class ProfileController extends Controller
$user = User::where('id', $id)->first(); $user = User::where('id', $id)->first();
if (empty($user)) { if (empty($user)) {
Flash::error('User not found!'); Flash::error('User not found!');
return redirect(route('frontend.dashboard.index')); return redirect(route('frontend.dashboard.index'));
} }
@@ -86,6 +91,7 @@ class ProfileController extends Controller
$user = User::where('id', Auth::user()->id)->first(); $user = User::where('id', Auth::user()->id)->first();
if (empty($user)) { if (empty($user)) {
Flash::error('User not found!'); Flash::error('User not found!');
return redirect(route('frontend.dashboard.index')); return redirect(route('frontend.dashboard.index'));
} }
@@ -137,6 +143,7 @@ class ProfileController extends Controller
$this->userRepo->update($req_data, $id); $this->userRepo->update($req_data, $id);
Flash::success('Profile updated successfully!'); Flash::success('Profile updated successfully!');
return redirect(route('frontend.profile.index')); return redirect(route('frontend.profile.index'));
} }
@@ -154,6 +161,7 @@ class ProfileController extends Controller
$user->save(); $user->save();
flash('New API key generated!')->success(); flash('New API key generated!')->success();
return redirect(route('frontend.profile.index')); return redirect(route('frontend.profile.index'));
} }
} }
@@ -2,10 +2,14 @@
namespace App\Http\Controllers\Frontend; namespace App\Http\Controllers\Frontend;
use App\Http\Controllers\Controller; use App\Interfaces\Controller;
use App\Repositories\UserRepository; use App\Repositories\UserRepository;
use Illuminate\Http\Request; use Illuminate\Http\Request;
/**
* Class UserController
* @package App\Http\Controllers\Frontend
*/
class UserController extends Controller class UserController extends Controller
{ {
private $userRepo; private $userRepo;
@@ -26,7 +30,7 @@ class UserController extends Controller
*/ */
public function index(Request $request) public function index(Request $request)
{ {
return view('users.index',[ return view('users.index', [
'country' => new \League\ISO3166\ISO3166(), 'country' => new \League\ISO3166\ISO3166(),
'users' => $this->userRepo->orderBy('name', 'desc')->paginate(), 'users' => $this->userRepo->orderBy('name', 'desc')->paginate(),
]); ]);
-2
View File
@@ -11,7 +11,6 @@ class Kernel extends HttpKernel
\Illuminate\Foundation\Http\Middleware\TrimStrings::class, \Illuminate\Foundation\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
]; ];
protected $middlewareGroups = [ protected $middlewareGroups = [
'web' => [ 'web' => [
\App\Http\Middleware\InstalledCheck::class, \App\Http\Middleware\InstalledCheck::class,
@@ -30,7 +29,6 @@ class Kernel extends HttpKernel
'json', 'json',
], ],
]; ];
protected $routeMiddleware = [ protected $routeMiddleware = [
'api.auth' => \App\Http\Middleware\ApiAuth::class, 'api.auth' => \App\Http\Middleware\ApiAuth::class,
'auth' => \Illuminate\Auth\Middleware\Authenticate::class, 'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
+5 -5
View File
@@ -23,7 +23,7 @@ class ApiAuth
{ {
// Check if Authorization header is in place // Check if Authorization header is in place
$api_key = $request->header('x-api-key', null); $api_key = $request->header('x-api-key', null);
if($api_key === null) { if ($api_key === null) {
$api_key = $request->header('Authorization', null); $api_key = $request->header('Authorization', null);
if ($api_key === null) { if ($api_key === null) {
return $this->unauthorized('X-API-KEY header missing'); return $this->unauthorized('X-API-KEY header missing');
@@ -32,11 +32,11 @@ class ApiAuth
// Try to find the user via API key. Cache this lookup // Try to find the user via API key. Cache this lookup
$user = User::where('api_key', $api_key)->first(); $user = User::where('api_key', $api_key)->first();
if($user === null) { if ($user === null) {
return $this->unauthorized('User not found with key "'.$api_key.'"'); return $this->unauthorized('User not found with key "'.$api_key.'"');
} }
if($user->state !== UserState::ACTIVE) { if ($user->state !== UserState::ACTIVE) {
return $this->unauthorized('User is not ACTIVE, please contact an administrator'); return $this->unauthorized('User is not ACTIVE, please contact an administrator');
} }
@@ -54,13 +54,13 @@ class ApiAuth
* Return an unauthorized message * Return an unauthorized message
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
*/ */
private function unauthorized($details='') private function unauthorized($details = '')
{ {
return response([ return response([
'error' => [ 'error' => [
'code' => '401', 'code' => '401',
'http_code' => 'Unauthorized', 'http_code' => 'Unauthorized',
'message' => 'Invalid or missing API key ('. $details .')', 'message' => 'Invalid or missing API key ('.$details.')',
], ],
], 401); ], 401);
} }
+1
View File
@@ -13,6 +13,7 @@ class JsonResponse
{ {
$response = $next($request); $response = $next($request);
$response->headers->set('Content-Type', 'application/json'); $response->headers->set('Content-Type', 'application/json');
return $response; return $response;
} }
} }
+1 -1
View File
@@ -21,7 +21,7 @@ class MeasureExecutionTime
{ {
// Get the response // Get the response
$response = $next($request); $response = $next($request);
if(!defined('LUMEN_START')) { if (!defined('LUMEN_START')) {
return $response; return $response;
} }
+5
View File
@@ -12,9 +12,14 @@ use Illuminate\Foundation\Http\FormRequest;
*/ */
class EventRequest extends FormRequest class EventRequest extends FormRequest
{ {
/**
* @return bool
* @throws \Illuminate\Database\Eloquent\ModelNotFoundException
*/
public function authorize() public function authorize()
{ {
$pirep = Pirep::findOrFail($this->route('pirep_id'), ['user_id']); $pirep = Pirep::findOrFail($this->route('pirep_id'), ['user_id']);
return $pirep->user_id === Auth::id(); return $pirep->user_id === Auth::id();
} }
+1
View File
@@ -15,6 +15,7 @@ class FileRequest extends FormRequest
public function authorize() public function authorize()
{ {
$pirep = Pirep::findOrFail($this->route('pirep_id'), ['user_id']); $pirep = Pirep::findOrFail($this->route('pirep_id'), ['user_id']);
return $pirep->user_id === Auth::id(); return $pirep->user_id === Auth::id();
} }

Some files were not shown because too many files have changed in this diff Show More