From 5bfff5eb38ce0bb1f5539c9769e50fc640ae9339 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D1=8F=D1=87=D0=B5=D1=81=D0=BB=D0=B0=D0=B2=20=D0=98?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Sat, 31 May 2025 22:20:31 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D1=87=D1=82=D0=B8=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D0=B0=D0=B5=D1=82=20=D0=B3=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D1=80=D0=B0=D1=86=D0=B8=D1=8F=20=D0=B2=D0=B5=D0=B4=D0=BE=D0=BC?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Http/Controllers/StatementController.php | 41 +- .../views/statements/create.blade.php | 276 +++++++++++++ .../resources/views/statements/form.blade.php | 361 +++++------------- .../views/teacher/statements/index.blade.php | 63 +-- University.Web/routes/web.php | 7 +- 5 files changed, 434 insertions(+), 314 deletions(-) create mode 100644 University.Web/resources/views/statements/create.blade.php diff --git a/University.Web/app/Http/Controllers/StatementController.php b/University.Web/app/Http/Controllers/StatementController.php index 154cb4b..25982be 100644 --- a/University.Web/app/Http/Controllers/StatementController.php +++ b/University.Web/app/Http/Controllers/StatementController.php @@ -3,7 +3,6 @@ namespace App\Http\Controllers; use App\Services\ApiService; -use Exception; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; @@ -35,7 +34,7 @@ class StatementController extends Controller $types = $this->api->get('/employee/types')->json(); $teachers = $this->api->get('/employee/teachers')->json(); - return view('statements.form', [ + return view('statements.create', [ 'groups' => $groups, 'disciplines' => $disciplines, 'types' => $types, @@ -57,29 +56,30 @@ class StatementController extends Controller public function edit($id) { + $estimations = $this->api->get("/employee/estimations"); $statementResponse = $this->api->get("/employee/statements/{$id}"); $groupsResponse = $this->api->get('/employee/groups'); $disciplinesResponse = $this->api->get('/employee/disciplines'); $typesResponse = $this->api->get('/employee/types'); $teachersResponse = $this->api->get('/employee/teachers'); - - // Если employee API успешно ответил if ($statementResponse->successful() && $groupsResponse->successful() && $disciplinesResponse->successful() && $typesResponse->successful() && - $teachersResponse->successful()) { - + $teachersResponse->successful() && + $estimations->successful()) { return view('statements.form', [ 'statement' => $statementResponse->json(), 'groups' => $groupsResponse->json(), 'disciplines' => $disciplinesResponse->json(), 'types' => $typesResponse->json(), 'teachers' => $teachersResponse->json(), - 'isEdit' => true + 'isEdit' => true, + 'estimations' => $estimations->json() ]); } + $estimations2 = $this->api->get("/teacher/estimations"); $statementResponse2 = $this->api->get("/teacher/statements/{$id}"); $groupsResponse2 = $this->api->get('/teacher/groups'); $disciplinesResponse2 = $this->api->get('/teacher/disciplines'); @@ -90,7 +90,8 @@ class StatementController extends Controller $groupsResponse2->successful() && $disciplinesResponse2->successful() && $typesResponse2->successful() && - $teachersResponse2->successful()) { + $teachersResponse2->successful() && + $estimations2->successful()) { return view('statements.form', [ 'statement' => $statementResponse2->json(), @@ -98,7 +99,8 @@ class StatementController extends Controller 'disciplines' => $disciplinesResponse2->json(), 'types' => $typesResponse2->json(), 'teachers' => $teachersResponse2->json(), - 'isEdit' => true + 'isEdit' => true, + 'estimations' => $estimations2->json() ]); } @@ -110,6 +112,8 @@ class StatementController extends Controller $data = $request->all(); $data['is_finalized'] = $data['is_finalized'] ?? false; + Log::info('Updating statement data:', $data); + $response = $this->api->patch("/employee/statements/{$id}", $data); if ($response->successful()) { @@ -117,6 +121,11 @@ class StatementController extends Controller ->with('success', 'Ведомость успешно обновлена'); } + Log::error('Failed to update statement:', [ + 'status' => $response->status(), + 'response' => $response->json() + ]); + return back()->withErrors($response->json()['errors'] ?? []); } @@ -196,27 +205,27 @@ class StatementController extends Controller $apiParams = [ 'academic_year' => $request->input('academic_year'), - 'discipline_id' => $request->input('discipline_id') + 'discipline_id' => $request->input('discipline_id'), + 'group_id' => $request->input('group_id') ]; - $statementsResponse = $this->api->get('/teacher/statements', $apiParams); if (!$statementsResponse->successful()) { - throw new \Exception('Failed to load statements'); + throw new \Exception('Не удалось загрузить ведомости'); } - $groups = $this->api->get('/employee/groups')->json(); + $groupsResponse = $this->api->get('/teacher/groups'); + $groups = $groupsResponse->json()['data'] ?? $groupsResponse->json(); return view('teacher.statements.index', [ - 'statements' => $statementsResponse->json(), + 'statements' => $statementsResponse->json()['data'] ?? $statementsResponse->json(), 'disciplines' => $disciplines, - 'filters' => $request->only(['academic_year', 'discipline_id']), + 'filters' => $request->only(['academic_year', 'discipline_id', 'group_id']), 'groups' => $groups ]); } catch (\Exception $e) { Log::error('Ошибка в myStatements: ' . $e->getMessage()); - return back()->with('error', $e->getMessage())->withInput(); } } diff --git a/University.Web/resources/views/statements/create.blade.php b/University.Web/resources/views/statements/create.blade.php new file mode 100644 index 0000000..2d0c910 --- /dev/null +++ b/University.Web/resources/views/statements/create.blade.php @@ -0,0 +1,276 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
+ {{ isset($statement) ? 'Редактирование ведомости' : 'Создание новой ведомости' }} +
+ +
+
+ @csrf + @if(isset($statement)) + @method('PATCH') + @endif + +
+ +
+ + @error('discipline_id') + + {{ $message }} + + @enderror +
+
+ +
+ +
+ + @error('group_id') + + {{ $message }} + + @enderror +
+
+ +
+ +
+ + @error('teacher_id') + + {{ $message }} + + @enderror +
+
+ +
+ +
+ + @error('type_certification_id') + + {{ $message }} + + @enderror +
+
+ +
+ +
+ + @error('semester') + + {{ $message }} + + @enderror +
+
+ +
+ +
+ + @error('academic_year') + + {{ $message }} + + @enderror +
+
+ +
+ +
+ + @error('hours') + + {{ $message }} + + @enderror +
+
+ +
+ +
+ + @error('exam_date') + + {{ $message }} + + @enderror + +
+
+ +
+
+ + Отмена +
+
+
+
+
+
+
+
+ +@endsection diff --git a/University.Web/resources/views/statements/form.blade.php b/University.Web/resources/views/statements/form.blade.php index 71f5e3f..76ce592 100644 --- a/University.Web/resources/views/statements/form.blade.php +++ b/University.Web/resources/views/statements/form.blade.php @@ -1,277 +1,110 @@ @extends('layouts.app') - +@section('links') + + +@endsection @section('content') -
-
-
-
-
- {{ isset($statement) ? 'Редактирование ведомости' : 'Создание новой ведомости' }} -
+
+
+ +
+
+ Номер ведомости: {{ $statement['id'] ?? 'Не указано' }} +
+
+ Дата: {{ \Carbon\Carbon::parse($statement['exam_date'])->format('d.m.Y') ?? 'Не указано' }} +
+
+ Учебный год: {{ $statement['academic_year'] ?? 'Не указано' }} +
+
-
-
- @csrf - @if(isset($statement)) - @method('PATCH') - @endif +
+
+ Дисциплина: {{ $statement['discipline']['name'] ?? 'Не указано' }} +
+
+ Преподаватель: + {{ $statement['teacher']['surname'] ?? '' }} + {{ $statement['teacher']['name'] ?? '' }} + {{ $statement['teacher']['patronymic'] ?? '' }} +
+
+ Вид контроля: {{ $statement['type_certification']['name'] ?? 'Не указано' }} +
+
-
- -
- - @error('discipline_id') - - {{ $message }} - - @enderror -
-
+
+
+ Статус: + @if(($statement['status']['id'] ?? 0) == 3) + + Проведена + + @else + + Не проведена + + @endif +
+
+
+ + @csrf + @method('PATCH') + +
+ + + + Скачать ведомость без оценок + + + Назад + -
- -
- - @error('group_id') - - {{ $message }} - - @enderror -
-
+
-
- -
- - @error('teacher_id') - - {{ $message }} - - @enderror -
-
- -
- -
- - @error('type_certification_id') - - {{ $message }} - - @enderror -
-
- -
- -
- + + @foreach($estimations as $estimation) + @endforeach - @error('semester') - - {{ $message }} - - @enderror -
-
- -
- -
- - @error('academic_year') - - {{ $message }} - - @enderror -
-
- -
- -
- - @error('hours') - - {{ $message }} - - @enderror -
-
- -
- -
- - @error('exam_date') - - {{ $message }} - - @enderror - -
-
- -
-
- - Отмена -
-
-
-
+ + + @endforeach + +
-
+
- @endsection diff --git a/University.Web/resources/views/teacher/statements/index.blade.php b/University.Web/resources/views/teacher/statements/index.blade.php index 0aa1f26..7de0536 100644 --- a/University.Web/resources/views/teacher/statements/index.blade.php +++ b/University.Web/resources/views/teacher/statements/index.blade.php @@ -52,8 +52,12 @@ @@ -64,6 +68,11 @@ Применить фильтры
+
+ +
@@ -72,21 +81,24 @@
@if(count($statements) > 0)
- +
- - - - - - - + + + + + + + @foreach($statements as $statement) + - @endforeach @@ -149,4 +143,15 @@ @endif + @endsection diff --git a/University.Web/routes/web.php b/University.Web/routes/web.php index e675413..671c6e9 100644 --- a/University.Web/routes/web.php +++ b/University.Web/routes/web.php @@ -10,9 +10,7 @@ use App\Http\Controllers\StatisticController; use App\Http\Controllers\StudentController; use Illuminate\Support\Facades\Route; -Route::get('/', function () { - return view('welcome'); -}); +Route::redirect('/', '/login'); Route::controller(AuthController::class)->group(function () { Route::get('/login', 'showLoginForm')->name('login'); @@ -42,9 +40,8 @@ Route::middleware(['jwt.auth'])->group(function () { Route::resource('statements', StatementController::class)->except(['show']); Route::get('/statements/search', [StatementController::class, 'search'])->name('teacher.statements.search'); Route::get('/my/statements', [StatementController::class, 'myStatements'])->name('teacher.statements.index'); - Route::get('/statements/pdf', [StatementController::class, 'generatePdf'])->name('teacher.statements.generatePdf'); + Route::get('/statements/{statementId}/pdf', [StatementController::class, 'generatePdf'])->name('teacher.statements.generatePdf'); Route::get('/statements/sendFinalizationCode', [StatementController::class, 'finalize'])->name('teacher.statements.sendFinalizationCode'); -/* Route::get('/statements/{id}/sendFinalizationCode', [StatementController::class, 'myStatements'])->name('teacher.statements.sendFinalizationCode');*/ // Statistics Route::get('/statistics', [StatisticController::class, 'index'])->name('statistics.index');
ДисциплинаГруппаУчебный годСеместрТип аттестацииСтатусНомер ведомостиДисциплинаГруппаУчебный годСеместрТип аттестацииСтатус
+
{{ $statement['id'] }}
+
{{ $statement['discipline']['name'] }} @@ -108,7 +120,7 @@
- @if($statement['is_finalized']) + @if($statement['status']['id'] == 3) Проведена @@ -119,24 +131,6 @@ @endif
- - - - - - @if(!$statement['is_finalized']) -
- @csrf - -
- @endif -