Compare commits

..

No commits in common. "242d49868507f00c49e8b411222d5287dc59668a" and "ef1524b96ed56050a62fdcea6b46daecc33c6b32" have entirely different histories.

16 changed files with 203 additions and 747 deletions

View File

@ -9,65 +9,65 @@ on:
- main - main
jobs: jobs:
# build: build:
# runs-on: ubuntu-latest runs-on: ubuntu-latest
#
# strategy: strategy:
# matrix: matrix:
# php-version: [ '8.3' ] php-version: [ '8.3' ]
# node-version: ['20.x'] node-version: ['20.x']
# composer-version: ['2.6.6'] composer-version: ['2.6.6']
#
# steps: steps:
# - uses: actions/checkout@v4 - uses: actions/checkout@v4
#
# - name: Set up PHP ${{ matrix.php-version }} with extensions and tools - name: Set up PHP ${{ matrix.php-version }} with extensions and tools
# uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2
# with: with:
# php-version: ${{ matrix.php-version }} php-version: ${{ matrix.php-version }}
# coverage: xdebug coverage: xdebug
# extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite
# tools: composer:${{ matrix.composer-version }} tools: composer:${{ matrix.composer-version }}
# ini-values: opcache.enable_cli=1, opcache.jit=tracing, opcache.jit_buffer_size=64M ini-values: opcache.enable_cli=1, opcache.jit=tracing, opcache.jit_buffer_size=64M
# env: env:
# debug: true debug: true
#
# - name: PHP Security Checker - name: PHP Security Checker
# uses: StephaneBour/actions-php-security-checker@1.1 uses: StephaneBour/actions-php-security-checker@1.1
#
# - name: Use Node.js ${{ matrix.node-version }} - name: Use Node.js ${{ matrix.node-version }}
# uses: actions/setup-node@v3 uses: actions/setup-node@v3
# with: with:
# node-version: ${{ matrix.node-version }} node-version: ${{ matrix.node-version }}
#
# - name: Add keys - name: Add keys
# run: | run: |
# sudo curl -o ~/.composer/keys.tags.pub -sL https://composer.github.io/releases.pub sudo curl -o ~/.composer/keys.tags.pub -sL https://composer.github.io/releases.pub
# sudo curl -o ~/.composer/keys.dev.pub -sL https://composer.github.io/snapshots.pub sudo curl -o ~/.composer/keys.dev.pub -sL https://composer.github.io/snapshots.pub
#
# - name: Install dependencies - name: Install dependencies
# env: env:
# COMPOSER_AUTH: ${{ secrets.COMPOSER_AUTH_JSON }} COMPOSER_AUTH: ${{ secrets.COMPOSER_AUTH_JSON }}
# run: composer install run: composer install
#
# - name: Setup project - name: Setup project
# run: make setup-ci run: make setup-ci
#
# - name: Check lint - name: Check lint
# run: make lint run: make lint
#
# - name: Check tests - name: Check tests
# run: make test run: make test
deploy: deploy:
# needs: build needs: build
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: deploy to test server - name: deploy to test server
uses: appleboy/ssh-action@v1.0.3 uses: appleboy/ssh-action@v1.0.3
with: with:
host: http://gitea.mkgtu.ru host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }} username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }} password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }} port: ${{ secrets.PORT }}

View File

