Repository URL to install this package:
|
Version:
0.2.1 ▾
|
<?php namespace Modules\Students\Http\Controllers\Admin;
use Illuminate\Http\Request;
use Modules\Core\Http\Controllers\AdminController;
use Modules\Core\Services\Asset;
use Modules\Students\Entities\Student;
use Modules\Students\Http\Requests\CreateStudentRequest;
use Modules\Students\Http\Requests\EditStudentRequest;
use Modules\Students\Services\StudentService;
class StudentsController extends AdminController
{
/**
* @var StudentService
*/
private $service;
public function __construct(StudentService $service){
parent::__construct();
$this->service = $service;
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//$this->authorize($this);
Asset::add(\Config::get('core.assets.datatable'));
return $this->service->render('students::admin.list');
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$data = array();
//$this->authorize($this);
Asset::add(\Config::get('core.assets.inputmask'));
Asset::add(\Config::get('core.assets.datepicker'));
Asset::add(\Config::get('core.assets.select2'));
Asset::add(\Config::get('core.assets.intlTelInput'));
return view('students::admin.create', $data);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(CreateStudentRequest $request)
{
$input = $request->all();
/** @var Student $result */
$result = $this->service->create($input);
if ($result instanceof Student) {
$msg = trans('students::students.create.alerts.success', ['student' => $result->first_name]);
$response = $this->getResponse($msg, 200, 'students.index');
} else {
$msg = trans('students::students.create.alerts.error', ['student' => $input['first_name']]);
$response = $this->getResponse($msg, 400);
}
return $response;
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//$this->authorize($this);
Asset::add(\Config::get('core.assets.inputmask'));
Asset::add(\Config::get('core.assets.datepicker'));
Asset::add(\Config::get('core.assets.select2'));
Asset::add(\Config::get('core.assets.intlTelInput'));
$data = array(
'data' => $this->service->editId($id)
);
return view('students::admin.edit', $data);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(EditStudentRequest $request, $id)
{
$input = $request->all();
/** @var Student $result */
$result = $this->service->update($id, $input);
if ($result instanceof Student) {
$msg = trans('students::students.edit.alerts.success', ['student' => $result->first_name]);
$response = $this->getResponse($msg, 200, 'students.index');
} else {
$msg = trans('students::students.edit.alerts.error', ['student' => $input['first_name']]);
$response = $this->getResponse($msg, 400);
}
return $response;
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//$this->authorize($this);
$status = $this->service->delete($id);
return response()->json([
'success' => $status
]);
}
}