Compare commits

..

34 Commits

Author SHA1 Message Date
aslan 2279341988 change resorce scoping
https://laravel.com/docs/10.x/controllers#restful-scoping-resource-routes
2024-02-08 18:34:45 +03:00
aslan 397f0faf19 add DEMO-url to README.md 2024-02-08 16:21:24 +03:00
aslan 287c0eac76 add seeders 2024-02-08 16:20:05 +03:00
aslan 1491d8b425 Merge remote-tracking branch 'origin/main' 2024-02-08 16:01:46 +03:00
aslan 00266b9fa0 Refactoring Faculty and Education Institution views 2024-02-08 16:01:40 +03:00
aslan 3ef7a84f7e add Department resource 2024-02-08 16:00:06 +03:00
aslan 953a6b3631 add Department resource 2024-02-08 15:59:44 +03:00
aslan 941da60c6f refactor educationalInstitution 2024-02-07 19:27:25 +03:00
aslan ebade01982 add refresh to migrate artisan method 2024-02-07 16:34:24 +03:00
aslan b11015ae8f refactored Educational Institutions 2024-02-07 16:34:04 +03:00
aslan 93592992b7 refactored file migration, view and controller 2024-02-07 16:33:34 +03:00
aslan b1cd352165 refactored routes 2024-02-07 16:32:42 +03:00
aslan 1670434c8c add Faculty resource 2024-02-07 16:30:49 +03:00
aslan 06c16d95c1 add EducationalInstitution resource 2024-02-07 10:18:46 +03:00
aslan cc7d6eb5ea fix CI deploy 2024-02-05 13:14:29 +03:00
aslan 4be02e663b fix CI deploy 2024-02-05 13:12:58 +03:00
aslan a412c49fe4 fix CI deploy 2024-02-05 13:06:02 +03:00
aslan b30c3ed2f8 fix CI deploy 2024-02-05 13:05:07 +03:00
aslan ecc2ccfc8b fix CI deploy 2024-02-05 12:55:31 +03:00
aslan 19e2eb9816 fix CI deploy 2024-02-05 12:51:52 +03:00
aslan 3ef43c0500 fix CI deploy 2024-02-05 12:47:47 +03:00
aslan 8dbef98bc4 fix CI deploy 2024-02-05 12:46:13 +03:00
aslan 6439e6b80a fix CI deploy 2024-02-05 12:31:28 +03:00
aslan 1cc9edc996 fix CI deploy 2024-02-05 12:27:21 +03:00
aslan a2e7583d2c fix CI use to uses 2024-02-05 11:48:00 +03:00
aslan 0651286548 fix CI use to uses 2024-02-05 11:47:28 +03:00
aslan 31993000e6 fix CI sqlite 3 force yes 2024-02-05 11:43:52 +03:00
aslan 153f50da70 fix CI php -v 8.3 2024-02-05 11:40:06 +03:00
aslan 6ccbac1ec2 fix deploy 2024-02-05 11:39:12 +03:00
aslan 355d24f0ee add delete test database before touch database.sqlite 2024-02-05 10:07:19 +03:00
aslan 28bdbe64dd add make setup-test 2024-02-05 10:05:57 +03:00
aslan 4c50cb0085 update to 8.3 php -v 2024-02-05 09:55:33 +03:00
aslan 2386c33a25 delete field filename to File and composer update 2024-02-05 09:53:38 +03:00
aslan cd52d23f81 Merge pull request 'design changes for admin-layout.blade.php and reception-screen.blade.php' (#13) from RomanGolienko/Roman_applicant-site:main into main
Reviewed-on: http://172.17.254.104/aslan/applicant-site/pulls/13
2024-02-01 14:27:25 +03:00
52 changed files with 1875 additions and 287 deletions

View File

@ -14,7 +14,7 @@ jobs:
strategy:
matrix:
php-versions: [ '8.2' ]
php-versions: [ '8.3' ]
node-version: ['20.x']
steps:
@ -49,7 +49,7 @@ jobs:
run: composer install # will work
- name: Setup sqlite3 driver
run: apt install php${{ matrix.php-versions }}-sqlite3
run: apt install php${{ matrix.php-versions }}-sqlite3 -y
- name: Setup project
run: make setup
@ -59,3 +59,21 @@ jobs:
- name: Check tests
run: make test
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
script: |
cd /var/www/test-testabit/
git stash
git pull --rebase
make setup-test

View File

@ -9,12 +9,22 @@ setup:
cp -n .env.example .env
php artisan key:gen --ansi
touch database/database.sqlite
php artisan migrate
php artisan migrate:refresh
php artisan db:seed
npm ci
npm run build
make ide-helper
setup-test:
composer install --no-plugins --no-scripts
php artisan key:gen --ansi
rm database/database.sqlite
touch database/database.sqlite
php artisan migrate:refresh
php artisan db:seed
npm ci
npm run build
watch:
npm run watch

View File

@ -2,7 +2,11 @@
Сайт с Админкой для редактирования Экрана приема
Сайт:
```text
Сайт: http://test-testabit.mkgtu.ru
логин: test@example.com
пароль: 123456
```
## Requirements:
- PHP ^8.2
@ -16,6 +20,7 @@ git clone http://172.17.254.104/aslan/applicant-site.git
cd applicant-site
make setup
```
2255
## Project start local

View File

@ -0,0 +1,75 @@
<?php
namespace App\Http\Controllers\Catalog;
use App\Http\Controllers\Controller;
use App\Http\Requests\StoreDepartmentRequest;
use App\Http\Requests\UpdateDepartmentRequest;
use App\Models\Department;
use App\Models\Faculty;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use Illuminate\Foundation\Application;
use Illuminate\Http\RedirectResponse;
class DepartmentController extends Controller
{
public function index(): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
{
$departments = Department::all();
return view('catalog.department.index', compact('departments'));
}
public function create(): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
{
$faculties = Faculty::pluck('name', 'id');
return view('catalog.department.create', compact('faculties'));
}
public function store(StoreDepartmentRequest $request): RedirectResponse
{
$validated = $request->validated();
$department = new Department();
$department->name = $validated['name'];
$department->description = $validated['description'];
$department->position = $validated['position'];
$department->faculty_id = $validated['faculty_id'];
$department->save();
return redirect()->route('departments.index');
}
public function show(Department $department): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
{
return view('catalog.department.show', compact('department'));
}
public function edit(Department $department): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
{
$faculties = Faculty::pluck('name', 'id');
return view('catalog.department.edit', compact('department', 'faculties'));
}
/**
* Update the specified resource in storage.
*/
public function update(UpdateDepartmentRequest $request, Department $department)
{
$validated = $request->validated();
$department->name = $validated['name'];
$department->description = $validated['description'];
$department->position = $validated['position'];
$department->faculty_id = $validated['faculty_id'];
$department->save();
return redirect()->route('departments.index');
}
public function destroy(Department $department): RedirectResponse
{
$department->delete();
return redirect()->route('departments.index');
}
}

View File

@ -0,0 +1,70 @@
<?php
namespace App\Http\Controllers\Catalog;
use App\Http\Controllers\Controller;
use App\Http\Requests\StoreEducationalInstitutionRequest;
use App\Http\Requests\UpdateEducationalInstitutionRequest;
use App\Models\EducationalInstitution;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use Illuminate\Foundation\Application;
class EducationalInstitutionController extends Controller
{
public function index(): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
{
$educationalInstitutions = EducationalInstitution::all();
return view('catalog.educational-institution.index', compact('educationalInstitutions'));
}
public function create(): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
{
return view('catalog.educational-institution.create');
}
public function store(StoreEducationalInstitutionRequest $request)
{
$validated = $request->validated();
$educationalInstitution = new EducationalInstitution();
$educationalInstitution->name = $validated['name'];
$educationalInstitution->description = $validated['description'];
$educationalInstitution->position = $validated['position'];
$educationalInstitution->save();
return redirect()->route('educational-institutions.index');
}
public function show(EducationalInstitution $educationalInstitution)
{
return view('catalog.educational-institution.show', compact('educationalInstitution'));
}
public function edit(EducationalInstitution $educationalInstitution)
{
return view('catalog.educational-institution.edit', compact('educationalInstitution'));
}
public function update(UpdateEducationalInstitutionRequest $request, EducationalInstitution $educationalInstitution)
{
$validated = $request->validated();
$educationalInstitution->name = $validated['name'];
$educationalInstitution->description = $validated['description'];
$educationalInstitution->position = $validated['position'];
$educationalInstitution->save();
return redirect()->route('educational-institutions.index');
}
public function destroy(EducationalInstitution $educationalInstitution)
{
if ($educationalInstitution->faculties()->exists()) {
return back();
}
$educationalInstitution->delete();
return redirect()->route('educational-institutions.index');
}
}

View File

@ -0,0 +1,76 @@
<?php
namespace App\Http\Controllers\Catalog;
use App\Http\Controllers\Controller;
use App\Http\Requests\StoreFacultyRequest;
use App\Http\Requests\UpdateFacultyRequest;
use App\Models\Department;
use App\Models\EducationalInstitution;
use App\Models\Faculty;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use Illuminate\Foundation\Application;
use Illuminate\Http\RedirectResponse;
class FacultyController extends Controller
{
public function index(): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
{
$faculties = Faculty::all();
return view('catalog.faculty.index', compact('faculties'));
}
public function create(): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
{
$educationalInstitutions = EducationalInstitution::pluck('name', 'id');
return view('catalog.faculty.create', compact('educationalInstitutions'));
}
public function store(StoreFacultyRequest $request): RedirectResponse
{
$validated = $request->validated();
$faculty = new Faculty();
$faculty->name = $validated['name'];
$faculty->description = $validated['description'];
$faculty->position = $validated['position'];
$faculty->educational_institution_id = $validated['educational_institution_id'];
$faculty->save();
return redirect()->route('faculties.index');
}
public function show(Faculty $faculty): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
{
return view('catalog.faculty.show', compact('faculty'));
}
public function edit(Faculty $faculty): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
{
$educationalInstitutions = EducationalInstitution::pluck('name', 'id');
return view('catalog.faculty.edit', compact('faculty', 'educationalInstitutions'));
}
public function update(UpdateFacultyRequest $request, Faculty $faculty): RedirectResponse
{
$validated = $request->validated();
$faculty->name = $validated['name'];
$faculty->description = $validated['description'];
$faculty->position = $validated['position'];
$faculty->educational_institution_id = $validated['educational_institution_id'];
$faculty->save();
return redirect()->route('faculties.index');
}
public function destroy(Faculty $faculty): RedirectResponse
{
if ($faculty->departments()->exists()) {
return back();
}
$faculty->delete();
return redirect()->route('faculties.index');
}
}

View File

@ -35,9 +35,8 @@ class FileController extends Controller
abort_if(Auth::guest(), 403);
$receptionScreens = ReceptionScreen::pluck('name', 'id');
$idsReceptionScreens = $receptionScreens->keys()->toArray();
$files = File::where('reception_screen_id', '=', $idReceptionScreen)->get();
return view('files.create', compact('receptionScreens', 'idsReceptionScreens', 'idReceptionScreen', 'files'));
return view('files.create', compact('receptionScreens', 'idReceptionScreen', 'files'));
}
public function store(StoreFileRequest $request)

View File

@ -0,0 +1,32 @@
<?php
namespace App\Http\Requests;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class StoreDepartmentRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{
return [
'position' => 'required|int|max:255',
'name' => 'required|string|max:255|unique:educational_institutions,name',
'description' => 'string',
'faculty_id' => 'required|int'
];
}
}

View File

@ -0,0 +1,30 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreEducationalInstitutionRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'position' => 'int|max:255',
'name' => 'required|string|max:255|unique:educational_institutions,name',
'description' => 'string',
];
}
}

View File

@ -0,0 +1,29 @@
<?php
namespace App\Http\Requests;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class StoreFacultyRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{
return [
'position' => 'int|max:255',
'name' => 'required|string|max:255|unique:educational_institutions,name',
'description' => 'string',
'educational_institution_id' => 'int'
];
}
}

View File

@ -0,0 +1,37 @@
<?php
namespace App\Http\Requests;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class UpdateDepartmentRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'position' => 'int|max:255',
'description' => 'string',
'faculty_id' => 'int|required',
'name' => [
'required',
'string',
'max:255',
"unique:educational_institutions,name,{$this->department->id}",
],
];
}
}

View File

@ -0,0 +1,37 @@
<?php
namespace App\Http\Requests;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class UpdateEducationalInstitutionRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, ValidationRule|array|string>
*/
public function rules(): array
{
return [
'position' => 'int|max:255',
'description' => 'string',
'name' => [
'required',
'string',
'max:255',
"unique:educational_institutions,name,{$this->educational_institution->id}",
],
];
}
}

View File

@ -0,0 +1,31 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UpdateFacultyRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'position' => 'int|max:255',
'name' => 'required|string|max:255|unique:educational_institutions,name',
'description' => 'string',
'educational_institution_id' => 'int'
];
}
}

24
app/Models/Department.php Normal file
View File

@ -0,0 +1,24 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class Department extends Model
{
use HasFactory;
protected $fillable = [
'id',
'name',
'description',
'position',
];
public function faculty(): BelongsTo
{
return $this->belongsTo(Faculty::class);
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
class EducationalInstitution extends Model
{
use HasFactory;
protected $fillable = [
'id',
'name',
'description',
'position',
];
public function faculties(): HasMany
{
return $this->hasMany('App\Models\Faculty', 'educational_institution_id');
}
}

30
app/Models/Faculty.php Normal file
View File

@ -0,0 +1,30 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
class Faculty extends Model
{
use HasFactory;
protected $fillable = [
'id',
'name',
'description',
'position',
];
public function educationalInstitution(): BelongsTo
{
return $this->belongsTo(EducationalInstitution::class);
}
public function departments(): HasMany
{
return $this->hasMany('App\Models\Department', 'faculty_id');
}
}

View File

@ -0,0 +1,66 @@
<?php
namespace App\Policies;
use App\Models\Department;
use App\Models\User;
use Illuminate\Auth\Access\Response;
class DepartmentPolicy
{
/**
* Determine whether the user can view any models.
*/
public function viewAny(User $user): bool
{
//
}
/**
* Determine whether the user can view the model.
*/
public function view(User $user, Department $department): bool
{
//
}
/**
* Determine whether the user can create models.
*/
public function create(User $user): bool
{
//
}
/**
* Determine whether the user can update the model.
*/
public function update(User $user, Department $department): bool
{
//
}
/**
* Determine whether the user can delete the model.
*/
public function delete(User $user, Department $department): bool
{
//
}
/**
* Determine whether the user can restore the model.
*/
public function restore(User $user, Department $department): bool
{
//
}
/**
* Determine whether the user can permanently delete the model.
*/
public function forceDelete(User $user, Department $department): bool
{
//
}
}

View File

@ -0,0 +1,66 @@
<?php
namespace App\Policies;
use App\Models\EducationalInstitution;
use App\Models\User;
use Illuminate\Auth\Access\Response;
class EducationalInstitutionPolicy
{
/**
* Determine whether the user can view any models.
*/
public function viewAny(User $user): bool
{
//
}
/**
* Determine whether the user can view the model.
*/
public function view(User $user, EducationalInstitution $educationalInstitution): bool
{
//
}
/**
* Determine whether the user can create models.
*/
public function create(User $user): bool
{
//
}
/**
* Determine whether the user can update the model.
*/
public function update(User $user, EducationalInstitution $educationalInstitution): bool
{
//
}
/**
* Determine whether the user can delete the model.
*/
public function delete(User $user, EducationalInstitution $educationalInstitution): bool
{
//
}
/**
* Determine whether the user can restore the model.
*/
public function restore(User $user, EducationalInstitution $educationalInstitution): bool
{
//
}
/**
* Determine whether the user can permanently delete the model.
*/
public function forceDelete(User $user, EducationalInstitution $educationalInstitution): bool
{
//
}
}

View File

@ -0,0 +1,66 @@
<?php
namespace App\Policies;
use App\Models\Faculty;
use App\Models\User;
use Illuminate\Auth\Access\Response;
class FacultyPolicy
{
/**
* Determine whether the user can view any models.
*/
public function viewAny(User $user): bool
{
//
}
/**
* Determine whether the user can view the model.
*/
public function view(User $user, Faculty $faculty): bool
{
//
}
/**
* Determine whether the user can create models.
*/
public function create(User $user): bool
{
//
}
/**
* Determine whether the user can update the model.
*/
public function update(User $user, Faculty $faculty): bool
{
//
}
/**
* Determine whether the user can delete the model.
*/
public function delete(User $user, Faculty $faculty): bool
{
//
}
/**
* Determine whether the user can restore the model.
*/
public function restore(User $user, Faculty $faculty): bool
{
//
}
/**
* Determine whether the user can permanently delete the model.
*/
public function forceDelete(User $user, Faculty $faculty): bool
{
//
}
}

View File

@ -17,7 +17,7 @@ class RouteServiceProvider extends ServiceProvider
*
* @var string
*/
public const HOME = '/dashboard';
public const HOME = '/admin/dashboard';
/**
* Define your route model bindings, pattern filters, and other route configuration.

View File

@ -8,24 +8,24 @@
],
"license": "MIT",
"require": {
"php": "^8.1|8.2",
"php": "^8.3",
"guzzlehttp/guzzle": "^7.8.1",
"imangazaliev/didom": "^2.0.1",
"laravel/framework": "^10.42.0",
"laravel/framework": "^10.43.0",
"laravel/sanctum": "^3.3.3",
"laravel/tinker": "^2.9.0",
"laravel/ui": "^4.4.0",
"laravelcollective/html": "^6.4.1",
"league/flysystem": "^3.23.1"
"league/flysystem": "^3.24.0"
},
"require-dev": {
"fakerphp/faker": "^1.23.1",
"laravel/breeze": "^1.28.1",
"laravel/pint": "^1.13.10",
"laravel/sail": "^1.27.2",
"laravel/sail": "^1.27.3",
"mockery/mockery": "^1.6.7",
"nunomaduro/collision": "^7.10.0",
"phpunit/phpunit": "^10.5.9",
"phpunit/phpunit": "^10.5.10",
"spatie/laravel-ignition": "^2.4.1",
"barryvdh/laravel-ide-helper": "^2.13.0",
"squizlabs/php_codesniffer": "^3.8.1",

311
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "39967a89029d0be1b3179419bf4d8511",
"content-hash": "3c31e42f7cfc5921b4dfaffd75926ba5",
"packages": [
{
"name": "brick/math",
@ -1099,20 +1099,20 @@
},
{
"name": "laravel/framework",
"version": "v10.42.0",
"version": "v10.43.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
"reference": "fef1aff874a6749c44f8e142e5764eab8cb96890"
"reference": "4f7802dfc9993cb57cf69615491ce1a7eb2e9529"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/fef1aff874a6749c44f8e142e5764eab8cb96890",
"reference": "fef1aff874a6749c44f8e142e5764eab8cb96890",
"url": "https://api.github.com/repos/laravel/framework/zipball/4f7802dfc9993cb57cf69615491ce1a7eb2e9529",
"reference": "4f7802dfc9993cb57cf69615491ce1a7eb2e9529",
"shasum": ""
},
"require": {
"brick/math": "^0.9.3|^0.10.2|^0.11",
"brick/math": "^0.9.3|^0.10.2|^0.11|^0.12",
"composer-runtime-api": "^2.2",
"doctrine/inflector": "^2.0.5",
"dragonmantank/cron-expression": "^3.3.2",
@ -1300,7 +1300,7 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
"time": "2024-01-23T15:07:56+00:00"
"time": "2024-01-30T16:25:02+00:00"
},
{
"name": "laravel/prompts",
@ -1688,16 +1688,16 @@
},
{
"name": "league/commonmark",
"version": "2.4.1",
"version": "2.4.2",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/commonmark.git",
"reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5"
"reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/commonmark/zipball/3669d6d5f7a47a93c08ddff335e6d945481a1dd5",
"reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5",
"url": "https://api.github.com/repos/thephpleague/commonmark/zipball/91c24291965bd6d7c46c46a12ba7492f83b1cadf",
"reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf",
"shasum": ""
},
"require": {
@ -1710,7 +1710,7 @@
},
"require-dev": {
"cebe/markdown": "^1.0",
"commonmark/cmark": "0.30.0",
"commonmark/cmark": "0.30.3",
"commonmark/commonmark.js": "0.30.0",
"composer/package-versions-deprecated": "^1.8",
"embed/embed": "^4.4",
@ -1720,10 +1720,10 @@
"michelf/php-markdown": "^1.4 || ^2.0",
"nyholm/psr7": "^1.5",
"phpstan/phpstan": "^1.8.2",
"phpunit/phpunit": "^9.5.21",
"phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0",
"scrutinizer/ocular": "^1.8.1",
"symfony/finder": "^5.3 | ^6.0",
"symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0",
"symfony/finder": "^5.3 | ^6.0 || ^7.0",
"symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 || ^7.0",
"unleashedtech/php-coding-standard": "^3.1.1",
"vimeo/psalm": "^4.24.0 || ^5.0.0"
},
@ -1790,7 +1790,7 @@
"type": "tidelift"
}
],
"time": "2023-08-30T16:55:00+00:00"
"time": "2024-02-02T11:59:32+00:00"
},
{
"name": "league/config",
@ -1876,16 +1876,16 @@
},
{
"name": "league/flysystem",
"version": "3.23.1",
"version": "3.24.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
"reference": "199e1aebbe3e62bd39f4d4fc8c61ce0b3786197e"
"reference": "b25a361508c407563b34fac6f64a8a17a8819675"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/199e1aebbe3e62bd39f4d4fc8c61ce0b3786197e",
"reference": "199e1aebbe3e62bd39f4d4fc8c61ce0b3786197e",
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/b25a361508c407563b34fac6f64a8a17a8819675",
"reference": "b25a361508c407563b34fac6f64a8a17a8819675",
"shasum": ""
},
"require": {
@ -1905,7 +1905,7 @@
"require-dev": {
"async-aws/s3": "^1.5 || ^2.0",
"async-aws/simple-s3": "^1.1 || ^2.0",
"aws/aws-sdk-php": "^3.220.0",
"aws/aws-sdk-php": "^3.295.10",
"composer/semver": "^3.0",
"ext-fileinfo": "*",
"ext-ftp": "*",
@ -1916,7 +1916,7 @@
"phpseclib/phpseclib": "^3.0.34",
"phpstan/phpstan": "^1.10",
"phpunit/phpunit": "^9.5.11|^10.0",
"sabre/dav": "^4.3.1"
"sabre/dav": "^4.6.0"
},
"type": "library",
"autoload": {
@ -1950,7 +1950,7 @@
],
"support": {
"issues": "https://github.com/thephpleague/flysystem/issues",
"source": "https://github.com/thephpleague/flysystem/tree/3.23.1"
"source": "https://github.com/thephpleague/flysystem/tree/3.24.0"
},
"funding": [
{
@ -1962,7 +1962,7 @@
"type": "github"
}
],
"time": "2024-01-26T18:42:03+00:00"
"time": "2024-02-04T12:10:17+00:00"
},
{
"name": "league/flysystem-local",
@ -2183,16 +2183,16 @@
},
{
"name": "nesbot/carbon",
"version": "2.72.2",
"version": "2.72.3",
"source": {
"type": "git",
"url": "https://github.com/briannesbitt/Carbon.git",
"reference": "3e7edc41b58d65509baeb0d4a14c8fa41d627130"
"reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/3e7edc41b58d65509baeb0d4a14c8fa41d627130",
"reference": "3e7edc41b58d65509baeb0d4a14c8fa41d627130",
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/0c6fd108360c562f6e4fd1dedb8233b423e91c83",
"reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83",
"shasum": ""
},
"require": {
@ -2286,7 +2286,7 @@
"type": "tidelift"
}
],
"time": "2024-01-19T00:21:53+00:00"
"time": "2024-01-25T10:35:09+00:00"
},
{
"name": "nette/schema",
@ -3371,16 +3371,16 @@
},
{
"name": "symfony/console",
"version": "v6.4.2",
"version": "v6.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "0254811a143e6bc6c8deea08b589a7e68a37f625"
"reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/0254811a143e6bc6c8deea08b589a7e68a37f625",
"reference": "0254811a143e6bc6c8deea08b589a7e68a37f625",
"url": "https://api.github.com/repos/symfony/console/zipball/2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e",
"reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e",
"shasum": ""
},
"require": {
@ -3445,7 +3445,7 @@
"terminal"
],
"support": {
"source": "https://github.com/symfony/console/tree/v6.4.2"
"source": "https://github.com/symfony/console/tree/v6.4.3"
},
"funding": [
{
@ -3461,20 +3461,20 @@
"type": "tidelift"
}
],
"time": "2023-12-10T16:15:48+00:00"
"time": "2024-01-23T14:51:35+00:00"
},
{
"name": "symfony/css-selector",
"version": "v7.0.0",
"version": "v7.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
"reference": "bb51d46e53ef8d50d523f0c5faedba056a27943e"
"reference": "ec60a4edf94e63b0556b6a0888548bb400a3a3be"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/css-selector/zipball/bb51d46e53ef8d50d523f0c5faedba056a27943e",
"reference": "bb51d46e53ef8d50d523f0c5faedba056a27943e",
"url": "https://api.github.com/repos/symfony/css-selector/zipball/ec60a4edf94e63b0556b6a0888548bb400a3a3be",
"reference": "ec60a4edf94e63b0556b6a0888548bb400a3a3be",
"shasum": ""
},
"require": {
@ -3510,7 +3510,7 @@
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/css-selector/tree/v7.0.0"
"source": "https://github.com/symfony/css-selector/tree/v7.0.3"
},
"funding": [
{
@ -3526,7 +3526,7 @@
"type": "tidelift"
}
],
"time": "2023-10-31T17:59:56+00:00"
"time": "2024-01-23T15:02:46+00:00"
},
{
"name": "symfony/deprecation-contracts",
@ -3597,16 +3597,16 @@
},
{
"name": "symfony/error-handler",
"version": "v6.4.0",
"version": "v6.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
"reference": "c873490a1c97b3a0a4838afc36ff36c112d02788"
"reference": "6dc3c76a278b77f01d864a6005d640822c6f26a6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/error-handler/zipball/c873490a1c97b3a0a4838afc36ff36c112d02788",
"reference": "c873490a1c97b3a0a4838afc36ff36c112d02788",
"url": "https://api.github.com/repos/symfony/error-handler/zipball/6dc3c76a278b77f01d864a6005d640822c6f26a6",
"reference": "6dc3c76a278b77f01d864a6005d640822c6f26a6",
"shasum": ""
},
"require": {
@ -3652,7 +3652,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/error-handler/tree/v6.4.0"
"source": "https://github.com/symfony/error-handler/tree/v6.4.3"
},
"funding": [
{
@ -3668,20 +3668,20 @@
"type": "tidelift"
}
],
"time": "2023-10-18T09:43:34+00:00"
"time": "2024-01-29T15:40:36+00:00"
},
{
"name": "symfony/event-dispatcher",
"version": "v7.0.2",
"version": "v7.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
"reference": "098b62ae81fdd6cbf941f355059f617db28f4f9a"
"reference": "834c28d533dd0636f910909d01b9ff45cc094b5e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/098b62ae81fdd6cbf941f355059f617db28f4f9a",
"reference": "098b62ae81fdd6cbf941f355059f617db28f4f9a",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/834c28d533dd0636f910909d01b9ff45cc094b5e",
"reference": "834c28d533dd0636f910909d01b9ff45cc094b5e",
"shasum": ""
},
"require": {
@ -3732,7 +3732,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/event-dispatcher/tree/v7.0.2"
"source": "https://github.com/symfony/event-dispatcher/tree/v7.0.3"
},
"funding": [
{
@ -3748,7 +3748,7 @@
"type": "tidelift"
}
],
"time": "2023-12-27T22:24:19+00:00"
"time": "2024-01-23T15:02:46+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
@ -3892,16 +3892,16 @@
},
{
"name": "symfony/http-foundation",
"version": "v6.4.2",
"version": "v6.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
"reference": "172d807f9ef3fc3fbed8377cc57c20d389269271"
"reference": "5677bdf7cade4619cb17fc9e1e7b31ec392244a9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/172d807f9ef3fc3fbed8377cc57c20d389269271",
"reference": "172d807f9ef3fc3fbed8377cc57c20d389269271",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/5677bdf7cade4619cb17fc9e1e7b31ec392244a9",
"reference": "5677bdf7cade4619cb17fc9e1e7b31ec392244a9",
"shasum": ""
},
"require": {
@ -3949,7 +3949,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/http-foundation/tree/v6.4.2"
"source": "https://github.com/symfony/http-foundation/tree/v6.4.3"
},
"funding": [
{
@ -3965,20 +3965,20 @@
"type": "tidelift"
}
],
"time": "2023-12-27T22:16:42+00:00"
"time": "2024-01-23T14:51:35+00:00"
},
{
"name": "symfony/http-kernel",
"version": "v6.4.2",
"version": "v6.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
"reference": "13e8387320b5942d0dc408440c888e2d526efef4"
"reference": "9c6ec4e543044f7568a53a76ab1484ecd30637a2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/13e8387320b5942d0dc408440c888e2d526efef4",
"reference": "13e8387320b5942d0dc408440c888e2d526efef4",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/9c6ec4e543044f7568a53a76ab1484ecd30637a2",
"reference": "9c6ec4e543044f7568a53a76ab1484ecd30637a2",
"shasum": ""
},
"require": {
@ -4062,7 +4062,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/http-kernel/tree/v6.4.2"
"source": "https://github.com/symfony/http-kernel/tree/v6.4.3"
},
"funding": [
{
@ -4078,20 +4078,20 @@
"type": "tidelift"
}
],
"time": "2023-12-30T15:31:44+00:00"
"time": "2024-01-31T07:21:29+00:00"
},
{
"name": "symfony/mailer",
"version": "v6.4.2",
"version": "v6.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/mailer.git",
"reference": "6da89e5c9202f129717a770a03183fb140720168"
"reference": "74412c62f88a85a41b61f0b71ab0afcaad6f03ee"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/mailer/zipball/6da89e5c9202f129717a770a03183fb140720168",
"reference": "6da89e5c9202f129717a770a03183fb140720168",
"url": "https://api.github.com/repos/symfony/mailer/zipball/74412c62f88a85a41b61f0b71ab0afcaad6f03ee",
"reference": "74412c62f88a85a41b61f0b71ab0afcaad6f03ee",
"shasum": ""
},
"require": {
@ -4142,7 +4142,7 @@
"description": "Helps sending emails",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/mailer/tree/v6.4.2"
"source": "https://github.com/symfony/mailer/tree/v6.4.3"
},
"funding": [
{
@ -4158,20 +4158,20 @@
"type": "tidelift"
}
],
"time": "2023-12-19T09:12:31+00:00"
"time": "2024-01-29T15:01:07+00:00"
},
{
"name": "symfony/mime",
"version": "v6.4.0",
"version": "v6.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
"reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205"
"reference": "5017e0a9398c77090b7694be46f20eb796262a34"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/mime/zipball/ca4f58b2ef4baa8f6cecbeca2573f88cd577d205",
"reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205",
"url": "https://api.github.com/repos/symfony/mime/zipball/5017e0a9398c77090b7694be46f20eb796262a34",
"reference": "5017e0a9398c77090b7694be46f20eb796262a34",
"shasum": ""
},
"require": {
@ -4226,7 +4226,7 @@
"mime-type"
],
"support": {
"source": "https://github.com/symfony/mime/tree/v6.4.0"
"source": "https://github.com/symfony/mime/tree/v6.4.3"
},
"funding": [
{
@ -4242,7 +4242,7 @@
"type": "tidelift"
}
],
"time": "2023-10-17T11:49:05+00:00"
"time": "2024-01-30T08:32:12+00:00"
},
{
"name": "symfony/polyfill-ctype",
@ -4984,16 +4984,16 @@
},
{
"name": "symfony/process",
"version": "v6.4.2",
"version": "v6.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "c4b1ef0bc80533d87a2e969806172f1c2a980241"
"reference": "31642b0818bfcff85930344ef93193f8c607e0a3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/c4b1ef0bc80533d87a2e969806172f1c2a980241",
"reference": "c4b1ef0bc80533d87a2e969806172f1c2a980241",
"url": "https://api.github.com/repos/symfony/process/zipball/31642b0818bfcff85930344ef93193f8c607e0a3",
"reference": "31642b0818bfcff85930344ef93193f8c607e0a3",
"shasum": ""
},
"require": {
@ -5025,7 +5025,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/process/tree/v6.4.2"
"source": "https://github.com/symfony/process/tree/v6.4.3"
},
"funding": [
{
@ -5041,20 +5041,20 @@
"type": "tidelift"
}
],
"time": "2023-12-22T16:42:54+00:00"
"time": "2024-01-23T14:51:35+00:00"
},
{
"name": "symfony/routing",
"version": "v6.4.2",
"version": "v6.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
"reference": "98eab13a07fddc85766f1756129c69f207ffbc21"
"reference": "3b2957ad54902f0f544df83e3d58b38d7e8e5842"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/routing/zipball/98eab13a07fddc85766f1756129c69f207ffbc21",
"reference": "98eab13a07fddc85766f1756129c69f207ffbc21",
"url": "https://api.github.com/repos/symfony/routing/zipball/3b2957ad54902f0f544df83e3d58b38d7e8e5842",
"reference": "3b2957ad54902f0f544df83e3d58b38d7e8e5842",
"shasum": ""
},
"require": {
@ -5108,7 +5108,7 @@
"url"
],
"support": {
"source": "https://github.com/symfony/routing/tree/v6.4.2"
"source": "https://github.com/symfony/routing/tree/v6.4.3"
},
"funding": [
{
@ -5124,7 +5124,7 @@
"type": "tidelift"
}
],
"time": "2023-12-29T15:34:34+00:00"
"time": "2024-01-30T13:55:02+00:00"
},
{
"name": "symfony/service-contracts",
@ -5210,16 +5210,16 @@
},
{
"name": "symfony/string",
"version": "v7.0.2",
"version": "v7.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
"reference": "cc78f14f91f5e53b42044d0620961c48028ff9f5"
"reference": "524aac4a280b90a4420d8d6a040718d0586505ac"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/cc78f14f91f5e53b42044d0620961c48028ff9f5",
"reference": "cc78f14f91f5e53b42044d0620961c48028ff9f5",
"url": "https://api.github.com/repos/symfony/string/zipball/524aac4a280b90a4420d8d6a040718d0586505ac",
"reference": "524aac4a280b90a4420d8d6a040718d0586505ac",
"shasum": ""
},
"require": {
@ -5276,7 +5276,7 @@
"utf8"
],
"support": {
"source": "https://github.com/symfony/string/tree/v7.0.2"
"source": "https://github.com/symfony/string/tree/v7.0.3"
},
"funding": [
{
@ -5292,20 +5292,20 @@
"type": "tidelift"
}
],
"time": "2023-12-10T16:54:46+00:00"
"time": "2024-01-29T15:41:16+00:00"
},
{
"name": "symfony/translation",
"version": "v6.4.2",
"version": "v6.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
"reference": "a2ab2ec1a462e53016de8e8d5e8912bfd62ea681"
"reference": "637c51191b6b184184bbf98937702bcf554f7d04"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/translation/zipball/a2ab2ec1a462e53016de8e8d5e8912bfd62ea681",
"reference": "a2ab2ec1a462e53016de8e8d5e8912bfd62ea681",
"url": "https://api.github.com/repos/symfony/translation/zipball/637c51191b6b184184bbf98937702bcf554f7d04",
"reference": "637c51191b6b184184bbf98937702bcf554f7d04",
"shasum": ""
},
"require": {
@ -5328,7 +5328,7 @@
"symfony/translation-implementation": "2.3|3.0"
},
"require-dev": {
"nikic/php-parser": "^4.13",
"nikic/php-parser": "^4.18|^5.0",
"psr/log": "^1|^2|^3",
"symfony/config": "^5.4|^6.0|^7.0",
"symfony/console": "^5.4|^6.0|^7.0",
@ -5371,7 +5371,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/translation/tree/v6.4.2"
"source": "https://github.com/symfony/translation/tree/v6.4.3"
},
"funding": [
{
@ -5387,7 +5387,7 @@
"type": "tidelift"
}
],
"time": "2023-12-18T09:25:29+00:00"
"time": "2024-01-29T13:11:52+00:00"
},
{
"name": "symfony/translation-contracts",
@ -5469,16 +5469,16 @@
},
{
"name": "symfony/uid",
"version": "v6.4.0",
"version": "v6.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/uid.git",
"reference": "8092dd1b1a41372110d06374f99ee62f7f0b9a92"
"reference": "1d31267211cc3a2fff32bcfc7c1818dac41b6fc0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/uid/zipball/8092dd1b1a41372110d06374f99ee62f7f0b9a92",
"reference": "8092dd1b1a41372110d06374f99ee62f7f0b9a92",
"url": "https://api.github.com/repos/symfony/uid/zipball/1d31267211cc3a2fff32bcfc7c1818dac41b6fc0",
"reference": "1d31267211cc3a2fff32bcfc7c1818dac41b6fc0",
"shasum": ""
},
"require": {
@ -5523,7 +5523,7 @@
"uuid"
],
"support": {
"source": "https://github.com/symfony/uid/tree/v6.4.0"
"source": "https://github.com/symfony/uid/tree/v6.4.3"
},
"funding": [
{
@ -5539,20 +5539,20 @@
"type": "tidelift"
}
],
"time": "2023-10-31T08:18:17+00:00"
"time": "2024-01-23T14:51:35+00:00"
},
{
"name": "symfony/var-dumper",
"version": "v6.4.2",
"version": "v6.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
"reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f"
"reference": "0435a08f69125535336177c29d56af3abc1f69da"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/68d6573ec98715ddcae5a0a85bee3c1c27a4c33f",
"reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/0435a08f69125535336177c29d56af3abc1f69da",
"reference": "0435a08f69125535336177c29d56af3abc1f69da",
"shasum": ""
},
"require": {
@ -5608,7 +5608,7 @@
"dump"
],
"support": {
"source": "https://github.com/symfony/var-dumper/tree/v6.4.2"
"source": "https://github.com/symfony/var-dumper/tree/v6.4.3"
},
"funding": [
{
@ -5624,7 +5624,7 @@
"type": "tidelift"
}
],
"time": "2023-12-28T19:16:56+00:00"
"time": "2024-01-23T14:53:30+00:00"
},
{
"name": "tijsverkoyen/css-to-inline-styles",
@ -6282,16 +6282,16 @@
},
{
"name": "doctrine/dbal",
"version": "3.8.0",
"version": "3.8.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
"reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9"
"reference": "c9ea252cdce4da324ede3d6c5913dd89f769afd2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/dbal/zipball/d244f2e6e6bf32bff5174e6729b57214923ecec9",
"reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9",
"url": "https://api.github.com/repos/doctrine/dbal/zipball/c9ea252cdce4da324ede3d6c5913dd89f769afd2",
"reference": "c9ea252cdce4da324ede3d6c5913dd89f769afd2",
"shasum": ""
},
"require": {
@ -6307,9 +6307,9 @@
"doctrine/coding-standard": "12.0.0",
"fig/log-test": "^1",
"jetbrains/phpstorm-stubs": "2023.1",
"phpstan/phpstan": "1.10.56",
"phpstan/phpstan": "1.10.57",
"phpstan/phpstan-strict-rules": "^1.5",
"phpunit/phpunit": "9.6.15",
"phpunit/phpunit": "9.6.16",
"psalm/plugin-phpunit": "0.18.4",
"slevomat/coding-standard": "8.13.1",
"squizlabs/php_codesniffer": "3.8.1",
@ -6375,7 +6375,7 @@
],
"support": {
"issues": "https://github.com/doctrine/dbal/issues",
"source": "https://github.com/doctrine/dbal/tree/3.8.0"
"source": "https://github.com/doctrine/dbal/tree/3.8.1"
},
"funding": [
{
@ -6391,20 +6391,20 @@
"type": "tidelift"
}
],
"time": "2024-01-25T21:44:02+00:00"
"time": "2024-02-03T17:33:49+00:00"
},
{
"name": "doctrine/deprecations",
"version": "1.1.2",
"version": "1.1.3",
"source": {
"type": "git",
"url": "https://github.com/doctrine/deprecations.git",
"reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931"
"reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
"reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
"reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
"shasum": ""
},
"require": {
@ -6436,9 +6436,9 @@
"homepage": "https://www.doctrine-project.org/",
"support": {
"issues": "https://github.com/doctrine/deprecations/issues",
"source": "https://github.com/doctrine/deprecations/tree/1.1.2"
"source": "https://github.com/doctrine/deprecations/tree/1.1.3"
},
"time": "2023-09-27T20:04:15+00:00"
"time": "2024-01-30T19:34:25+00:00"
},
{
"name": "doctrine/event-manager",
@ -6846,22 +6846,22 @@
},
{
"name": "laravel/sail",
"version": "v1.27.2",
"version": "v1.27.3",
"source": {
"type": "git",
"url": "https://github.com/laravel/sail.git",
"reference": "2276a8d9d6cfdcaad98bf67a34331d100149d5b6"
"reference": "7e01b345072c9604ead9d7aed175bf7ac1d80289"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/sail/zipball/2276a8d9d6cfdcaad98bf67a34331d100149d5b6",
"reference": "2276a8d9d6cfdcaad98bf67a34331d100149d5b6",
"url": "https://api.github.com/repos/laravel/sail/zipball/7e01b345072c9604ead9d7aed175bf7ac1d80289",
"reference": "7e01b345072c9604ead9d7aed175bf7ac1d80289",
"shasum": ""
},
"require": {
"illuminate/console": "^9.0|^10.0|^11.0",
"illuminate/contracts": "^9.0|^10.0|^11.0",
"illuminate/support": "^9.0|^10.0|^11.0",
"illuminate/console": "^9.52.16|^10.0|^11.0",
"illuminate/contracts": "^9.52.16|^10.0|^11.0",
"illuminate/support": "^9.52.16|^10.0|^11.0",
"php": "^8.0",
"symfony/yaml": "^6.0|^7.0"
},
@ -6907,7 +6907,7 @@
"issues": "https://github.com/laravel/sail/issues",
"source": "https://github.com/laravel/sail"
},
"time": "2024-01-21T17:13:42+00:00"
"time": "2024-01-30T03:03:59+00:00"
},
{
"name": "mockery/mockery",
@ -7801,16 +7801,16 @@
},
{
"name": "phpunit/phpunit",
"version": "10.5.9",
"version": "10.5.10",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "0bd663704f0165c9e76fe4f06ffa6a1ca727fdbe"
"reference": "50b8e314b6d0dd06521dc31d1abffa73f25f850c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0bd663704f0165c9e76fe4f06ffa6a1ca727fdbe",
"reference": "0bd663704f0165c9e76fe4f06ffa6a1ca727fdbe",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/50b8e314b6d0dd06521dc31d1abffa73f25f850c",
"reference": "50b8e314b6d0dd06521dc31d1abffa73f25f850c",
"shasum": ""
},
"require": {
@ -7882,7 +7882,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
"source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.9"
"source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.10"
},
"funding": [
{
@ -7898,7 +7898,7 @@
"type": "tidelift"
}
],
"time": "2024-01-22T14:35:40+00:00"
"time": "2024-02-04T09:07:51+00:00"
},
{
"name": "psr/cache",
@ -8928,21 +8928,20 @@
},
{
"name": "spatie/flare-client-php",
"version": "1.4.3",
"version": "1.4.4",
"source": {
"type": "git",
"url": "https://github.com/spatie/flare-client-php.git",
"reference": "5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec"
"reference": "17082e780752d346c2db12ef5d6bee8e835e399c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/spatie/flare-client-php/zipball/5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec",
"reference": "5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec",
"url": "https://api.github.com/repos/spatie/flare-client-php/zipball/17082e780752d346c2db12ef5d6bee8e835e399c",
"reference": "17082e780752d346c2db12ef5d6bee8e835e399c",
"shasum": ""
},
"require": {
"illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0",
"nesbot/carbon": "^2.62.1",
"php": "^8.0",
"spatie/backtrace": "^1.5.2",
"symfony/http-foundation": "^5.2|^6.0|^7.0",
@ -8986,7 +8985,7 @@
],
"support": {
"issues": "https://github.com/spatie/flare-client-php/issues",
"source": "https://github.com/spatie/flare-client-php/tree/1.4.3"
"source": "https://github.com/spatie/flare-client-php/tree/1.4.4"
},
"funding": [
{
@ -8994,7 +8993,7 @@
"type": "github"
}
],
"time": "2023-10-17T15:54:07+00:00"
"time": "2024-01-31T14:18:45+00:00"
},
{
"name": "spatie/ignition",
@ -9253,16 +9252,16 @@
},
{
"name": "symfony/yaml",
"version": "v7.0.0",
"version": "v7.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
"reference": "0055b230c408428b9b5cde7c55659555be5c0278"
"reference": "2d4fca631c00700597e9442a0b2451ce234513d3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/0055b230c408428b9b5cde7c55659555be5c0278",
"reference": "0055b230c408428b9b5cde7c55659555be5c0278",
"url": "https://api.github.com/repos/symfony/yaml/zipball/2d4fca631c00700597e9442a0b2451ce234513d3",
"reference": "2d4fca631c00700597e9442a0b2451ce234513d3",
"shasum": ""
},
"require": {
@ -9304,7 +9303,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/yaml/tree/v7.0.0"
"source": "https://github.com/symfony/yaml/tree/v7.0.3"
},
"funding": [
{
@ -9320,7 +9319,7 @@
"type": "tidelift"
}
],
"time": "2023-11-07T10:26:03+00:00"
"time": "2024-01-23T15:02:46+00:00"
},
{
"name": "theseer/tokenizer",
@ -9379,7 +9378,7 @@
"prefer-stable": true,
"prefer-lowest": false,
"platform": {
"php": "^8.1|8.2"
"php": "^8.3"
},
"platform-dev": [],
"plugin-api-version": "2.6.0"

View File

@ -0,0 +1,23 @@
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Department>
*/
class DepartmentFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
//
];
}
}

View File

@ -0,0 +1,23 @@
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\EducationalInstitution>
*/
class EducationalInstitutionFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
//
];
}
}

View File

@ -0,0 +1,23 @@
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Faculty>
*/
class FacultyFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
//
];
}
}

View File

@ -14,7 +14,7 @@ return new class extends Migration
Schema::create('files', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('file_name');
$table->string('file_name')->nullable();
$table->string('description')->nullable();
$table->string('url');
$table->integer('position');

View File

@ -0,0 +1,31 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('educational_institutions', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('slug');
$table->text('description');
$table->integer('position');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('educational_institutions');
}
};

View File

@ -0,0 +1,31 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('faculties', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('description');
$table->integer('position');
$table->foreignId('educational_institution_id')->constrained('educational_institutions');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('faculties');
}
};

View File

@ -0,0 +1,31 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('departments', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('description');
$table->integer('position');
$table->foreignId('faculty_id')->constrained('faculties');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('departments');
}
};

View File

@ -3,6 +3,7 @@
namespace Database\Seeders;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use App\Models\Faculty;
use App\Models\User;
use Illuminate\Database\Seeder;
@ -13,8 +14,8 @@ class DatabaseSeeder extends Seeder
*/
public function run(): void
{
User::factory(10)->create();
// User::factory(10)->create();
//
User::factory()->create([
'name' => 'admin',
'email' => 'test@example.com',
@ -22,7 +23,10 @@ class DatabaseSeeder extends Seeder
]);
$this->call([
ReceptionScreenSeeder::class,
FileSeeder::class
FileSeeder::class,
EducationalInstitutionSeeder::class,
FacultySeeder::class,
DepartmentSeeder::class,
]);
}
}

View File

@ -0,0 +1,33 @@
<?php
namespace Database\Seeders;
use App\Models\Department;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class DepartmentSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
DB::table('departments')->insert([
[
'name' => 'Кафедра инф. без.',
'description' => 'Кафедра инф. без. описание',
'position' => 1,
'faculty_id' => 1,
],
[
'name' => 'кафедра стоматологии',
'description' => 'кафедра стоматологии описание',
'position' => 2,
'faculty_id' => 2,
],
]);
}
}

View File

@ -0,0 +1,32 @@
<?php
namespace Database\Seeders;
use App\Models\EducationalInstitution;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class EducationalInstitutionSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
DB::table('educational_institutions')->insert([
[
'name' => 'МГТУ',
'description' => 'ФГБОУ ВО Майкопский государственный технологический университет',
'slug' => 'mkgtu',
'position' => 1,
],
[
'name' => 'Педколледж',
'description' => 'ФГБОУ СПО Педагогический колледж',
'slug' => 'pedcollege',
'position' => 1,
],
]);
}
}

View File

@ -0,0 +1,32 @@
<?php
namespace Database\Seeders;
use App\Models\Faculty;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class FacultySeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
DB::table('faculties')->insert([
[
'name' => 'Информационная безопасность',
'description' => 'Факультет информационной безопасности описание',
'position' => 1,
'educational_institution_id' => 1,
],
[
'name' => 'Лечебный факультет',
'description' => 'Факультет Лечебный описание',
'position' => 1,
'educational_institution_id' => 2,
],
]);
}
}

32
qodana.yaml Normal file
View File

@ -0,0 +1,32 @@
#-------------------------------------------------------------------------------#
# Qodana analysis is configured by qodana.yaml file #
# https://www.jetbrains.com/help/qodana/qodana-yaml.html #
#-------------------------------------------------------------------------------#
version: "1.0"
#Specify inspection profile for code analysis
profile:
name: qodana.starter
#Enable inspections
#include:
# - name: <SomeEnabledInspectionId>
#Disable inspections
#exclude:
# - name: <SomeDisabledInspectionId>
# paths:
# - <path/where/not/run/inspection>
php:
version: 8.3 #(Applied in CI/CD pipeline)
#Execute shell command before Qodana execution (Applied in CI/CD pipeline)
#bootstrap: sh ./prepare-qodana.sh
#Install IDE plugins before Qodana execution (Applied in CI/CD pipeline)
#plugins:
# - id: <plugin.id> #(plugin id can be found at https://plugins.jetbrains.com)
#Specify Qodana linter for analysis (Applied in CI/CD pipeline)
linter: jetbrains/qodana-php:latest

View File

@ -84,7 +84,7 @@
@endforeach
<tr class=" border border-white border-bottom-0 border-start-0 border-end-0">
<td colspan="3"><div class="mb-2">
<a href="{{ route('files.create', $receptionScreen->id) }}"
<a href="{{ route('files_create', $receptionScreen->id) }}"
class="btn btn-primary">
Добавить файл
</a>
@ -104,7 +104,7 @@
<tr>
<td colspan="3">
@php($idReceptionScreen = $receptionScreen->id)
<a href="{{ route('files.create', $idReceptionScreen) }}" class="btn btn-primary">Добавить
<a href="{{ route('files_create', $idReceptionScreen) }}" class="btn btn-primary">Добавить
файл</a>
</td>
</tr>

View File

@ -0,0 +1,64 @@
@extends('layouts.admin-layout')
@section('content')
@auth()
<div class="row">
<div class="col">
<h1 class=""> Создать кафедру</h1>
{{ Form::open(['url' => route('departments.store'), 'method' => 'POST', 'class' => '']) }}
<div class="col">
<div class="mt-3">
{{ Form::label('position', 'Позиция') }}
</div>
<div class="mt-1">
{{ Form::text('position', '', ['class' => 'form-control']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('position') }}
@endif
</div>
<div class="mt-3">
{{ Form::label('name', 'Название') }}
</div>
<div class="mt-1">
{{ Form::text('name', '', ['class' => 'form-control']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('name') }}
@endif
</div>
<div class="mt-3">
{{ Form::label('description', 'Описание') }}
</div>
<div class="mt-1">
{{ Form::text('description', '', ['class' => 'form-control']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('description') }}
@endif
</div>
<div class="mt-3">
{{ Form::label('faculty_id', 'Факультет') }}
</div>
<div class="mt-1">
{{ Form::select('faculty_id', $faculties, null, ['class' => 'form-select']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('faculty_id') }}
@endif
</div>
<div class="mt-3">
{{ Form::submit('Создать', ['class' => 'btn btn-primary']) }}
</div>
</div>
{{ Form::close() }}
</div>
</div>
@endauth
@endsection

View File

@ -0,0 +1,64 @@
@extends('layouts.admin-layout')
@section('content')
@auth()
<div class="row">
<div class="col">
<h1 class=""> Создать кафедру</h1>
{{ Form::open(['url' => route('departments.update', $department), 'method' => 'PATCH', 'class' => '']) }}
<div class="col">
<div class="mt-3">
{{ Form::label('position', 'Позиция') }}
</div>
<div class="mt-1">
{{ Form::text('position', $department->position, ['class' => 'form-control']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('position') }}
@endif
</div>
<div class="mt-3">
{{ Form::label('name', 'Название') }}
</div>
<div class="mt-1">
{{ Form::text('name', $department->name, ['class' => 'form-control']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('name') }}
@endif
</div>
<div class="mt-3">
{{ Form::label('description', 'Описание') }}
</div>
<div class="mt-1">
{{ Form::text('description', $department->description, ['class' => 'form-control']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('description') }}
@endif
</div>
<div class="mt-3">
{{ Form::label('educational_institution_id', 'Факультет') }}
</div>
<div class="mt-1">
{{ Form::select('faculty_id', $faculties, $department->faculty->id, ['class' => 'form-select']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('educational_institution_id') }}
@endif
</div>
<div class="mt-3">
{{ Form::submit('Изменить', ['class' => 'btn btn-primary']) }}
</div>
</div>
{{ Form::close() }}
</div>
</div>
@endauth
@endsection

View File

@ -0,0 +1,43 @@
@extends('layouts.admin-layout')
@section('content')
<div class="container">
<h2>Кафедры</h2>
<br>
<a href="{{ route('departments.create') }}" class="btn btn-primary">Создать Кафедру</a>
<br>
<br>
<table class="table">
<thead class="border-b-2 border-solid border-black text-left" style="text-align: left">
<tr>
<th scope="col">Позиция</th>
<th scope="col">Название</th>
<th scope="col">Описание</th>
<th scope="col">Факультет</th>
<th scope="col">действия</th>
<th scope="col"></th>
</tr>
</thead>
<tbody>
@foreach($departments as $department)
<tr class="">
<th scope="row">{{ $department->position }}</th>
<td><a href="{{ route('departments.show', $department) }}">{{ $department->name }}</a></td>
<td>{{ Str::words($department->description, 10, '...') }}</td>
<td>{{ $department->faculty->name }}</td>
<td>
<a href="{{ route("departments.edit", $department) }}"
class="btn btn-secondary">редактировать</a>
<a rel="nofollow" data-method="delete" data-confirm="Вы действительно хотите удалить?"
href="{{ route('departments.destroy', $department) }}"
class="btn btn-danger">удалить</a>
</td>
</tr>
@endforeach
</tbody>
</table>
<br>
<br>
</div>
@endsection

View File

@ -0,0 +1,31 @@
@php
use App\Models\Department;
use App\Models\Faculty;
use Illuminate\Support\Collection;
/** @var Collection|Department[] $department */
$faculty = Faculty::find($department->faculty->id)
@endphp
@extends('layouts.admin-layout')
@section('content')
@auth()
<h6>
<a href="{{ route('educational-institutions.show', $faculty->educationalInstitution) }}">
{{ $faculty->educationalInstitution->name }}
</a>-> <a href="{{ route('faculties.show', $faculty) }}">{{ $faculty->name }}</a>
-> {{ $department->name }}
</h6>
<div class="container mt-4">
<h2>Название</h2>
<p>{{ $department->name }}</p>
<h2>Описание</h2>
<p>{{ $department->description }}</p>
<h2>Позиция</h2>
<p>{{ $department->position }}</p>
{{-- <h2>Факультеты</h2>--}}
{{-- @foreach($department->faculties as $faculty)--}}
{{-- <p><a href="{{ route('faculties.show', $faculty) }}">{{ $faculty->name }}</a></p>--}}
{{-- @endforeach--}}
</div>
@endauth
@endsection

View File

@ -0,0 +1,53 @@
@extends('layouts.admin-layout')
@section('content')
@auth()
<div class="row">
<div class="col">
<h1 class=""> Создать учебное заведение</h1>
{{ Form::open(['url' => route('educational-institutions.store'), 'method' => 'POST', 'class' => '']) }}
<div class="col">
<div>
{{ Form::label('position', 'Позиция') }}
</div>
<div class="mt-2">
{{ Form::text('position', '', ['class' => 'form-control']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('position') }}
@endif
</div>
<div>
{{ Form::label('name', 'Название') }}
</div>
<div class="mt-2">
{{ Form::text('name', '', ['class' => 'form-control']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('name') }}
@endif
</div>
<div>
{{ Form::label('description', 'Описание') }}
</div>
<div class="mt-2">
{{ Form::text('description', '', ['class' => 'form-control']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('description') }}
@endif
</div>
<div class="mt-4">
{{ Form::submit('создать', ['class' => 'btn btn-primary']) }}
</div>
</div>
{{ Form::close() }}
</div>
</div>
@endauth
@endsection

View File

@ -0,0 +1,53 @@
@extends('layouts.admin-layout')
@section('content')
@auth()
<div class="row">
<div class="col">
<h1 class="">Изменить учебное заведение</h1>
{{ Form::model($educationalInstitution, ['route' => ['educational-institutions.update', $educationalInstitution], 'method' => 'PATCH', 'class' => '']) }}
<div class="col">
<div>
{{ Form::label('position', 'Позиция') }}
</div>
<div class="mt-2">
{{ Form::text('position', $educationalInstitution->position, ['class' => 'form-control']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('position') }}
@endif
</div>
<div>
{{ Form::label('name', 'Название') }}
</div>
<div class="mt-2">
{{ Form::text('name', $educationalInstitution->name, ['class' => 'form-control']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('name') }}
@endif
</div>
<div>
{{ Form::label('description', 'Описание') }}
</div>
<div class="mt-2">
{{ Form::text('description', $educationalInstitution->description, ['class' => 'form-control']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('description') }}
@endif
</div>
<div class="mt-4">
{{ Form::submit('Изменить', ['class' => 'btn btn-primary']) }}
</div>
</div>
{{ Form::close() }}
</div>
</div>
@endauth
@endsection

View File

@ -0,0 +1,42 @@
@extends('layouts.admin-layout')
@section('content')
<div class="container">
<h2>Учебные заведения</h2>
<br>
<a href="{{ route('educational-institutions.create') }}" class="btn btn-primary">Создать учебное заведение</a>
<br>
<br>
<table class="table">
<thead class="border-b-2 border-solid border-black text-left" style="text-align: left">
<tr>
<th scope="col">Позиция</th>
<th scope="col">Название</th>
<th scope="col">Описание</th>
<th scope="col">действия</th>
<th scope="col"></th>
</tr>
</thead>
<tbody class="accordion" id="accordionExample">
@foreach($educationalInstitutions as $educationalInstitution)
<tr class="">
<th scope="row">{{ $educationalInstitution->position }}</th>
<td><a href="{{ route('educational-institutions.show', $educationalInstitution) }}">{{ $educationalInstitution->name }}</a></td>
<td>{{ Str::words($educationalInstitution->description, 10, '...') }}</td>
<td class="col-3"><a href="{{ route("educational-institutions.edit", $educationalInstitution) }}"
class="btn btn-secondary">редактировать</a>
<a rel="nofollow" data-method="delete" data-confirm="Вы действительно хотите удалить?"
href="{{ route('educational-institutions.destroy', $educationalInstitution) }}"
class="btn btn-danger">
удалить
</a>
</td>
</tr>
@endforeach
</tbody>
</table>
<br>
<br>
</div>
@endsection

View File

@ -0,0 +1,18 @@
@extends('layouts.admin-layout')
@section('content')
@auth()
<div class="container mt-4">
<h2>Название</h2>
<p>{{ $educationalInstitution->name }}</p>
<h2>Описание</h2>
<p>{{ $educationalInstitution->description }}</p>
<h2>Позиция</h2>
<p>{{ $educationalInstitution->position }}</p>
<h2>Факультеты</h2>
@foreach($educationalInstitution->faculties as $faculty)
<p><a href="{{ route('faculties.show', $faculty) }}">{{ $faculty->name }}</a></p>
@endforeach
</div>
@endauth
@endsection

View File

@ -0,0 +1,64 @@
@extends('layouts.admin-layout')
@section('content')
@auth()
<div class="row">
<div class="col">
<h1 class=""> Создать факультет</h1>
{{ Form::open(['url' => route('faculties.store'), 'method' => 'POST', 'class' => '']) }}
<div class="col">
<div class="mt-3">
{{ Form::label('position', 'Позиция') }}
</div>
<div class="mt-1">
{{ Form::text('position', '', ['class' => 'form-control']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('position') }}
@endif
</div>
<div class="mt-3">
{{ Form::label('name', 'Название') }}
</div>
<div class="mt-1">
{{ Form::text('name', '', ['class' => 'form-control']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('name') }}
@endif
</div>
<div class="mt-3">
{{ Form::label('description', 'Описание') }}
</div>
<div class="mt-1">
{{ Form::text('description', '', ['class' => 'form-control']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('description') }}
@endif
</div>
<div class="mt-3">
{{ Form::label('educational_institution_id', 'Учебное заведение') }}
</div>
<div class="mt-1">
{{ Form::select('educational_institution_id', $educationalInstitutions, null, ['class' => 'form-select']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('educational_institution_id') }}
@endif
</div>
<div class="mt-3">
{{ Form::submit('создать', ['class' => 'btn btn-primary']) }}
</div>
</div>
{{ Form::close() }}
</div>
</div>
@endauth
@endsection

View File

@ -0,0 +1,64 @@
@extends('layouts.admin-layout')
@section('content')
@auth()
<div class="row">
<div class="col">
<h1 class=""> Создать факультет</h1>
{{ Form::open(['url' => route('faculties.update', $faculty), 'method' => 'PATCH', 'class' => '']) }}
<div class="col">
<div class="mt-3">
{{ Form::label('position', 'Позиция') }}
</div>
<div class="mt-1">
{{ Form::text('position', $faculty->position, ['class' => 'form-control']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('position') }}
@endif
</div>
<div class="mt-3">
{{ Form::label('name', 'Название') }}
</div>
<div class="mt-1">
{{ Form::text('name', $faculty->name, ['class' => 'form-control']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('name') }}
@endif
</div>
<div class="mt-3">
{{ Form::label('description', 'Описание') }}
</div>
<div class="mt-1">
{{ Form::text('description', $faculty->description, ['class' => 'form-control']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('description') }}
@endif
</div>
<div class="mt-3">
{{ Form::label('educational_institution_id', 'Учебное заведение') }}
</div>
<div class="mt-1">
{{ Form::select('educational_institution_id', $educationalInstitutions, $faculty->educationalInstitution->id, ['class' => 'form-select']) }}
</div>
<div>
@if ($errors->any())
{{ $errors->first('educational_institution_id') }}
@endif
</div>
<div class="mt-3">
{{ Form::submit('создать', ['class' => 'btn btn-primary']) }}
</div>
</div>
{{ Form::close() }}
</div>
</div>
@endauth
@endsection

View File

@ -0,0 +1,44 @@
@extends('layouts.admin-layout')
@section('content')
<div class="container">
<h2>Факультеты</h2>
<br>
<a href="{{ route('faculties.create') }}" class="btn btn-primary">Создать Факультет</a>
<br>
<br>
<table class="table">
<thead class="border-b-2 border-solid border-black text-left" style="text-align: left">
<tr>
<th scope="col">Позиция</th>
<th scope="col">Название</th>
<th scope="col">Описание</th>
<th scope="col">Учебное заведение</th>
<th scope="col">действия</th>
<th scope="col"></th>
</tr>
</thead>
<tbody>
@foreach($faculties as $faculty)
<tr class="">
<th scope="row">{{ $faculty->position }}</th>
<td><a href="{{ route('faculties.show', $faculty) }}">{{ $faculty->name }}</a></td>
<td>{{ Str::words($faculty->description, 10, '...') }}</td>
<td>{{ $faculty->educationalInstitution->name }}</td>
<td><a href="{{ route("faculties.edit", $faculty) }}"
class="btn btn-secondary">редактировать</a>
<a rel="nofollow" data-method="delete" data-confirm="Вы действительно хотите удалить?"
href="{{ route('faculties.destroy', $faculty) }}"
class="btn btn-danger">
удалить
</a>
</td>
</tr>
@endforeach
</tbody>
</table>
<br>
<br>
</div>
@endsection

View File

@ -0,0 +1,19 @@
@extends('layouts.admin-layout')
@section('content')
@auth()
<h6><a href="{{ route('educational-institutions.show', $faculty->educationalInstitution) }}">{{ $faculty->educationalInstitution->name }}</a> -> {{ $faculty->name }}</h6>
<div class="container mt-4">
<h2>Название</h2>
<p>{{ $faculty->name }}</p>
<h2>Описание</h2>
<p>{{ $faculty->description }}</p>
<h2>Позиция</h2>
<p>{{ $faculty->position }}</p>
<h2>Кафедры</h2>
@foreach($faculty->departments as $department)
<p><a href="{{ route('departments.show', $department) }}">{{ $department->name }}</a></p>
@endforeach
</div>
@endauth
@endsection

View File

@ -42,7 +42,7 @@
{{ Form::label('idReceptionScreen', 'Пункт экрана приема') }}
</div>
<div class="mt-2">
{{ Form::select('idReceptionScreen', $receptionScreens, $idReceptionScreen, $idsReceptionScreens,['class' => 'form-select']) }}
{{ Form::select('idReceptionScreen', $receptionScreens, $idReceptionScreen, ['class' => 'form-select']) }}
</div>
<div>
@if ($errors->any())

View File

@ -13,11 +13,12 @@
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body class="antialiased">
<div class="container">
<div class="container-fluid">
<header
class="d-flex flex-wrap align-items-center justify-content-center justify-content-md-between py-3 mb-4 border-bottom">
<ul class="nav col-9 col-md-auto mb-2 justify-content-start mb-md-0">
<li><a href="{{ route('dashboard') }}" class="nav-link px-2 link-secondary text-wrap" style="width: 4rem;">Главная</a></li>
<li><a href="{{ route('dashboard') }}" class="nav-link px-2 link-secondary text-wrap" style="width: 4rem;">Главная</a>
</li>
</ul>
@ -52,12 +53,18 @@
<li class="list-group-item"><a href="{{ route('files.index') }}">Файлы</a></li>
<li class="list-group-item"><a href="{{ route('admin-reception-screen.index') }}">Экран Приема</a></li>
@if(!is_null(Auth::getUser()) && Auth::getUser()->name === 'admin')
{{-- <li class="list-group-item"></li>--}}
<li class="list-group-item"></li>
<li class="list-group-item"><a href="{{ route('users.index') }}">Список администраторов</a></li>
@endif
<li class="list-group-item"></li>
<li class="list-group-item">Справочники</li>
<li class="list-group-item"><a href="{{ route('educational-institutions.index') }}">Учебные
заведения</a></li>
<li class="list-group-item"><a href="{{ route('faculties.index') }}">Факультеты</a></li>
<li class="list-group-item"><a href="{{ route('departments.index') }}">Кафедры</a></li>
</ul>
</aside>
<div class="col-10">@yield('content')</div>
<main class="col-10">@yield('content')</main>
</div>
</div>

23
routes/admin.php Normal file
View File

@ -0,0 +1,23 @@
<?php
use App\Http\Controllers\Catalog\DepartmentController;
use App\Http\Controllers\Catalog\EducationalInstitutionController;
use App\Http\Controllers\Catalog\FacultyController;
use App\Http\Controllers\FileController;
use App\Http\Controllers\ReceptionScreenController;
use App\Http\Controllers\UserController;
Route::middleware(['auth', 'verified'])->prefix('admin')->group(function () {
Route::get('/files/create/{file?}', [FileController::class, 'create'])->name('files_create');
Route::get('/files/download/{file}', [FileController::class, 'download'])->name('files.download');
Route::resource('/educational-institutions', EducationalInstitutionController::class)
->scoped(['educational_institution' => 'slug']);
Route::resources([
'/files' => FileController::class,
'/users' => UserController::class,
'/admin-reception-screen' => ReceptionScreenController::class,
'/faculties' => FacultyController::class,
'/departments' => DepartmentController::class,
]);
});

84
routes/pages/web.php Normal file
View File

@ -0,0 +1,84 @@
<?php
use App\Http\Controllers\PageController;
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return view('home');
})->name('home');
Route::get('/course', function () {
return view('menu.course');
})->name('course');
Route::get('/applicant', function () {
return view('menu.abitur');
})->name('abitur');
Route::get('/for-foreign-applicants', function () {
return view('menu.inostrannym-abiturientam');
})->name('inostrannym-abiturientam');
Route::get('/paid_edu', function () {
return view('menu.paid_edu');
})->name('paid_edu');
Route::get('/olympiads-for-schoolchildren', function () {
return view('menu.olimpiady-dlya-shkolnikov');
})->name('olimpiady-dlya-shkolnikov');
Route::get('/training courses', function () {
return view('menu.podgotovitelnye-kursy');
})->name('podgotovitelnye-kursy');
Route::get('/reception-screens', [PageController::class, 'index'])->name('reception-screens');
Route::get('/web-consultations', function () {
return view('menu.abitur.web-consultations');
})->name('web-consultations');
Route::get('/specialty-magistracy', function () {
return view('menu.abitur.spetsialitet-magistratura');
})->name('spetsialitet-magistratura');
Route::get('/college', function () {
return view('menu.abitur.kolledzh');
})->name('kolledzh');
Route::get('/paid-educational-services', function () {
return view('menu.abitur.platnye-obrazovatelnye-uslugi');
})->name('platnye-obrazovatelnye-uslugi');
Route::get('/residency', function () {
return view('menu.abitur.ordinatura');
})->name('ordinatura');
Route::get('/traineeship', function () {
return view('menu.abitur.aspirantura');
})->name('aspirantura');
Route::get('/video-materials-for-applicants', function () {
return view('menu.abitur.videomaterialy-dlya-postupayushchikh');
})->name('videomaterialy-dlya-postupayushchikh');
Route::get('/international-activity', function () {
return view('menu.inostrannym-abiturientam.mezhdunarodnaya-deyatelnost');
})->name('mezhdunarodnaya-deyatelnost');
Route::get('/general-information', function () {
return view('menu.inostrannym-abiturientam.obshchie-svedeniya');
})->name('obshchie-svedeniya');
Route::get('/departments-list', function () {
return view('menu.inostrannym-abiturientam.kafedry');
})->name('kafedry');
Route::get('/international-education-center', function () {
return view('menu.inostrannym-abiturientam.tsentr-mezhdunarodnogo-obrazovaniya');
})->name('tsentr-mezhdunarodnogo-obrazovaniya');
Route::get('/academic-mobility-and-international-cooperation', function () {
return view('menu.inostrannym-abiturientam.akademicheskaya-mobilnost-i-mezhdunarodnoe-sotrudnichestvo');
})->name('akademicheskaya-mobilnost-i-mezhdunarodnoe-sotrudnichestvo');

View File

@ -1,117 +1,11 @@
<?php
use App\Http\Controllers\FileController;
use App\Http\Controllers\PageController;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\ReceptionScreenController;
use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/
Route::get('/', function () {
return view('home');
})->name('home');
Route::resource('/users', UserController::class)->middleware(['auth', 'verified']);
Route::resource('/admin-reception-screen', ReceptionScreenController::class)->middleware(['auth', 'verified']);
Route::get('/files', [FileController::class, 'index'])->name('files.index');
Route::post('/files', [FileController::class, 'store'])->name('files.store');
Route::get('/files/create/{file?}', [FileController::class, 'create'])->name('files.create');
Route::patch('/files/{file}', [FileController::class, 'update'])->name('files.update');
Route::delete('files/{file}', [FileController::class, 'destroy'])->name('files.destroy');
Route::get('/files/edit/{file}', [FileController::class, 'edit'])->name('files.edit');
Route::get('/files/download/{file}', [FileController::class, 'download'])->name('files.download');
Route::get('/course', function () {
return view('menu.course');
})->name('course');
Route::get('/applicant', function () {
return view('menu.abitur');
})->name('abitur');
Route::get('/for-foreign-applicants', function () {
return view('menu.inostrannym-abiturientam');
})->name('inostrannym-abiturientam');
Route::get('/paid_edu', function () {
return view('menu.paid_edu');
})->name('paid_edu');
Route::get('/olympiads-for-schoolchildren', function () {
return view('menu.olimpiady-dlya-shkolnikov');
})->name('olimpiady-dlya-shkolnikov');
Route::get('/training courses', function () {
return view('menu.podgotovitelnye-kursy');
})->name('podgotovitelnye-kursy');
Route::get('/reception-screens', [PageController::class, 'index'])->name('reception-screens');
Route::get('/web-consultations', function () {
return view('menu.abitur.web-consultations');
})->name('web-consultations');
Route::get('/specialty-magistracy', function () {
return view('menu.abitur.spetsialitet-magistratura');
})->name('spetsialitet-magistratura');
Route::get('/college', function () {
return view('menu.abitur.kolledzh');
})->name('kolledzh');
Route::get('/paid-educational-services', function () {
return view('menu.abitur.platnye-obrazovatelnye-uslugi');
})->name('platnye-obrazovatelnye-uslugi');
Route::get('/residency', function () {
return view('menu.abitur.ordinatura');
})->name('ordinatura');
Route::get('/traineeship', function () {
return view('menu.abitur.aspirantura');
})->name('aspirantura');
Route::get('/video-materials-for-applicants', function () {
return view('menu.abitur.videomaterialy-dlya-postupayushchikh');
})->name('videomaterialy-dlya-postupayushchikh');
Route::get('/international-activity', function () {
return view('menu.inostrannym-abiturientam.mezhdunarodnaya-deyatelnost');
})->name('mezhdunarodnaya-deyatelnost');
Route::get('/general-information', function () {
return view('menu.inostrannym-abiturientam.obshchie-svedeniya');
})->name('obshchie-svedeniya');
Route::get('/departments', function () {
return view('menu.inostrannym-abiturientam.kafedry');
})->name('kafedry');
Route::get('/international-education-center', function () {
return view('menu.inostrannym-abiturientam.tsentr-mezhdunarodnogo-obrazovaniya');
})->name('tsentr-mezhdunarodnogo-obrazovaniya');
Route::get('/academic-mobility-and-international-cooperation', function () {
return view('menu.inostrannym-abiturientam.akademicheskaya-mobilnost-i-mezhdunarodnoe-sotrudnichestvo');
})->name('akademicheskaya-mobilnost-i-mezhdunarodnoe-sotrudnichestvo');
Route::get('/dashboard', function () {
return view('admin');
})->middleware(['auth', 'verified'])->name('dashboard');
})->prefix('admin')->middleware(['auth', 'verified'])->name('dashboard');
Route::middleware('auth')->group(function () {
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
@ -120,3 +14,5 @@ Route::middleware('auth')->group(function () {
});
require __DIR__ . '/auth.php';
require __DIR__ . '/admin.php';
require __DIR__ . '/pages/web.php';