@ -8,7 +8,6 @@ use App\Models\Direction;
use App\Models\EntranceExamination; use App\Models\EntranceExamination;
use App\Models\Faculty; use App\Models\Faculty;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\URL;
class CalculatorController extends Controller class CalculatorController extends Controller
{ {
@ -33,79 +32,60 @@ class CalculatorController extends Controller
$department = Department::find($direction->department_id); $department = Department::find($direction->department_id);
$faculty = Faculty::find($department->faculty_id); $faculty = Faculty::find($department->faculty_id);
// phpcs:disable // phpcs:disable
$fon_3 = URL::to('img/front-page/bakalavr-special/fon3_blok.png');
return "{$acc} <tr class=\"\"> return "{$acc} <tr class=\"\">
<td id=\"faculty\"> {$faculty->name} </td> <td id=\"faculty\"> {$faculty->name} </td>
<td> <td>
<a class=\" border border-white rounded-3 p-2 hover1\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasScrolling-{$direction->id}{$direction->id }\" aria-controls=\"offcanvasScrolling\" role=\"button\">{$direction->name}</a> <a class=\" border border-white rounded-3 p-2 hover1\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasScrolling-{$direction->id}{$direction->id }\" aria-controls=\"offcanvasScrolling\" role=\"button\">{$direction->name}</a>
<div class=\"offcanvas offcanvas-bottom\" data-bs-scroll=\"true\" data-bs-backdrop=\"false\" tabindex=\"-1\" id=\"offcanvasScrolling-{$direction->id }{$direction->id}\" aria-labelledby=\"offcanvasScrollingLabel-{$direction->id}{$direction->id}\" style=\"height: 100%; font-family: Geologica-Medium; overflow-y: auto ; background-image: url({$fon_3}); color: #004329\"> <div class=\"offcanvas offcanvas-bottom text-dark\" data-bs-scroll=\"true\" data-bs-backdrop=\"false\" tabindex=\"-1\" id=\"offcanvasScrolling-{$direction->id }{$direction->id }\" aria-labelledby=\"offcanvasScrollingLabel-{$direction->id}{$direction->id }\" style=\"height: 100%; font-family: Geologica-Medium;overflow-y: auto ;\">
<div class=\"mx-5\"> <div class=\"mx-5\">
<div class=\"col-12 d-flex justify-content-end mt-4\"> <div class=\"col-12 d-flex justify-content-end mt-4\">
<button type=\"button\" class=\"btn-close text-reset\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\"> <button type=\"button\" class=\"btn-close text-reset\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\"></button>
</button>
</div> </div>
<div class=\"row\">
<div class='row'> <div class=\"col-xl-3 col-12\">
<div class=\"display-5 \" style=\"font-family: Geologica-Light\"> {$direction->code} </div>
<div class='col-md-6 col-12 d-block'>
<div class=\"\">
<div class=\"display-6 \" style=\"font-family: Geologica-Light\"> {$direction->code} </div>
<div class=\"display-5 \" > {$direction->name}</div> <div class=\"display-5 \" > {$direction->name}</div>
</div> </div>
<div class=\"mt-4\">
<p style=\"text-align: justify;\">{$direction->description}</p>
</div>
</div>
<div class='col-md-6 col-12 d-flex justify-content-center align-items-center'> </div>
<div class=\"row\">
<div class=\"p-3 px-5 border-success fs-4\" style='border-radius: 50px; border: 2px solid;'> <div class=\"col-xl-3 col-12\">
<div > Уровень образования: <br>
<strong>{$direction->educationLevel->name} </strong> <br>
<div> Уровень образования: <span style=\"font-family: Geologica-Light\">{$direction->educationLevel->name} </span> </div>
<div> Форма обучения: <span style=\"font-family: Geologica-Light\">{$direction->educationForm->name} </span></div>
</div> </div>
<hr class='d-block d-md-none'><br> <div class=\"col-xl-3 col-12\">
<div > Форма обучения: <br>
<strong>{$direction->educationForm->name} </strong> <br>
</div> <div> Бюджетные места: <span style=\"font-family: Geologica-Light\">{$direction->budget_places} </span> </div>
<hr class='d-block d-md-none'><br> <div> Квота: <span style=\"font-family: Geologica-Light\">{$direction->quota} </span></div>
<div > Бюджетные места:
<strong >{$direction->budget_places} </strong>
</div>
<hr class='d-block d-md-none'><br>
<div > Квота:
<strong >{$direction->quota} </strong>
</div>
<hr class='d-block d-md-none'><br>
<div > Места на контракт:
<strong >{$direction->paid_places} </strong>
</div>
<hr class='d-block d-md-none'><br>
<div > Стоимость платного обучения:
<strong >{$direction->cost_paid_place} </strong>
</div>
<hr class='d-block d-md-none'><br>
<div > Период обучения (в годах):
<strong>{$direction->period} </span>
</div> </div>
<div class=\"col-xl-3 col-12\">
<br>
<br>
<div> Места на контракт: <span style=\"font-family: Geologica-Light\">{$direction->paid_places} </span> </div>
<div> Стоимость платного обучения: <span style=\"font-family: Geologica-Light\">{$direction->cost_paid_place} </span></div>
</div> </div>
<div class=\"col-xl-3 col-12\">
<br>
<br>
<div> Период обучения (в годах): <span style=\"font-family: Geologica-Light\">{$direction->period} </span> </div>
</div> </div>
</div> </div>
<div class=\"offcanvas-body mt-2\" style=\"font-family: Geologica-ExtraLight\"> <div class=\"offcanvas-body mt-2\" style=\"font-family: Geologica-ExtraLight\">
<p style=\"text-align: justify;\">{$direction->description}</p>
</div> </div>
</div> </div>
</div>
</div> </div>
</div>
</td> </td>
<td class=\"text-end\"> {$direction->period} </td> <td class=\"text-end\"> {$direction->period} </td>

View File

@ -36,11 +36,7 @@ class DirectionController extends Controller
{ {
$levels = EducationLevel::pluck('name', 'id'); $levels = EducationLevel::pluck('name', 'id');
$forms = EducationForm::pluck('name', 'id'); $forms = EducationForm::pluck('name', 'id');
$departments = Department::all() $departments = Department::pluck('name', 'id');
->reduce(function (?array $carry, $department) {
$carry[$department->id] = "{$department->name} - {$department->faculty->name}";
return $carry;
});
$examination_types = ExaminationType::pluck('name', 'id'); $examination_types = ExaminationType::pluck('name', 'id');
$subjects = Subject::pluck('name', 'id'); $subjects = Subject::pluck('name', 'id');
$subjectTypes = SubjectType::pluck('name', 'id'); $subjectTypes = SubjectType::pluck('name', 'id');
@ -154,11 +150,7 @@ class DirectionController extends Controller
{ {
$levels = EducationLevel::pluck('name', 'id'); $levels = EducationLevel::pluck('name', 'id');
$forms = EducationForm::pluck('name', 'id'); $forms = EducationForm::pluck('name', 'id');
$departments = Department::all() $departments = Department::pluck('name', 'id');
->reduce(function (?array $carry, $department) {
$carry[$department->id] = "{$department->name} - {$department->faculty->name}";
return $carry;
});
$examination_types = ExaminationType::pluck('name', 'id'); $examination_types = ExaminationType::pluck('name', 'id');
$subjects = Subject::pluck('name', 'id'); $subjects = Subject::pluck('name', 'id');
$subjectTypes = SubjectType::pluck('name', 'id'); $subjectTypes = SubjectType::pluck('name', 'id');
@ -242,9 +234,19 @@ class DirectionController extends Controller
public function destroy(Direction $direction): RedirectResponse public function destroy(Direction $direction): RedirectResponse
{ {
$direction->entranceExaminations()->each(fn ($entranceExamination) => $entranceExamination->delete()); if ($direction->entranceExaminations()->exists()) {
$direction->directionProfiles()->detach(); Log::channel('app')
$direction->delete(); ->error(
'NOT DELETE напр. подготовки {direction} - user {user}',
[
'user' => Auth::user()->name,
'direction' => $direction->name,
'data' => $direction->toArray(),
]
);
return back();
}
Log::channel('app') Log::channel('app')
->critical( ->critical(
'DELETE напр. подготовки {direction} - user {user}', 'DELETE напр. подготовки {direction} - user {user}',
@ -254,6 +256,8 @@ class DirectionController extends Controller
'data' => $direction->toArray(), 'data' => $direction->toArray(),
] ]
); );
$direction->directionProfiles()->detach();
$direction->delete();
return redirect()->route('directions.index'); return redirect()->route('directions.index');
} }

View File

@ -16,7 +16,7 @@ class StoreDepartmentRequest extends FormRequest
{ {
return [ return [
'position' => 'required|int|numeric|max:255', 'position' => 'required|int|numeric|max:255',
'name' => 'required|string|max:255', 'name' => 'required|string|max:255|unique:departments,name',
'description' => 'nullable|string', 'description' => 'nullable|string',
'slug' => 'nullable|string|max:255|unique:departments,slug', 'slug' => 'nullable|string|max:255|unique:departments,slug',
'faculty_id' => 'required|numeric|int|max:1000', 'faculty_id' => 'required|numeric|int|max:1000',

View File

@ -25,7 +25,8 @@ class UpdateDepartmentRequest extends FormRequest
'name' => [ 'name' => [
'required', 'required',
'string', 'string',
'max:255' 'max:255',
"unique:departments,name,{$this->department->id}",
], ],
]; ];
} }

View File

@ -3,7 +3,6 @@
namespace App\Services; namespace App\Services;
use App\Models\Direction; use App\Models\Direction;
use Illuminate\Support\Facades\URL;
class DirectonHtmlBuilder class DirectonHtmlBuilder
{ {
@ -17,74 +16,55 @@ class DirectonHtmlBuilder
// phpcs:disable // phpcs:disable
$direction = $this->direction; $direction = $this->direction;
$fon_3 = URL::to('img/front-page/bakalavr-special/fon3_blok.png'); return "<div class=\"offcanvas offcanvas-bottom\" data-bs-scroll=\"true\" data-bs-backdrop=\"false\" tabindex=\"-1\" id=\"offcanvasScrolling-{$direction->id }\" aria-labelledby=\"offcanvasScrollingLabel-{$direction->id}\" style=\"height: 100%; font-family: Geologica-Medium;overflow-y: auto ;\">
return "<div class=\"offcanvas offcanvas-bottom\" data-bs-scroll=\"true\" data-bs-backdrop=\"false\" tabindex=\"-1\" id=\"offcanvasScrolling-{$direction->id }\" aria-labelledby=\"offcanvasScrollingLabel-{$direction->id}\" style=\"height: 100%; font-family: Geologica-Medium; overflow-y: auto ; background-image: url({$fon_3}); color: #004329\">
<div class=\"mx-5\"> <div class=\"mx-5\">
<div class=\"col-12 d-flex justify-content-end mt-4\"> <div class=\"col-12 d-flex justify-content-end mt-4\">
<button type=\"button\" class=\"btn-close text-reset\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\"> <button type=\"button\" class=\"btn-close text-reset\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\"></button>
</button>
</div> </div>
<div class=\"row\">
<div class='row'> <div class=\"col-xl-3 col-12\">
<div class=\"display-5 \" style=\"font-family: Geologica-Light\"> {$direction->code} </div>
<div class='col-md-6 col-12 d-block'>
<div class=\"\">
<div class=\"display-6 \" style=\"font-family: Geologica-Light\"> {$direction->code} </div>
<div class=\"display-5 \" > {$direction->name}</div> <div class=\"display-5 \" > {$direction->name}</div>
</div> </div>
<div class=\"mt-4\">
<p style=\"text-align: justify;\">{$direction->description}</p>
</div>
</div>
<div class='col-md-6 col-12 d-flex justify-content-center align-items-center'> </div>
<div class=\"row\">
<div class=\"p-3 px-5 border-success fs-4\" style='border-radius: 50px; border: 2px solid;'> <div class=\"col-xl-3 col-12\">
<div > Уровень образования: <br>
<strong>{$direction->educationLevel->name} </strong> <br>
<div> Уровень образования: <span style=\"font-family: Geologica-Light\">{$direction->educationLevel->name} </span> </div>
<div> Форма обучения: <span style=\"font-family: Geologica-Light\">{$direction->educationForm->name} </span></div>
</div> </div>
<hr class='d-block d-md-none'><br> <div class=\"col-xl-3 col-12\">
<div > Форма обучения: <br>
<strong>{$direction->educationForm->name} </strong> <br>
</div> <div> Бюджетные места: <span style=\"font-family: Geologica-Light\">{$direction->budget_places} </span> </div>
<hr class='d-block d-md-none'><br> <div> Квота: <span style=\"font-family: Geologica-Light\">{$direction->quota} </span></div>
<div > Бюджетные места:
<strong >{$direction->budget_places} </strong>
</div>
<hr class='d-block d-md-none'><br>
<div > Квота:
<strong >{$direction->quota} </strong>
</div>
<hr class='d-block d-md-none'><br>
<div > Места на контракт:
<strong >{$direction->paid_places} </strong>
</div>
<hr class='d-block d-md-none'><br>
<div > Стоимость платного обучения:
<strong >{$direction->cost_paid_place} </strong>
</div>
<hr class='d-block d-md-none'><br>
<div > Период обучения (в годах):
<strong>{$direction->period} </span>
</div> </div>
<div class=\"col-xl-3 col-12\">
<br>
<br>
<div> Места на контракт: <span style=\"font-family: Geologica-Light\">{$direction->paid_places} </span> </div>
<div> Стоимость платного обучения: <span style=\"font-family: Geologica-Light\">{$direction->cost_paid_place} </span></div>
</div> </div>
<div class=\"col-xl-3 col-12\">
<br>
<br>
<div> Период обучения (в годах): <span style=\"font-family: Geologica-Light\">{$direction->period} </span> </div>
</div> </div>
</div> </div>
<div class=\"offcanvas-body mt-2\" style=\"font-family: Geologica-ExtraLight\"> <div class=\"offcanvas-body mt-2\" style=\"font-family: Geologica-ExtraLight\">
<p style=\"text-align: justify;\">{$direction->description}</p>
</div> </div>
</div> </div>
</div>
</div>
</div> "; </div> ";
} }
// phpcs:enable // phpcs:enable

View File

@ -12,28 +12,26 @@
"fakerphp/faker": "^1.23.1", "fakerphp/faker": "^1.23.1",
"guzzlehttp/guzzle": "^7.8.1", "guzzlehttp/guzzle": "^7.8.1",
"imangazaliev/didom": "^2.0.1", "imangazaliev/didom": "^2.0.1",
"laravel/framework": "^10.48.2", "laravel/framework": "^10.47.0",
"laravel/sanctum": "^3.3.3", "laravel/sanctum": "^3.3.3",
"laravel/tinker": "^2.9.0", "laravel/tinker": "^2.9.0",
"laravel/ui": "^4.5.0", "laravel/ui": "^4.5.0",
"laravelcollective/html": "^6.4.1", "laravelcollective/html": "^6.4.1",
"league/flysystem": "^3.25.0", "league/flysystem": "^3.25.0",
"maatwebsite/excel": "^3.1.55",
"rap2hpoutre/laravel-log-viewer": "^2.3", "rap2hpoutre/laravel-log-viewer": "^2.3",
"twbs/bootstrap": "5.2.3", "twbs/bootstrap": "5.2.3"
"ext-zip": "*"
}, },
"require-dev": { "require-dev": {
"laravel/breeze": "^1.29.1", "laravel/breeze": "^1.29.1",
"laravel/pint": "^1.14.0", "laravel/pint": "^1.14.0",
"laravel/sail": "^1.29.0", "laravel/sail": "^1.28.2",
"mockery/mockery": "^1.6.9", "mockery/mockery": "^1.6.7",
"nunomaduro/collision": "^7.10.0", "nunomaduro/collision": "^7.10.0",
"phpunit/phpunit": "^10.5.13", "phpunit/phpunit": "^10.5.12",
"spatie/laravel-ignition": "^2.4.2", "spatie/laravel-ignition": "^2.4.2",
"barryvdh/laravel-ide-helper": "^2.15.1", "barryvdh/laravel-ide-helper": "^2.15.1",
"squizlabs/php_codesniffer": "^3.9.0", "squizlabs/php_codesniffer": "^3.9.0",
"phpstan/phpstan": "^1.10.62" "phpstan/phpstan": "^1.10.60"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {

578
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "d5970627f595d4d501a76767ce6e8dae", "content-hash": "510b89acb2330588f3b2a70ee33a7e2e",
"packages": [ "packages": [
{ {
"name": "brick/math", "name": "brick/math",
@ -130,87 +130,6 @@
], ],
"time": "2023-12-11T17:09:12+00:00" "time": "2023-12-11T17:09:12+00:00"
}, },
{
"name": "composer/semver",
"version": "3.4.0",
"source": {
"type": "git",
"url": "https://github.com/composer/semver.git",
"reference": "35e8d0af4486141bc745f23a29cc2091eb624a32"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32",
"reference": "35e8d0af4486141bc745f23a29cc2091eb624a32",
"shasum": ""
},
"require": {
"php": "^5.3.2 || ^7.0 || ^8.0"
},
"require-dev": {
"phpstan/phpstan": "^1.4",
"symfony/phpunit-bridge": "^4.2 || ^5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "3.x-dev"
}
},
"autoload": {
"psr-4": {
"Composer\\Semver\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nils Adermann",
"email": "naderman@naderman.de",
"homepage": "http://www.naderman.de"
},
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be",
"homepage": "http://seld.be"
},
{
"name": "Rob Bast",
"email": "rob.bast@gmail.com",
"homepage": "http://robbast.nl"
}
],
"description": "Semver library that offers utilities, version constraint parsing and validation.",
"keywords": [
"semantic",
"semver",
"validation",
"versioning"
],
"support": {
"irc": "ircs://irc.libera.chat:6697/composer",
"issues": "https://github.com/composer/semver/issues",
"source": "https://github.com/composer/semver/tree/3.4.0"
},
"funding": [
{
"url": "https://packagist.com",
"type": "custom"
},
{
"url": "https://github.com/composer",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
"type": "tidelift"
}
],
"time": "2023-08-31T09:50:34+00:00"
},
{ {
"name": "dflydev/dot-access-data", "name": "dflydev/dot-access-data",
"version": "v3.0.2", "version": "v3.0.2",
@ -582,67 +501,6 @@
], ],
"time": "2023-10-06T06:47:41+00:00" "time": "2023-10-06T06:47:41+00:00"
}, },
{
"name": "ezyang/htmlpurifier",
"version": "v4.17.0",
"source": {
"type": "git",
"url": "https://github.com/ezyang/htmlpurifier.git",
"reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/bbc513d79acf6691fa9cf10f192c90dd2957f18c",
"reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c",
"shasum": ""
},
"require": {
"php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0"
},
"require-dev": {
"cerdic/css-tidy": "^1.7 || ^2.0",
"simpletest/simpletest": "dev-master"
},
"suggest": {
"cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.",
"ext-bcmath": "Used for unit conversion and imagecrash protection",
"ext-iconv": "Converts text to and from non-UTF-8 encodings",
"ext-tidy": "Used for pretty-printing HTML"
},
"type": "library",
"autoload": {
"files": [
"library/HTMLPurifier.composer.php"
],
"psr-0": {
"HTMLPurifier": "library/"
},
"exclude-from-classmap": [
"/library/HTMLPurifier/Language/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL-2.1-or-later"
],
"authors": [
{
"name": "Edward Z. Yang",
"email": "admin@htmlpurifier.org",
"homepage": "http://ezyang.com"
}
],
"description": "Standards compliant HTML filter written in PHP",
"homepage": "http://htmlpurifier.org/",
"keywords": [
"html"
],
"support": {
"issues": "https://github.com/ezyang/htmlpurifier/issues",
"source": "https://github.com/ezyang/htmlpurifier/tree/v4.17.0"
},
"time": "2023-11-17T15:01:25+00:00"
},
{ {
"name": "fakerphp/faker", "name": "fakerphp/faker",
"version": "v1.23.1", "version": "v1.23.1",
@ -1304,16 +1162,16 @@
}, },
{ {
"name": "laravel/framework", "name": "laravel/framework",
"version": "v10.48.2", "version": "v10.47.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/framework.git", "url": "https://github.com/laravel/framework.git",
"reference": "32a8bb151d748b579c3794dea53b56bd40dfbbd3" "reference": "fce29b8de62733cdecbe12e3bae801f83fff2ea4"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/32a8bb151d748b579c3794dea53b56bd40dfbbd3", "url": "https://api.github.com/repos/laravel/framework/zipball/fce29b8de62733cdecbe12e3bae801f83fff2ea4",
"reference": "32a8bb151d748b579c3794dea53b56bd40dfbbd3", "reference": "fce29b8de62733cdecbe12e3bae801f83fff2ea4",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1361,7 +1219,6 @@
"conflict": { "conflict": {
"carbonphp/carbon-doctrine-types": ">=3.0", "carbonphp/carbon-doctrine-types": ">=3.0",
"doctrine/dbal": ">=4.0", "doctrine/dbal": ">=4.0",
"mockery/mockery": "1.6.8",
"phpunit/phpunit": ">=11.0.0", "phpunit/phpunit": ">=11.0.0",
"tightenco/collect": "<5.5.33" "tightenco/collect": "<5.5.33"
}, },
@ -1507,7 +1364,7 @@
"issues": "https://github.com/laravel/framework/issues", "issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework" "source": "https://github.com/laravel/framework"
}, },
"time": "2024-03-12T16:35:43+00:00" "time": "2024-03-05T15:18:36+00:00"
}, },
{ {
"name": "laravel/prompts", "name": "laravel/prompts",
@ -2287,275 +2144,6 @@
], ],
"time": "2024-01-28T23:22:08+00:00" "time": "2024-01-28T23:22:08+00:00"
}, },
{
"name": "maatwebsite/excel",
"version": "3.1.55",
"source": {
"type": "git",
"url": "https://github.com/SpartnerNL/Laravel-Excel.git",
"reference": "6d9d791dcdb01a9b6fd6f48d46f0d5fff86e6260"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/6d9d791dcdb01a9b6fd6f48d46f0d5fff86e6260",
"reference": "6d9d791dcdb01a9b6fd6f48d46f0d5fff86e6260",
"shasum": ""
},
"require": {
"composer/semver": "^3.3",
"ext-json": "*",
"illuminate/support": "5.8.*||^6.0||^7.0||^8.0||^9.0||^10.0||^11.0",
"php": "^7.0||^8.0",
"phpoffice/phpspreadsheet": "^1.18",
"psr/simple-cache": "^1.0||^2.0||^3.0"
},
"require-dev": {
"laravel/scout": "^7.0||^8.0||^9.0||^10.0",
"orchestra/testbench": "^6.0||^7.0||^8.0||^9.0",
"predis/predis": "^1.1"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Maatwebsite\\Excel\\ExcelServiceProvider"
],
"aliases": {
"Excel": "Maatwebsite\\Excel\\Facades\\Excel"
}
}
},
"autoload": {
"psr-4": {
"Maatwebsite\\Excel\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Patrick Brouwers",
"email": "patrick@spartner.nl"
}
],
"description": "Supercharged Excel exports and imports in Laravel",
"keywords": [
"PHPExcel",
"batch",
"csv",
"excel",
"export",
"import",
"laravel",
"php",
"phpspreadsheet"
],
"support": {
"issues": "https://github.com/SpartnerNL/Laravel-Excel/issues",
"source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.55"
},
"funding": [
{
"url": "https://laravel-excel.com/commercial-support",
"type": "custom"
},
{
"url": "https://github.com/patrickbrouwers",
"type": "github"
}
],
"time": "2024-02-20T08:27:10+00:00"
},
{
"name": "maennchen/zipstream-php",
"version": "3.1.0",
"source": {
"type": "git",
"url": "https://github.com/maennchen/ZipStream-PHP.git",
"reference": "b8174494eda667f7d13876b4a7bfef0f62a7c0d1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/b8174494eda667f7d13876b4a7bfef0f62a7c0d1",
"reference": "b8174494eda667f7d13876b4a7bfef0f62a7c0d1",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"ext-zlib": "*",
"php-64bit": "^8.1"
},
"require-dev": {
"ext-zip": "*",
"friendsofphp/php-cs-fixer": "^3.16",
"guzzlehttp/guzzle": "^7.5",
"mikey179/vfsstream": "^1.6",
"php-coveralls/php-coveralls": "^2.5",
"phpunit/phpunit": "^10.0",
"vimeo/psalm": "^5.0"
},
"suggest": {
"guzzlehttp/psr7": "^2.4",
"psr/http-message": "^2.0"
},
"type": "library",
"autoload": {
"psr-4": {
"ZipStream\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Paul Duncan",
"email": "pabs@pablotron.org"
},
{
"name": "Jonatan Männchen",
"email": "jonatan@maennchen.ch"
},
{
"name": "Jesse Donat",
"email": "donatj@gmail.com"
},
{
"name": "András Kolesár",
"email": "kolesar@kolesar.hu"
}
],
"description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.",
"keywords": [
"stream",
"zip"
],
"support": {
"issues": "https://github.com/maennchen/ZipStream-PHP/issues",
"source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.0"
},
"funding": [
{
"url": "https://github.com/maennchen",
"type": "github"
},
{
"url": "https://opencollective.com/zipstream",
"type": "open_collective"
}
],
"time": "2023-06-21T14:59:35+00:00"
},
{
"name": "markbaker/complex",
"version": "3.0.2",
"source": {
"type": "git",
"url": "https://github.com/MarkBaker/PHPComplex.git",
"reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/95c56caa1cf5c766ad6d65b6344b807c1e8405b9",
"reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
},
"require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "dev-master",
"phpcompatibility/php-compatibility": "^9.3",
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
"squizlabs/php_codesniffer": "^3.7"
},
"type": "library",
"autoload": {
"psr-4": {
"Complex\\": "classes/src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mark Baker",
"email": "mark@lange.demon.co.uk"
}
],
"description": "PHP Class for working with complex numbers",
"homepage": "https://github.com/MarkBaker/PHPComplex",
"keywords": [
"complex",
"mathematics"
],
"support": {
"issues": "https://github.com/MarkBaker/PHPComplex/issues",
"source": "https://github.com/MarkBaker/PHPComplex/tree/3.0.2"
},
"time": "2022-12-06T16:21:08+00:00"
},
{
"name": "markbaker/matrix",
"version": "3.0.1",
"source": {
"type": "git",
"url": "https://github.com/MarkBaker/PHPMatrix.git",
"reference": "728434227fe21be27ff6d86621a1b13107a2562c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/728434227fe21be27ff6d86621a1b13107a2562c",
"reference": "728434227fe21be27ff6d86621a1b13107a2562c",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "dev-master",
"phpcompatibility/php-compatibility": "^9.3",
"phpdocumentor/phpdocumentor": "2.*",
"phploc/phploc": "^4.0",
"phpmd/phpmd": "2.*",
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
"sebastian/phpcpd": "^4.0",
"squizlabs/php_codesniffer": "^3.7"
},
"type": "library",
"autoload": {
"psr-4": {
"Matrix\\": "classes/src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mark Baker",
"email": "mark@demon-angel.eu"
}
],
"description": "PHP Class for working with matrices",
"homepage": "https://github.com/MarkBaker/PHPMatrix",
"keywords": [
"mathematics",
"matrix",
"vector"
],
"support": {
"issues": "https://github.com/MarkBaker/PHPMatrix/issues",
"source": "https://github.com/MarkBaker/PHPMatrix/tree/3.0.1"
},
"time": "2022-12-02T22:17:43+00:00"
},
{ {
"name": "monolog/monolog", "name": "monolog/monolog",
"version": "3.5.0", "version": "3.5.0",
@ -3056,111 +2644,6 @@
], ],
"time": "2023-02-08T01:06:31+00:00" "time": "2023-02-08T01:06:31+00:00"
}, },
{
"name": "phpoffice/phpspreadsheet",
"version": "1.29.0",
"source": {
"type": "git",
"url": "https://github.com/PHPOffice/PhpSpreadsheet.git",
"reference": "fde2ccf55eaef7e86021ff1acce26479160a0fa0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/fde2ccf55eaef7e86021ff1acce26479160a0fa0",
"reference": "fde2ccf55eaef7e86021ff1acce26479160a0fa0",
"shasum": ""
},
"require": {
"ext-ctype": "*",
"ext-dom": "*",
"ext-fileinfo": "*",
"ext-gd": "*",
"ext-iconv": "*",
"ext-libxml": "*",
"ext-mbstring": "*",
"ext-simplexml": "*",
"ext-xml": "*",
"ext-xmlreader": "*",
"ext-xmlwriter": "*",
"ext-zip": "*",
"ext-zlib": "*",
"ezyang/htmlpurifier": "^4.15",
"maennchen/zipstream-php": "^2.1 || ^3.0",
"markbaker/complex": "^3.0",
"markbaker/matrix": "^3.0",
"php": "^7.4 || ^8.0",
"psr/http-client": "^1.0",
"psr/http-factory": "^1.0",
"psr/simple-cache": "^1.0 || ^2.0 || ^3.0"
},
"require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "dev-main",
"dompdf/dompdf": "^1.0 || ^2.0",
"friendsofphp/php-cs-fixer": "^3.2",
"mitoteam/jpgraph": "^10.3",
"mpdf/mpdf": "^8.1.1",
"phpcompatibility/php-compatibility": "^9.3",
"phpstan/phpstan": "^1.1",
"phpstan/phpstan-phpunit": "^1.0",
"phpunit/phpunit": "^8.5 || ^9.0 || ^10.0",
"squizlabs/php_codesniffer": "^3.7",
"tecnickcom/tcpdf": "^6.5"
},
"suggest": {
"dompdf/dompdf": "Option for rendering PDF with PDF Writer",
"ext-intl": "PHP Internationalization Functions",
"mitoteam/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers",
"mpdf/mpdf": "Option for rendering PDF with PDF Writer",
"tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer"
},
"type": "library",
"autoload": {
"psr-4": {
"PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Maarten Balliauw",
"homepage": "https://blog.maartenballiauw.be"
},
{
"name": "Mark Baker",
"homepage": "https://markbakeruk.net"
},
{
"name": "Franck Lefevre",
"homepage": "https://rootslabs.net"
},
{
"name": "Erik Tilt"
},
{
"name": "Adrien Crivelli"
}
],
"description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine",
"homepage": "https://github.com/PHPOffice/PhpSpreadsheet",
"keywords": [
"OpenXML",
"excel",
"gnumeric",
"ods",
"php",
"spreadsheet",
"xls",
"xlsx"
],
"support": {
"issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues",
"source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.29.0"
},
"time": "2023-06-14T22:48:31+00:00"
},
{ {
"name": "phpoption/phpoption", "name": "phpoption/phpoption",
"version": "1.9.2", "version": "1.9.2",
@ -7452,16 +6935,16 @@
}, },
{ {
"name": "laravel/sail", "name": "laravel/sail",
"version": "v1.29.0", "version": "v1.28.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/sail.git", "url": "https://github.com/laravel/sail.git",
"reference": "e40cc7ffb5186c45698dbd47e9477e0e429396d0" "reference": "057777403b8ab79222dcc04983beaab10b6de6a0"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/sail/zipball/e40cc7ffb5186c45698dbd47e9477e0e429396d0", "url": "https://api.github.com/repos/laravel/sail/zipball/057777403b8ab79222dcc04983beaab10b6de6a0",
"reference": "e40cc7ffb5186c45698dbd47e9477e0e429396d0", "reference": "057777403b8ab79222dcc04983beaab10b6de6a0",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -7510,11 +6993,11 @@
"issues": "https://github.com/laravel/sail/issues", "issues": "https://github.com/laravel/sail/issues",
"source": "https://github.com/laravel/sail" "source": "https://github.com/laravel/sail"
}, },
"time": "2024-03-08T16:32:33+00:00" "time": "2024-03-04T14:58:29+00:00"
}, },
{ {
"name": "mockery/mockery", "name": "mockery/mockery",
"version": "1.6.9", "version": "1.6.7",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/mockery/mockery.git", "url": "https://github.com/mockery/mockery.git",
@ -8028,16 +7511,16 @@
}, },
{ {
"name": "phpstan/phpstan", "name": "phpstan/phpstan",
"version": "1.10.62", "version": "1.10.60",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phpstan/phpstan.git", "url": "https://github.com/phpstan/phpstan.git",
"reference": "cd5c8a1660ed3540b211407c77abf4af193a6af9" "reference": "95dcea7d6c628a3f2f56d091d8a0219485a86bbe"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/cd5c8a1660ed3540b211407c77abf4af193a6af9", "url": "https://api.github.com/repos/phpstan/phpstan/zipball/95dcea7d6c628a3f2f56d091d8a0219485a86bbe",
"reference": "cd5c8a1660ed3540b211407c77abf4af193a6af9", "reference": "95dcea7d6c628a3f2f56d091d8a0219485a86bbe",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -8086,20 +7569,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-03-13T12:27:20+00:00" "time": "2024-03-07T13:30:19+00:00"
}, },
{ {
"name": "phpunit/php-code-coverage", "name": "phpunit/php-code-coverage",
"version": "10.1.14", "version": "10.1.13",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
"reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b" "reference": "d51c3aec14896d5e80b354fad58e998d1980f8f8"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d51c3aec14896d5e80b354fad58e998d1980f8f8",
"reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", "reference": "d51c3aec14896d5e80b354fad58e998d1980f8f8",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -8156,7 +7639,7 @@
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
"security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.14" "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.13"
}, },
"funding": [ "funding": [
{ {
@ -8164,7 +7647,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2024-03-12T15:33:41+00:00" "time": "2024-03-09T16:54:15+00:00"
}, },
{ {
"name": "phpunit/php-file-iterator", "name": "phpunit/php-file-iterator",
@ -8411,16 +7894,16 @@
}, },
{ {
"name": "phpunit/phpunit", "name": "phpunit/phpunit",
"version": "10.5.13", "version": "10.5.12",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git", "url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "20a63fc1c6db29b15da3bd02d4b6cf59900088a7" "reference": "41a9886b85ac7bf3929853baf96b95361cd69d2b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/20a63fc1c6db29b15da3bd02d4b6cf59900088a7", "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/41a9886b85ac7bf3929853baf96b95361cd69d2b",
"reference": "20a63fc1c6db29b15da3bd02d4b6cf59900088a7", "reference": "41a9886b85ac7bf3929853baf96b95361cd69d2b",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -8492,7 +7975,7 @@
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues", "issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy", "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
"source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.13" "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.12"
}, },
"funding": [ "funding": [
{ {
@ -8508,7 +7991,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-03-12T15:37:41+00:00" "time": "2024-03-09T12:04:07+00:00"
}, },
{ {
"name": "psr/cache", "name": "psr/cache",
@ -9989,8 +9472,7 @@
"prefer-stable": true, "prefer-stable": true,
"prefer-lowest": false, "prefer-lowest": false,
"platform": { "platform": {
"php": "^8", "php": "^8"
"ext-zip": "*"
}, },
"platform-dev": [], "platform-dev": [],
"plugin-api-version": "2.6.0" "plugin-api-version": "2.6.0"

View File

@ -10,7 +10,7 @@ return new class extends Migration
{ {
Schema::create('departments', function (Blueprint $table) { Schema::create('departments', function (Blueprint $table) {
$table->id(); $table->id();
$table->string('name', 255); $table->string('name', 255)->unique();
$table->text('description')->nullable(); $table->text('description')->nullable();
$table->smallInteger('position'); $table->smallInteger('position');
$table->string('slug', 255)->unique(); $table->string('slug', 255)->unique();

View File

@ -24,14 +24,7 @@
@foreach($directions as $direction) @foreach($directions as $direction)
<tr class=""> <tr class="">
<th scope="row">{{ $direction->position }}</th> <th scope="row">{{ $direction->position }}</th>
<td><a href="{{ route('directions.show', $direction) }}">{{ $direction->name }}</a> <td><a href="{{ route('directions.show', $direction) }}">{{ $direction->name }}</a></td>
<br>
<p @style(['font-size: 0.7em', 'color: grey'])>
@foreach($direction->directionProfiles as $directionProfile)
{{ $directionProfile->name }}
@endforeach
</p>
</td>
<td>{{ Str::words($direction->description, 10, '...') }}</td> <td>{{ Str::words($direction->description, 10, '...') }}</td>
<td>{{ $direction->slug }}</td> <td>{{ $direction->slug }}</td>
<td>{{ $direction->department->name }}</td> <td>{{ $direction->department->name }}</td>

View File

@ -12,7 +12,7 @@
<span class="text-danger">*</span> <span class="text-danger">*</span>
</div> </div>
<div class="mt-2"> <div class="mt-2">
{{ Form::number('position', PositionHelper::educationalInstitution(), ['class' => 'form-control', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.educational_institutions.position'), 'required']) }} {{ Form::text('position', PositionHelper::educationalInstitution(), ['class' => 'form-control', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.educational_institutions.position'), 'required']) }}
<div class="invalid-feedback"> <div class="invalid-feedback">
Поле "Позиция" обязательно! Поле "Позиция" обязательно!
</div> </div>
@ -28,7 +28,7 @@
<span class="text-danger">*</span> <span class="text-danger">*</span>
</div> </div>
<div class="mt-2"> <div class="mt-2">
{{ Form::text('name', '', ['class' => 'form-control', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.educational_institutions.name'), 'required']) }} {{ Form::number('name', '', ['class' => 'form-control', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.educational_institutions.name'), 'required']) }}
<div class="invalid-feedback"> <div class="invalid-feedback">
Поле "Название" обязательно! Поле "Название" обязательно!
</div> </div>

View File

@ -3,10 +3,6 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta name="csrf-token" content="{{ csrf_token() }}"> <meta name="csrf-token" content="{{ csrf_token() }}">
<meta name="csrf-param" content="_token"/> <meta name="csrf-param" content="_token"/>
<title>Панель администратора</title> <title>Панель администратора</title>

View File

@ -18,7 +18,6 @@ use Rap2hpoutre\LaravelLogViewer\LogViewerController;
Route::middleware(['auth', 'verified'])->prefix('admin')->group(function () { Route::middleware(['auth', 'verified'])->prefix('admin')->group(function () {
Route::get('/logs', [LogViewerController::class, 'index']); Route::get('/logs', [LogViewerController::class, 'index']);
Route::get('/exportExcel', [LogViewerController::class, 'index']);
Route::get('/dashboard', function () { Route::get('/dashboard', function () {
return view('admin'); return view('admin');

View File

@ -130,4 +130,27 @@ class DirectionTest extends TestCase
$this->assertDatabaseMissing('directions', $this->direction->toArray()); $this->assertDatabaseMissing('directions', $this->direction->toArray());
} }
public function testNotDestroyDirectionWithEntranceExamination(): void
{
$response = $this->actingAs($this->user)
->withSession(['banned' => false])
->delete(route('directions.destroy', $this->direction));
$response->assertStatus(302);
$this->assertDatabaseHas(
'directions',
$this->direction->only([
'position',
'name',
'description',
'code',
'slug',
'education_level_id',
'education_form_id',
'department_id',
])
);
}
} }