phpvms/app/Http/Controllers/Admin/AwardController.php

203 lines
4.9 KiB
PHP
Raw Normal View History

2018-01-29 03:19:35 +08:00
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Requests\CreateAwardRequest;
use App\Http\Requests\UpdateAwardRequest;
use App\Interfaces\Controller;
2018-01-29 03:19:35 +08:00
use App\Repositories\AwardRepository;
2018-03-18 01:17:38 +08:00
use App\Services\AwardService;
2018-01-29 03:19:35 +08:00
use Flash;
use Illuminate\Http\Request;
2018-01-29 03:19:35 +08:00
use Prettus\Repository\Criteria\RequestCriteria;
use Response;
class AwardController extends Controller
2018-01-29 03:19:35 +08:00
{
2018-08-27 00:40:04 +08:00
/** @var AwardRepository */
private $awardRepository;
private $awardSvc;
2018-01-29 03:19:35 +08:00
/**
* AwardController constructor.
2018-08-27 00:40:04 +08:00
*
* @param AwardRepository $awardRepo
* @param AwardService $awardSvc
*/
2018-03-18 01:17:38 +08:00
public function __construct(
AwardRepository $awardRepo,
AwardService $awardSvc
2018-08-27 00:40:04 +08:00
) {
2018-01-29 03:19:35 +08:00
$this->awardRepository = $awardRepo;
2018-03-18 01:17:38 +08:00
$this->awardSvc = $awardSvc;
}
/**
* @return array
*/
protected function getAwardClassesAndDescriptions(): array
{
$awards = [
'' => '',
];
$descriptions = [];
$award_classes = $this->awardSvc->findAllAwardClasses();
foreach ($award_classes as $class_ref => $award) {
2018-03-18 01:17:38 +08:00
$awards[$class_ref] = $award->name;
$descriptions[$class_ref] = $award->param_description;
}
return [
'awards' => $awards,
2018-03-18 01:17:38 +08:00
'descriptions' => $descriptions,
];
2018-01-29 03:19:35 +08:00
}
/**
* Display a listing of the Fare.
2018-08-27 00:40:04 +08:00
*
2018-01-29 03:19:35 +08:00
* @param Request $request
2018-08-27 00:40:04 +08:00
*
* @throws \Prettus\Repository\Exceptions\RepositoryException
2018-08-27 00:40:04 +08:00
*
* @return Response
2018-01-29 03:19:35 +08:00
*/
public function index(Request $request)
{
$this->awardRepository->pushCriteria(new RequestCriteria($request));
$awards = $this->awardRepository->all();
return view('admin.awards.index', [
'awards' => $awards,
]);
2018-01-29 03:19:35 +08:00
}
/**
* Show the form for creating a new Fare.
2018-08-27 00:40:04 +08:00
*
2018-01-29 03:19:35 +08:00
* @return Response
*/
public function create()
{
2018-03-18 01:17:38 +08:00
$class_refs = $this->getAwardClassesAndDescriptions();
2018-03-18 01:17:38 +08:00
return view('admin.awards.create', [
'award_classes' => $class_refs['awards'],
2018-03-18 01:17:38 +08:00
'award_descriptions' => $class_refs['descriptions'],
]);
2018-01-29 03:19:35 +08:00
}
/**
* Store a newly created Fare in storage.
2018-08-27 00:40:04 +08:00
*
* @param CreateAwardRequest $request
2018-08-27 00:40:04 +08:00
*
* @throws \Prettus\Validator\Exceptions\ValidatorException
2018-08-27 00:40:04 +08:00
*
* @return Response
2018-01-29 03:19:35 +08:00
*/
public function store(CreateAwardRequest $request)
{
$input = $request->all();
$award = $this->awardRepository->create($input);
Flash::success('Award saved successfully.');
return redirect(route('admin.awards.index'));
}
/**
* Display the specified Fare.
2018-08-27 00:40:04 +08:00
*
* @param int $id
*
2018-01-29 03:19:35 +08:00
* @return Response
*/
public function show($id)
{
$award = $this->awardRepository->findWithoutFail($id);
2018-01-29 03:19:35 +08:00
if (empty($award)) {
Flash::error('Award not found');
2018-01-29 03:19:35 +08:00
return redirect(route('admin.awards.index'));
}
return view('admin.awards.show', [
'award' => $award,
]);
2018-01-29 03:19:35 +08:00
}
/**
* Show the form for editing the specified award.
2018-08-27 00:40:04 +08:00
*
* @param int $id
*
2018-01-29 03:19:35 +08:00
* @return Response
*/
public function edit($id)
{
$award = $this->awardRepository->findWithoutFail($id);
if (empty($award)) {
Flash::error('Award not found');
2018-01-29 03:19:35 +08:00
return redirect(route('admin.awards.index'));
}
2018-03-18 01:17:38 +08:00
$class_refs = $this->getAwardClassesAndDescriptions();
return view('admin.awards.edit', [
'award' => $award,
'award_classes' => $class_refs['awards'],
2018-03-18 01:17:38 +08:00
'award_descriptions' => $class_refs['descriptions'],
]);
2018-01-29 03:19:35 +08:00
}
/**
* Update the specified award in storage.
2018-08-27 00:40:04 +08:00
*
* @param int $id
* @param UpdateAwardRequest $request
2018-08-27 00:40:04 +08:00
*
* @throws \Prettus\Validator\Exceptions\ValidatorException
2018-08-27 00:40:04 +08:00
*
* @return Response
2018-01-29 03:19:35 +08:00
*/
public function update($id, UpdateAwardRequest $request)
{
$award = $this->awardRepository->findWithoutFail($id);
if (empty($award)) {
Flash::error('Award not found');
2018-01-29 03:19:35 +08:00
return redirect(route('admin.awards.index'));
}
$award = $this->awardRepository->update($request->all(), $id);
Flash::success('Award updated successfully.');
return redirect(route('admin.awards.index'));
}
/**
* Remove the specified Fare from storage.
*
2018-08-27 00:40:04 +08:00
* @param int $id
2018-01-29 03:19:35 +08:00
*
* @return Response
*/
public function destroy($id)
{
$award = $this->awardRepository->findWithoutFail($id);
if (empty($award)) {
Flash::error('Fare not found');
2018-01-29 03:19:35 +08:00
return redirect(route('admin.awards.index'));
}
$this->awardRepository->delete($id);
Flash::success('Fare deleted successfully.');
return redirect(route('admin.awards.index'));
}
}