Files
PiAPS_University_Web/University.Web/app/Http/Controllers/GroupController.php

94 lines
2.7 KiB
PHP

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