92 lines
2.8 KiB
PHP
92 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Services\ApiService;
|
|
use Illuminate\Http\Request;
|
|
|
|
class DisciplineController extends Controller
|
|
{
|
|
protected ApiService $api;
|
|
|
|
public function __construct(ApiService $api)
|
|
{
|
|
$this->api = $api;
|
|
}
|
|
|
|
public function index()
|
|
{
|
|
$response = $this->api->get('/employee/disciplines');
|
|
$directions = $this->api->get('/employee/directions')->json();
|
|
|
|
if ($response->successful()) {
|
|
$disciplines = $response->json();
|
|
$directionsList = collect($directions)->pluck('name', 'id')->toArray();
|
|
return view('disciplines.index', compact('disciplines', 'directionsList'));
|
|
}
|
|
|
|
abort($response->status());
|
|
}
|
|
|
|
public function create()
|
|
{
|
|
$directions = $this->api->get('/employee/directions')->json();
|
|
return view('disciplines.form', ['directions' => $directions]);
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$response = $this->api->post('/employee/disciplines', $request->all());
|
|
|
|
if ($response->successful()) {
|
|
return redirect()->route('disciplines.index')
|
|
->with('success', 'Дисциплина успешно создана');
|
|
}
|
|
|
|
return back()->withErrors($response->json()['errors'] ?? []);
|
|
}
|
|
|
|
public function edit($id)
|
|
{
|
|
$disciplineResponse = $this->api->get("/employee/disciplines/{$id}");
|
|
$directionsResponse = $this->api->get('/employee/directions');
|
|
|
|
if ($disciplineResponse->successful() && $directionsResponse->successful()) {
|
|
$discipline = $disciplineResponse->json();
|
|
$directions = $directionsResponse->json();
|
|
|
|
return view('disciplines.form', [
|
|
'discipline' => $discipline,
|
|
'directions' => $directions,
|
|
'isEdit' => true
|
|
]);
|
|
}
|
|
|
|
abort($disciplineResponse->status() ?? $directionsResponse->status());
|
|
}
|
|
|
|
public function update(Request $request, $id)
|
|
{
|
|
$response = $this->api->patch("/employee/disciplines/{$id}", $request->all());
|
|
|
|
if ($response->successful()) {
|
|
return redirect()->route('disciplines.index')
|
|
->with('success', 'Данные дисциплины обновлены');
|
|
}
|
|
|
|
return back()->withErrors($response->json()['errors'] ?? []);
|
|
}
|
|
|
|
public function destroy($id)
|
|
{
|
|
$response = $this->api->delete("/employee/disciplines/{$id}");
|
|
|
|
if ($response->successful()) {
|
|
return redirect()->route('disciplines.index')
|
|
->with('success', 'Дисциплина удалена');
|
|
}
|
|
|
|
return back()->withErrors($response->json()['error'] ?? 'Ошибка при удалении');
|
|
}
|
|
}
|