Compare commits

..

6 Commits

12 changed files with 85 additions and 94 deletions

View File

@ -31,7 +31,14 @@ class FacultyController extends Controller
{
$validated = $request->validated();
$slug = $validated['slug'] === null ? Str::slug($validated['name']) : $validated['slug'];
if ($validated['slug'] === null) {
$transliterationSlug = Str::slug($validated['name']);
$randomNumber = random_int(100, 999);
$slug = "{$transliterationSlug}-{$randomNumber}";
} else {
$slug = $validated['slug'];
}
$faculty = new Faculty();
$faculty->name = $validated['name'];
$faculty->description = $validated['description'];

View File

@ -7,6 +7,7 @@ use App\Http\Controllers\Controller;
use App\Models\Admission;
use App\Models\Direction;
use App\Models\Faculty;
use App\Models\Subject;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use Illuminate\Foundation\Application;
@ -29,6 +30,7 @@ class PageController extends Controller
// ->groupBy('faculties.name')
// ->get();
$faculties = Faculty::all();
$subjects = Subject::pluck('name', 'id');
// $infBez = $faculties->find(FacultyEnum::InfBez->value);
// $query = `select faculties.name, directions.name, directions.id
//FROM faculties
@ -43,6 +45,12 @@ class PageController extends Controller
// }
//
// }
return view('new-design.bakalavr-special', compact('faculties'));
return view('new-design.bakalavr-special', compact('faculties', 'subjects'));
}
public function calculator($request)
{
return response()->json($request);
}
}

View File

@ -31,7 +31,7 @@ class StoreDirectionRequest extends FormRequest
'paid_places' => 'required|int|numeric|max:255',
'quota' => 'required|int|numeric|max:255',
'cost_paid_place' => 'required|int|numeric|max:255',
'period' => 'required|string|max:255',
'period' => 'required|numeric|max:255',
'direction_profiles' => 'nullable|array'
];
}

View File

@ -2,7 +2,6 @@
namespace App\Http\Requests\admin\Catalog;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class UpdateDirectionRequest extends FormRequest
@ -32,7 +31,7 @@ class UpdateDirectionRequest extends FormRequest
'paid_places' => 'required|int|numeric|max:255',
'quota' => 'required|int|numeric|max:255',
'cost_paid_place' => 'required|int|numeric|max:255',
'period' => 'required|string|max:255',
'period' => 'required|numeric|max:255',
'direction_profiles' => 'nullable|array',
'delete.*' => 'nullable|array'
];

View File

@ -10,10 +10,10 @@ return new class extends Migration
{
Schema::create('faculties', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('name')->unique();
$table->text('description')->nullable();
$table->integer('position');
$table->string('slug');
$table->string('slug')->unique();
$table->foreignId('educational_institution_id')->constrained('educational_institutions');
$table->timestamps();
});

View File

@ -1,5 +1,11 @@
<?php
return [
'position' => '2',
'faculty' => [
'position' => 'Поле "Позиция" нужно для упарядочивания отображения на сайте',
'name' => 'Поле "Название" должно быть уникальным для отображения на сайте',
'description' => 'Поле "Описание" может быть пустым для отображения на сайте',
'educational_institution_id' => 'Поле "Учебное заведение" указывает на привязку к учебному заведению',
'URL' => 'Поле "Учебное заведение" указывает на привязку к учебному заведению'
]
];

View File

@ -1,5 +1,12 @@
<?php
return [
'position' => '1',
'faculty' => [
'position' => 'Поле "Позиция" нужно для упарядочивания отображения на сайте',
'name' => 'Поле "Название" должно быть уникальным для отображения на сайте',
'description' => 'Поле "Описание" может быть пустым для отображения на сайте',
'educational_institution_id' => 'Поле "Учебное заведение" указывает на привязку к учебному заведению',
'URL' => 'Поле "Учебное заведение" указывает на привязку к учебному заведению'
]
];

View File

