Files
phpvms/app/Http/Controllers/Admin/AirlinesController.php
B.Fatih KOZ 08f82f8a2e Admin and Discord Notification Improvements (#1407)
* Backend changes

Sorting for : Airlines, Subfleets, Type Ratings and exported Flights

Blade : Added WYSIWYG editor to flight remarks/notes field

Notifications :

Mails > Added enabled/disabled settings for mails. Discord > Dashed out PirepPreFiled, re-enabled PirepStatusChanged with reduced messages

* Update PirepStatusChanged.php

* Update NotificationEventsHandler.php

* in_array fix

* Fix Discord Notifications

* Discord Notifications

Removed the pirep url from message as it is mostly private at phpvms side.

Also removed the Flight Ident from fields 'cause it is being used in the title.

Added the user avatar as thumbnail, and pirep filed message uses the airline logo as the main image.

Even though the outgoing pirep status messages are reduced, it is still possible to enable/disable them from admin settings.

Pirep Filed is always being sent (if the webhook is defined)

* StyleFix
2022-02-14 16:24:22 -05:00

167 lines
4.3 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Contracts\Controller;
use App\Http\Requests\CreateAirlineRequest;
use App\Http\Requests\UpdateAirlineRequest;
use App\Repositories\AirlineRepository;
use App\Services\AirlineService;
use App\Support\Countries;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Laracasts\Flash\Flash;
use Prettus\Repository\Criteria\RequestCriteria;
class AirlinesController extends Controller
{
private $airlineRepo;
private $airlineSvc;
/**
* AirlinesController constructor.
*
* @param AirlineRepository $airlinesRepo
* @param $airlineSvc
*/
public function __construct(AirlineRepository $airlinesRepo, AirlineService $airlineSvc)
{
$this->airlineRepo = $airlinesRepo;
$this->airlineSvc = $airlineSvc;
}
/**
* Display a listing of the Airlines.
*
* @throws \Prettus\Repository\Exceptions\RepositoryException
*/
public function index(Request $request)
{
$this->airlineRepo->pushCriteria(new RequestCriteria($request));
$airlines = $this->airlineRepo->orderby('name', 'asc')->get();
return view('admin.airlines.index', [
'airlines' => $airlines,
]);
}
/**
* Show the form for creating a new Airlines.
*/
public function create()
{
return view('admin.airlines.create', [
'countries' => Countries::getSelectList(),
]);
}
/**
* Store a newly created Airlines in storage.
*
* @throws \Prettus\Validator\Exceptions\ValidatorException
*/
public function store(CreateAirlineRequest $request)
{
$input = $request->all();
$this->airlineSvc->createAirline($input);
Flash::success('Airlines saved successfully.');
return redirect(route('admin.airlines.index'));
}
/**
* Display the specified Airlines.
*
* @param int $id
*
* @return mixed
*/
public function show($id)
{
$airlines = $this->airlineRepo->findWithoutFail($id);
if (empty($airlines)) {
Flash::error('Airlines not found');
return redirect(route('admin.airlines.index'));
}
return view('admin.airlines.show', [
'airlines' => $airlines,
]);
}
/**
* Show the form for editing the specified Airlines.
*
* @param int $id
*
* @return Response
*/
public function edit($id)
{
$airline = $this->airlineRepo->findWithoutFail($id);
if (empty($airline)) {
Flash::error('Airline not found');
return redirect(route('admin.airlines.index'));
}
return view('admin.airlines.edit', [
'airline' => $airline,
'countries' => Countries::getSelectList(),
]);
}
/**
* Update the specified Airlines in storage.
*
* @param int $id
* @param UpdateAirlineRequest $request
*
* @throws \Prettus\Validator\Exceptions\ValidatorException
*
* @return Response
*/
public function update($id, UpdateAirlineRequest $request)
{
$airlines = $this->airlineRepo->findWithoutFail($id);
if (empty($airlines)) {
Flash::error('Airlines not found');
return redirect(route('admin.airlines.index'));
}
$airlines = $this->airlineRepo->update($request->all(), $id);
Flash::success('Airlines updated successfully.');
return redirect(route('admin.airlines.index'));
}
/**
* Remove the specified Airlines from storage.
*
* @param int $id
*
* @return Response
*/
public function destroy($id)
{
$airline = $this->airlineRepo->findWithoutFail($id);
if (empty($airline)) {
Flash::error('Airlines not found');
return redirect(route('admin.airlines.index'));
}
if (!$this->airlineSvc->canDeleteAirline($airline)) {
Flash::error('Airlines cannot be deleted; flights/PIREPs/subfleets exist');
return redirect(route('admin.airlines.index'));
}
$this->airlineRepo->delete($id);
Flash::success('Airlines deleted successfully.');
return redirect(route('admin.airlines.index'));
}
}