From 03cfc648b03cf85aaf5af54837590c60bf0ff8ba Mon Sep 17 00:00:00 2001 From: Nabeel S Date: Sun, 26 Apr 2020 10:31:58 -0400 Subject: [PATCH] Create journal when new airline is created #667 (#670) --- app/Contracts/Repository.php | 3 +++ app/Database/seeds/settings.yml | 6 ++++++ app/Http/Controllers/Admin/AirlinesController.php | 2 +- app/Repositories/AirlineRepository.php | 3 +++ app/Services/AirlineService.php | 15 +++++++++++++++ .../Http/Controllers/InstallerController.php | 11 +++++------ 6 files changed, 33 insertions(+), 7 deletions(-) diff --git a/app/Contracts/Repository.php b/app/Contracts/Repository.php index 288b44a7..191f6f40 100644 --- a/app/Contracts/Repository.php +++ b/app/Contracts/Repository.php @@ -5,6 +5,9 @@ namespace App\Contracts; use Illuminate\Validation\Validator; use Prettus\Repository\Eloquent\BaseRepository; +/** + * @mixin \Prettus\Repository\Eloquent\BaseRepository + */ abstract class Repository extends BaseRepository { /** diff --git a/app/Database/seeds/settings.yml b/app/Database/seeds/settings.yml index 606bc67b..6b8b2f5a 100644 --- a/app/Database/seeds/settings.yml +++ b/app/Database/seeds/settings.yml @@ -47,6 +47,12 @@ options: '' type: text description: 'Enter your Google Analytics Tracking ID' +- key: units.currency + name: 'Currency' + group: units + value: USD + type: select + description: 'The currency to use' - key: units.distance name: 'Distance Units' group: units diff --git a/app/Http/Controllers/Admin/AirlinesController.php b/app/Http/Controllers/Admin/AirlinesController.php index 4ebe22f0..afbc6104 100644 --- a/app/Http/Controllers/Admin/AirlinesController.php +++ b/app/Http/Controllers/Admin/AirlinesController.php @@ -63,7 +63,7 @@ class AirlinesController extends Controller public function store(CreateAirlineRequest $request) { $input = $request->all(); - $airlines = $this->airlineRepo->create($input); + $this->airlineSvc->createAirline($input); Flash::success('Airlines saved successfully.'); return redirect(route('admin.airlines.index')); diff --git a/app/Repositories/AirlineRepository.php b/app/Repositories/AirlineRepository.php index 896a8123..16c7bb1a 100644 --- a/app/Repositories/AirlineRepository.php +++ b/app/Repositories/AirlineRepository.php @@ -7,6 +7,9 @@ use App\Models\Airline; use Prettus\Repository\Contracts\CacheableInterface; use Prettus\Repository\Traits\CacheableRepository; +/** + * @mixin \App\Models\Airline + */ class AirlineRepository extends Repository implements CacheableInterface { use CacheableRepository; diff --git a/app/Services/AirlineService.php b/app/Services/AirlineService.php index 56c5ad08..11264de1 100644 --- a/app/Services/AirlineService.php +++ b/app/Services/AirlineService.php @@ -28,6 +28,21 @@ class AirlineService extends Service $this->subfleetRepo = $subfleetRepo; } + /** + * Create a new airline, and initialize the journal + * + * @param array $attr + * + * @return \App\Models\Airline + */ + public function createAirline(array $attr): Airline + { + $airline = $this->airlineRepo->create($attr); + $airline->initJournal(setting('units.currency')); + + return $airline; + } + /** * Can the airline be deleted? Check if there are flights, etc associated with it * diff --git a/modules/Installer/Http/Controllers/InstallerController.php b/modules/Installer/Http/Controllers/InstallerController.php index e8fd10f7..6a27fc8f 100644 --- a/modules/Installer/Http/Controllers/InstallerController.php +++ b/modules/Installer/Http/Controllers/InstallerController.php @@ -3,8 +3,7 @@ namespace Modules\Installer\Http\Controllers; use App\Contracts\Controller; -use App\Models\User; -use App\Repositories\AirlineRepository; +use App\Services\AirlineService; use App\Services\AnalyticsService; use App\Services\Installer\DatabaseService; use App\Services\Installer\InstallerService; @@ -24,7 +23,7 @@ use Modules\Installer\Services\RequirementsService; class InstallerController extends Controller { - private $airlineRepo; + private $airlineSvc; private $analyticsSvc; private $dbSvc; private $envSvc; @@ -36,7 +35,7 @@ class InstallerController extends Controller /** * InstallerController constructor. * - * @param AirlineRepository $airlineRepo + * @param AirlineService $airlineSvc * @param AnalyticsService $analyticsSvc * @param DatabaseService $dbService * @param ConfigService $envService @@ -46,7 +45,7 @@ class InstallerController extends Controller * @param UserService $userService */ public function __construct( - AirlineRepository $airlineRepo, + AirlineService $airlineRepo, AnalyticsService $analyticsSvc, DatabaseService $dbService, ConfigService $envService, @@ -311,7 +310,7 @@ class InstallerController extends Controller 'country' => $request->get('airline_country'), ]; - $airline = $this->airlineRepo->create($attrs); + $airline = $this->airlineSvc->create($attrs); /** * Create the user, and associate to the airline