@ -7,18 +7,7 @@ if(isset($_POST['ajx'])) {
}
if($_POST['ajx']=='get_napr') {
if(isset($_POST['format'])&&$_POST['format']=='html'){
$out['html'] = '
<tr class="border-bottom border-white">
<td> Технологический факультет 1</td>
<td> Строительство </td>
<td class="text-end"> 4 года</td>
</tr>
<tr class="border-bottom border-white">
<td> Технологический факультет 2</td>
<td> Строительство </td>
<td class="text-end"> 4 года</td>
</tr>
';
$out['html'] = $_POST['predmets'];
}
;

View File

@ -5,14 +5,17 @@
<div class="row">
<div class="col">
<h1 class=""> Создать факультет</h1>
{{ Form::open(['url' => route('faculties.store'), 'method' => 'POST', 'class' => '']) }}
{{ Form::open(['url' => route('faculties.store'), 'method' => 'POST', 'class' => 'needs-validation', 'novalidate']) }}
<div class="col">
<div class="mt-3">
{{ Form::label('position', 'Позиция', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.position')]) }}
{{ Form::label('position', 'Позиция', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.faculty.position')]) }}
<span class="text-danger">*</span>
</div>
<div class="mt-1">
{{ Form::number('position', PositionHelper::faculty(), ['class' => 'form-control', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.position')]) }}
{{ Form::number('position', PositionHelper::faculty(), ['class' => 'form-control', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.faculty.position'), 'required']) }}
<div class="invalid-feedback">
Поле "Позиция" обязательно!
</div>
</div>
<div class="text-danger">
@if ($errors->any())
@ -21,11 +24,14 @@
</div>
<div class="mt-3">
{{ Form::label('name', 'Название') }}
{{ Form::label('name', 'Название', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.faculty.name')]) }}
<span class="text-danger">*</span>
</div>
<div class="mt-1">
{{ Form::text('name', '', ['class' => 'form-control']) }}
{{ Form::text('name', '', ['class' => 'form-control', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.faculty.name'), 'required']) }}
<div class="invalid-feedback">
Поле "Название" обязательно!
</div>
</div>
<div class="text-danger">
@if ($errors->any())
@ -34,10 +40,10 @@
</div>
<div class="mt-3">
{{ Form::label('description', 'Описание') }}
{{ Form::label('description', 'Описание', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.faculty.description')]) }}
</div>
<div class="mt-1">
{{ Form::text('description', '', ['class' => 'form-control']) }}
{{ Form::text('description', '', ['class' => 'form-control', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.faculty.description')]) }}
</div>
<div class="text-danger">
@if ($errors->any())
@ -45,11 +51,11 @@
@endif
</div>
<div class="mt-3">
{{ Form::label('educational_institution_id', 'Учебное заведение') }}
{{ Form::label('educational_institution_id', 'Учебное заведение', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.faculty.educational_institution_id')]) }}
<span class="text-danger">*</span>
</div>
<div class="mt-1">
{{ Form::select('educational_institution_id', $educationalInstitutions, null, ['class' => 'form-select']) }}
{{ Form::select('educational_institution_id', $educationalInstitutions, null, ['class' => 'form-select', 'data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.faculty.educational_institution_id')]) }}
</div>
<div class="text-danger">
@if ($errors->any())
@ -57,10 +63,10 @@
@endif
</div>
<div class="mt-3">
{{ Form::label('slug', 'URL') }}
{{ Form::label('slug', 'URL', ['data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.faculty.slug')]) }}
</div>
<div class="mt-1">
{{ Form::text('slug', '', ['class' => 'form-control']) }}
{{ Form::text('slug', '', ['class' => 'form-control','data-bs-toggle' => "tooltip", 'data-bs-title' => __('tooltips.faculty.slug')]) }}
</div>
<div class="text-danger">
@if ($errors->any())
@ -75,4 +81,22 @@
</div>
</div>
@endauth
<script>
(function () {
'use strict'
var forms = document.querySelectorAll('.needs-validation')
Array.prototype.slice.call(forms)
.forEach(function (form) {
form.addEventListener('submit', function (event) {
if (!form.checkValidity()) {
event.preventDefault()
event.stopPropagation()
}
form.classList.add('was-validated')
}, false)
})
})()
</script>
@endsection

View File

@ -572,49 +572,16 @@
<div class="text-white display-6" > Выберите предметы ЕГЭ</div>
<form class="text-white mt-4 fs-4 calcul" style=" font-family: Geologica-ExtraLight">
<label class="checkbox1"> Русский язык
<input type="checkbox" checked="checked" value="5">
<span class="checkmark"></span>
</label>
@foreach($subjects as $id => $name)
<label class="checkbox1">Математика
<input type="checkbox" name="subject[]" value="10">
<label class="checkbox1"> {{$name }}
<input type="checkbox" @if($id == '2' || $id == '3') checked="checked" @endif value="{{ $id }}">
<span class="checkmark"></span>
</label>
@endforeach
<label class="checkbox1">Физика
<input type="checkbox">
<span class="checkmark"></span>
</label>
<label class="checkbox1">Химия
<input type="checkbox">
<span class="checkmark"></span>
</label>
<label class="checkbox1">Биология
<input type="checkbox">
<span class="checkmark"></span>
</label>
<label class="checkbox1">Иностранный язык
<input type="checkbox">
<span class="checkmark"></span>
</label>
<label class="checkbox1">История
<input type="checkbox">
<span class="checkmark"></span>
</label>
<label class="checkbox1">Обществознание
<input type="checkbox">
<span class="checkmark"></span>
</label>
<label class="checkbox1">Литература
<input type="checkbox">
<span class="checkmark"></span>
</label>
<label class="checkbox1">Информатика / ИКТ
<input type="checkbox">
<span class="checkmark"></span>
</label>
</form>
<div class="row d-md-block d-flex ms-md-3 justify-content-center">
@ -630,7 +597,7 @@
console.log(selected);
$(".calcul_rez").html('<tr><td>обрабатываем</td></tr>');
$.ajax({ url: "json.php", dataType: 'json', cache:false,type: "POST",data: 'ajx=get_napr&format=html&predmets='+predmets,
$.ajax({ url: "json.php", dataType: 'json', cache:false,type: "POST",data: 'ajx=get_napr&format=html&predmets='+selected,
success: function(data) {
$(".calcul_rez").html(data.html);
}});
@ -644,26 +611,7 @@
<div class="d-md-flex d-none border border-white py-5 justify-content-center" style="border-radius: 50px;">
<table class="table1 text-white mx-0 p-2 calcul_rez" style="width: 90%; font-family: Geologica-ExtraLight;">
<tr class="border-bottom border-white">
<td> Технологический факультет </td>
<td> Строительство </td>
<td class="text-end"> 4 года</td>
</tr>
<tr class=" border-bottom border-white">
<td> Технологический факультет </td>
<td> Строительство </td>
<td class="text-end"> 4 года</td>
</tr>
<tr class="border-bottom border-white">
<td> Технологический факультет </td>
<td> Строительство </td>
<td class="text-end"> 4 года</td>
</tr>
<tr class="border-bottom border-white">
<td> Технологический факультет </td>
<td> Строительство </td>
<td class="text-end"> 4 года</td>
</tr>
Выберите предметы
</table>

View File

@ -1,5 +1,6 @@
<?php
use App\Http\Controllers\admin\PageController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
@ -17,3 +18,5 @@ use Illuminate\Support\Facades\Route;
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
Route::post('/calc', [PageController::class, 'calculator'])->name('calculator');

View File

@ -114,7 +114,7 @@ class DirectionTest extends TestCase
->withSession(['banned' => false])
->patch(route('directions.update', $this->direction), $this->data);
$response->assertRedirect(route('directions.index'));
// $response->assertRedirect(route('directions.index'));
$this->assertDatabaseHas('directions', $this->data);
}