Commit d152a3a68ea75a05369b83e08b3dfbd276998a38

Authored by Андрей Ларионов
1 parent 5b68533bb1

Создание основных страниц публичной части сайта

Showing 60 changed files with 2320 additions and 608 deletions Side-by-side Diff

app/Http/Controllers/Admin/Ad_EmployersController.php
... ... @@ -4,6 +4,7 @@ namespace App\Http\Controllers\Admin;
4 4  
5 5 use App\Http\Controllers\Controller;
6 6 use App\Models\Ad_employer;
  7 +use App\Models\Ad_jobs;
7 8 use App\Models\Employer;
8 9 use App\Models\Job_title;
9 10 use App\Models\User;
... ... @@ -66,6 +67,7 @@ class Ad_EmployersController extends Controller
66 67 if ($request->ajax()) {
67 68 return view('admin.ad_employers.index_ajax', compact('ad_employers', 'params'));
68 69 } else {
  70 + // конец
69 71 return view('admin.ad_employers.index', compact('ad_employers',
70 72 'title',
71 73 'all_ad',
... ... @@ -178,15 +180,10 @@ class Ad_EmployersController extends Controller
178 180 return redirect()->route('admin.ad-employers')
179 181 ->with('success', 'Данные были успешно сохранены');
180 182 }
  183 +
181 184 return redirect()->route('admin.ad-employers');
182 185 }
183 186  
184   - /**
185   - * Remove the specified resource from storage.
186   - *
187   - * @param \App\Models\Ad_employer $ad_employer
188   - * @return \Illuminate\Http\Response
189   - */
190 187 public function destroy(Ad_employer $ad_employer)
191 188 {
192 189 $ad_employer->is_remove = 1;
... ... @@ -194,4 +191,38 @@ class Ad_EmployersController extends Controller
194 191  
195 192 return redirect()->route('admin.ad-employers');
196 193 }
  194 +
  195 +
  196 + public function update_ad_jobs(Ad_jobs $ad_jobs, Request $request) {
  197 + $params = $request->all();
  198 +
  199 + $rules = [
  200 + 'min_salary' => 'required|integer|min:0|max:99999999',
  201 + 'max_salary' => 'required|integer|min:0|max:99999999',
  202 +
  203 + ];
  204 + $messages = [
  205 + 'required' => 'Укажите обязательное поле',
  206 + 'min' => 'Минимальное значение 0',
  207 + 'max' => 'Превышено максимальное значение',
  208 + 'integer' => 'Это должно быть числом'
  209 + ];
  210 +
  211 + $validator = Validator::make($params, $rules, $messages);
  212 +
  213 + if ($validator->fails()) {
  214 + return redirect()->route('admin.edit_jobs', ['ad_jobs' => $ad_jobs->id])
  215 + ->withErrors($validator);
  216 + } else {
  217 + $ad_jobs->update($params);
  218 + return redirect()->route('admin.ad-employers')
  219 + ->with('success', 'Данные были успешно сохранены');
  220 + }
  221 +
  222 + return redirect()->route('admin.ad-employers');
  223 + }
  224 +
  225 + public function edit_jobs(Ad_jobs $ad_jobs) {
  226 + return view('admin.ad_jobs.edit', compact('ad_jobs'));
  227 + }
197 228 }
app/Http/Controllers/Admin/EmployersController.php
... ... @@ -3,10 +3,12 @@
3 3 namespace App\Http\Controllers\Admin;
4 4  
5 5 use App\Http\Controllers\Controller;
  6 +use App\Http\Requests\FlotRequest;
6 7 use App\Models\Ad_employer;
7 8 use App\Models\Answer;
8 9 use App\Models\CategoryEmp;
9 10 use App\Models\Employer;
  11 +use App\Models\Flot;
10 12 use App\Models\Static_ad;
11 13 use App\Models\User;
12 14 use Illuminate\Http\Request;
... ... @@ -83,9 +85,54 @@ class EmployersController extends Controller
83 85 return view('admin.employer.comment', compact('employer'));
84 86 }
85 87  
  88 + // Форма обновления
86 89 public function form_update_employer(Employer $employer) {
  90 + // данные
87 91 $select_category = CategoryEmp::query()->active()->get();
88   - return view('admin.employer.edit', compact('employer', 'select_category'));
  92 + $flots = Flot::query()->where('employer_id', '=', $employer->id)->get();
  93 + return view('admin.employer.edit', compact('employer', 'select_category', 'flots'));
  94 + }
  95 +
  96 + public function edit_flot(Flot $flot, Employer $employer) {
  97 + return view('admin.flot.edit', compact('flot', 'employer'));
  98 + }
  99 +
  100 + public function add_flot(Employer $employer) {
  101 + return view('admin.flot.add', compact('employer'));
  102 + }
  103 +
  104 + public function save_add_flot(FlotRequest $request) {
  105 + $params = $request->all();
  106 + $params['image'] = $request->file('image')->store("flot", 'public');
  107 + Flot::create($params);
  108 + return redirect()->route('admin.employer-profile', ['employer' => $params['employer_id']])
  109 + ->with('success', 'Данные были успешно сохранены');
  110 + }
  111 +
  112 + public function delete_flot(Flot $flot, $employer_id) {
  113 + $flot->delete();
  114 + return redirect()->route('admin.employer-profile', ['employer' => $employer_id])
  115 + ->with('success', 'Данные были успешно сохранены');
  116 + }
  117 +
  118 +
  119 + public function edit_save_flot(Flot $flot, FlotRequest $request) {
  120 + $params = $request->all();
  121 +
  122 + if ($request->has('image')) {
  123 + if (!empty($flot->image)) {
  124 + Storage::delete($flot->image);
  125 + }
  126 + $params['image'] = $request->file('image')->store("flot", 'public');
  127 + } else {
  128 + if (!empty($flot->image)) $params['image'] = $flot->image;
  129 + }
  130 +
  131 + $flot->update($params);
  132 +
  133 + return redirect()->route('admin.employer-profile', ['employer' => $params['employer_id']])
  134 + ->with('success', 'Данные были успешно сохранены');
  135 +
89 136 }
90 137  
91 138 public function update_employer(Employer $employer, Request $request)
... ... @@ -221,8 +268,5 @@ class EmployersController extends Controller
221 268 return view('admin.static.index_ads_ajax', compact('stat'));
222 269 else
223 270 return view('admin.static.index_ads', compact('stat', 'ads', 'periods'));
224   -
225 271 }
226   -
227   -
228 272 }
app/Http/Controllers/CompanyController.php
... ... @@ -2,9 +2,48 @@
2 2  
3 3 namespace App\Http\Controllers;
4 4  
  5 +use App\Models\Employer;
5 6 use Illuminate\Http\Request;
6 7  
7 8 class CompanyController extends Controller
8 9 {
9   - //
  10 + public function shipping_companies(Request $request) {
  11 + $emps = Employer::query()->with('ads');
  12 + if ($request->get('search')) {
  13 + $search = $request->get('search');
  14 + $emps = $emps->where('name_company', 'LIKE', "%$search%");
  15 + }
  16 +
  17 + $count_emps = $emps->count();
  18 +
  19 + if ($request->get('sort')) {
  20 + $sort = $request->get('sort');
  21 + switch ($sort) {
  22 + case 'name_up': $emps = $emps->orderBy('name_company')->orderBy('id'); break;
  23 + case 'name_down': $emps = $emps->orderByDesc('name_company')->orderby('id'); break;
  24 + case 'created_at_up': $emps = $emps->OrderBy('created_at')->orderBy('id'); break;
  25 + case 'created_at_down': $emps = $emps->orderByDesc('created_at')->orderBy('id'); break;
  26 + case 'default': $emps = $emps->orderBy('id')->orderby('updated_at'); break;
  27 + default: $emps = $emps->orderBy('id')->orderby('updated_at'); break;
  28 + }
  29 + }
  30 +
  31 + $emps = $emps->paginate(4);
  32 +
  33 + if ($request->ajax()) {
  34 + if ($request->get('block') == '1')
  35 + return view('ajax.companies', compact('emps', 'count_emps'));
  36 + else
  37 + return view('ajax.companies2', compact('emps', 'count_emps'));
  38 + } else {
  39 + return view('companies', compact('emps', 'count_emps'));
  40 + }
  41 + }
  42 +
  43 + public function info_company(Employer $company) {
  44 + $company = Employer::with('ads')->with('flots')
  45 + ->where('id', '=', $company->id)->get();
  46 + $title = $company[0]->name_company;
  47 + return view('info_company', compact('company', 'title'));
  48 + }
10 49 }
app/Http/Controllers/EmployerController.php
... ... @@ -2,9 +2,27 @@
2 2  
3 3 namespace App\Http\Controllers;
4 4  
  5 +use App\Models\Ad_employer;
  6 +use App\Models\Category;
5 7 use Illuminate\Http\Request;
6 8  
7 9 class EmployerController extends Controller
8 10 {
9   - //
  11 + public function vacancie($vacancy, Request $request) {
  12 + $title = 'Заголовок вакансии';
  13 +
  14 + $Query = Ad_employer::with('jobs')->
  15 + with('cat')->
  16 + with('employer')->
  17 + with('jobs_code')->
  18 + select('ad_employers.*')->
  19 + where('id', '=', $vacancy)->get();
  20 +
  21 + $title = $Query[0]->name;
  22 + if ($request->ajax()) {
  23 + return view('ajax.vacance-item', compact('Query'));
  24 + } else {
  25 + return view('vacance-item', compact('title', 'Query'));
  26 + }
  27 + }
10 28 }
app/Http/Controllers/MainController.php
... ... @@ -2,7 +2,9 @@
2 2  
3 3 namespace App\Http\Controllers;
4 4  
  5 +use App\Models\Ad_employer;
5 6 use App\Models\Category;
  7 +use App\Models\Education;
6 8 use App\Models\Employer;
7 9 use App\Models\Job_title;
8 10 use App\Models\News;
... ... @@ -55,37 +57,62 @@ class MainController extends Controller
55 57 }
56 58  
57 59 //Вакансии категория детальная
58   - public function list_vacancies(Request $request) {
59   - $data = $request->all();
60   -
61   - if ($data['categories'] == 'all') {
62   - $Categories_id = 0;
63   - } else {
64   - $Categories_id = $data['categories'];
  60 + public function list_vacancies(Category $categories, Request $request) {
  61 +
  62 + $Query = Ad_employer::with('jobs')->
  63 + with('cat')->
  64 + with('employer')->
  65 + whereHas('jobs_code', function ($query) use ($request) {
  66 + if ($request->ajax()) {
  67 + if (null !== ($request->get('job'))) {
  68 + $query->where('job_title_id', $request->get('job'));
  69 + }
  70 + }
  71 + })
  72 + ->select('ad_employers.*');
  73 +
  74 + if ($categories->id > 0) {
  75 + $Query = $Query->where('category_id', '=', $categories->id);
  76 + $Name_categori = Category::query()->where('id', '=', $categories->id)->get();
65 77 }
66 78  
67   - if ($data['job_titles'] == 'all') {
68   - $job_titles_id = 0;
69   - } else {
70   - $job_titles_id = $data['job_titles'];
71   - }
  79 + $Job_title = Job_title::query()->OrderBy('name')->get();
72 80  
73   - $Query = Employer::with('jobs')->with('cat')->select('employers.*');
74   - if ($Categories_id > 0) {
75   - $Query = $Query->where('category_id', '=', $Categories_id);
76   - $Name_categori = Category::query()->where('id', '=', $Categories_id)->get();
  81 + $Query_count = $Query->count();
77 82  
78   - }
  83 + $Query = $Query->OrderBy('updated_at')->paginate(3);
  84 +
  85 + $Reclama = reclame::query()->limit(3)->get();
79 86  
80   - if ($job_titles_id > 0) {
81   - $Query = $Query->join('ad_jobs', 'job_title_id', '=', $job_titles_id);
  87 +
  88 +
  89 + if ($request->ajax()) {
  90 + return view('ajax.list_vacancies', compact('Query', 'Query_count', 'Name_categori', 'Reclama', 'categories'));
  91 + } else {
  92 + //Вернуть все
  93 + return view('list_vacancies', compact('Query',
  94 + 'Query_count',
  95 + 'Reclama',
  96 + 'Name_categori',
  97 + 'categories',
  98 + 'Job_title'));
82 99 }
  100 + }
83 101  
84   - // Данные
85   - $Job_title = Job_title::query()->get();
86   - $Query = $Query->OrderBy('updated_at')->paginate(15);
87   - $Reclama = reclame::query()->limit(3)->get();
  102 + // Образование
  103 + public function education(Request $request) {
  104 + $educations = Education::query();
  105 + if ($request->has('search')) {
  106 + $search = trim($request->has('search'));
  107 + $educations = $educations->where('name', 'LIKE', "%$search%");
  108 + }
  109 + $count_edu = $educations->count();
  110 + $educations = $educations->paginate(6);
  111 + return view('education', compact('educations', 'count_edu'));
  112 + }
88 113  
89   - return view('list_vacancies', compact('Query', 'Reclama', 'Name_categori', 'Job_title'));
  114 + // Контакты
  115 + public function contacts() {
  116 + return view('contacts');
90 117 }
91 118 }
app/Http/Controllers/PagesController.php
... ... @@ -12,7 +12,8 @@ class PagesController extends Controller
12 12 {
13 13 public function pages(pages $pages) {
14 14 $page = pages::query()->where('slug', $pages->slug)->first();
15   - print_r($page);
  15 +
  16 + return view('pages', compact('page'));
16 17 }
17 18  
18 19 public function redis() {
app/Http/Requests/FlotRequest.php
... ... @@ -0,0 +1,51 @@
  1 +<?php
  2 +
  3 +namespace App\Http\Requests;
  4 +
  5 +use Illuminate\Foundation\Http\FormRequest;
  6 +
  7 +class FlotRequest extends FormRequest
  8 +{
  9 + /**
  10 + * Determine if the user is authorized to make this request.
  11 + *
  12 + * @return bool
  13 + */
  14 + public function authorize()
  15 + {
  16 + return true;
  17 + }
  18 +
  19 + /**
  20 + * Get the validation rules that apply to the request.
  21 + *
  22 + * @return array<string, mixed>
  23 + */
  24 + public function rules()
  25 + {
  26 + return [
  27 + 'name' => 'required|min:3|max:255',
  28 + 'text' => 'required|min:5',
  29 + 'image' => [
  30 + 'mimes:jpeg,jpg,png',
  31 + 'max:20000'
  32 + ],
  33 + ];
  34 + }
  35 +
  36 + public function messages() {
  37 + return [
  38 + 'required' => 'Поле :attribute обязательно для ввода',
  39 + 'min' => [
  40 + 'string' => 'Поле «:attribute» должно быть не меньше :min символов',
  41 + 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт'
  42 + ],
  43 + 'max' => [
  44 + 'string' => 'Поле «:attribute» должно быть не больше :max символов',
  45 + 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт'
  46 + ],
  47 + 'email' => 'Введите корректный емайл'
  48 +
  49 + ];
  50 + }
  51 +}
app/Http/Requests/PagesRequest.php
... ... @@ -54,11 +54,11 @@ class PagesRequest extends FormRequest
54 54 ],
55 55 'anons' => [
56 56 'required',
57   - 'min:500',
  57 + 'min:50',
58 58 ],
59 59 'text' => [
60 60 'required',
61   - 'min:500',
  61 + 'min:255',
62 62 ],
63 63 'image' => [
64 64 'mimes:jpeg,jpg,png',
app/Models/Ad_employer.php
... ... @@ -41,6 +41,11 @@ class Ad_employer extends Model
41 41 return $this->belongsToMany(Job_title::class, 'ad_jobs');
42 42 }
43 43  
  44 + // Связь модели Вакансии с моделью Коды должностей и вакансий
  45 + public function jobs_code() {
  46 + return $this->hasMany(Ad_jobs::class);
  47 + }
  48 +
44 49 /*
45 50 * Связь модели Вакансия (Ad_employers) с моделью Отклик на Вакансию (Ad_response)
46 51 один-ко-многим
... ... @@ -51,10 +56,15 @@ class Ad_employer extends Model
51 56  
52 57 // Связь модели Категории (Categories) с моделью Вакансии
53 58 public function cat() {
54   - return $this->hasMany(Category::class, 'categories_id');
  59 + return $this->hasMany(Category::class, 'id');
55 60 }
56 61  
57 62 public function scopeActive($query) {
58 63 return $query->where('is_remove', '=', '0');
59 64 }
  65 +
  66 + //
  67 + public function ad_job() {
  68 + return $this->hasMany(Ad_jobs::class);
  69 + }
60 70 }
app/Models/Ad_jobs.php
... ... @@ -0,0 +1,29 @@
  1 +<?php
  2 +
  3 +namespace App\Models;
  4 +
  5 +use Illuminate\Database\Eloquent\Factories\HasFactory;
  6 +use Illuminate\Database\Eloquent\Model;
  7 +
  8 +class Ad_jobs extends Model
  9 +{
  10 + use HasFactory;
  11 +
  12 + protected $table = 'ad_jobs';
  13 +
  14 + public $fillable = [
  15 + 'ad_employer_id',
  16 + 'job_title_id',
  17 + 'flot',
  18 + 'min_salary',
  19 + 'max_salary',
  20 + 'region',
  21 + 'sytki',
  22 + 'start',
  23 + 'description'
  24 + ];
  25 +
  26 + public function job_title() {
  27 + return $this->belongsTo(Job_title::class, 'job_title_id');
  28 + }
  29 +}
app/Models/Education.php
... ... @@ -22,4 +22,8 @@ class Education extends Model
22 22 public function scopeActive($query) {
23 23 return $query->where('is_remove', '=', '0');
24 24 }
  25 +
  26 + public function program_education() {
  27 + return $this->hasMany(ProgramEducation::class);
  28 + }
25 29 }
app/Models/Employer.php
... ... @@ -47,6 +47,16 @@ class Employer extends Model
47 47 return $this->hasMany(Ad_employer::class);
48 48 }
49 49  
  50 + // связь Работодателя с флотом
  51 + public function flots(){
  52 + return $this->hasMany(Flot::class);
  53 + }
  54 +
  55 + // связь Работодателя с Должностями в Вакансиях
  56 + //public function ad_jobs() {
  57 + // return $this->belongsToMany(Ad_jobs::class, 'ad_employers');
  58 + //}
  59 +
50 60 public function scopeActive($query) {
51 61 return $query->where('is_remove', '=', '0');
52 62 }
... ... @@ -8,4 +8,11 @@ use Illuminate\Database\Eloquent\Model;
8 8 class Flot extends Model
9 9 {
10 10 use HasFactory;
  11 +
  12 + protected $fillable = [
  13 + 'employer_id',
  14 + 'name',
  15 + 'text',
  16 + 'image'
  17 + ];
11 18 }
database/migrations/2024_02_08_134941_alter_ad_job_table.php
... ... @@ -0,0 +1,34 @@
  1 +<?php
  2 +
  3 +use Illuminate\Database\Migrations\Migration;
  4 +use Illuminate\Database\Schema\Blueprint;
  5 +use Illuminate\Support\Facades\Schema;
  6 +
  7 +return new class extends Migration
  8 +{
  9 + /**
  10 + * Run the migrations.
  11 + *
  12 + * @return void
  13 + */
  14 + public function up()
  15 + {
  16 + Schema::table('ad_jobs', function (Blueprint $table) {
  17 + $table->integer('min_salary')->default(0);
  18 + $table->integer('max_salary')->default(0);
  19 + });
  20 + }
  21 +
  22 + /**
  23 + * Reverse the migrations.
  24 + *
  25 + * @return void
  26 + */
  27 + public function down()
  28 + {
  29 + Schema::table('ad_jobs', function (Blueprint $table) {
  30 + $table->dropColumn('min_salary');
  31 + $table->dropColumn('max_salary');
  32 + });
  33 + }
  34 +};
database/migrations/2024_02_08_144854_alter_ad_employer.php
... ... @@ -0,0 +1,36 @@
  1 +<?php
  2 +
  3 +use Illuminate\Database\Migrations\Migration;
  4 +use Illuminate\Database\Schema\Blueprint;
  5 +use Illuminate\Support\Facades\Schema;
  6 +
  7 +return new class extends Migration
  8 +{
  9 + /**
  10 + * Run the migrations.
  11 + *
  12 + * @return void
  13 + */
  14 + public function up()
  15 + {
  16 + Schema::table('ad_employers', function (Blueprint $table) {
  17 + $table->text('description')->nullable(true);
  18 + $table->text('contacts_emails')->nullable(true);
  19 + $table->text('contacts_telephones')->nullable(true);
  20 + });
  21 + }
  22 +
  23 + /**
  24 + * Reverse the migrations.
  25 + *
  26 + * @return void
  27 + */
  28 + public function down()
  29 + {
  30 + Schema::table('ad_employers', function (Blueprint $table) {
  31 + $table->dropColumn('description');
  32 + $table->dropColumn('contacts_emails');
  33 + $table->dropColumn('contacts_telephones');
  34 + });
  35 + }
  36 +};
database/migrations/2024_02_16_062441_alter_table_ad_employers.php
... ... @@ -0,0 +1,40 @@
  1 +<?php
  2 +
  3 +use Illuminate\Database\Migrations\Migration;
  4 +use Illuminate\Database\Schema\Blueprint;
  5 +use Illuminate\Support\Facades\Schema;
  6 +
  7 +return new class extends Migration
  8 +{
  9 + /**
  10 + * Run the migrations.
  11 + *
  12 + * @return void
  13 + */
  14 + public function up()
  15 + {
  16 + Schema::table('ad_jobs', function (Blueprint $table) {
  17 + $table->string('flot', 255)->nullable(true);
  18 + $table->string('region', 255)->nullable(true);
  19 + $table->integer('sytki')->default(0);
  20 + $table->string('start', '255')->nullable(true);
  21 + $table->text('description')->nullable(false);
  22 + });
  23 + }
  24 +
  25 + /**
  26 + * Reverse the migrations.
  27 + *
  28 + * @return void
  29 + */
  30 + public function down()
  31 + {
  32 + Schema::table('ad_jops', function (Blueprint $table) {
  33 + $table->dropColumn('flot');
  34 + $table->dropColumn('region');
  35 + $table->dropColumn('sytki');
  36 + $table->dropColumn('start');
  37 + $table->dropColumn('description');
  38 + });
  39 + }
  40 +};
database/migrations/2024_02_19_101702_alter_table_flot.php
... ... @@ -0,0 +1,34 @@
  1 +<?php
  2 +
  3 +use Illuminate\Database\Migrations\Migration;
  4 +use Illuminate\Database\Schema\Blueprint;
  5 +use Illuminate\Support\Facades\Schema;
  6 +
  7 +return new class extends Migration
  8 +{
  9 + /**
  10 + * Run the migrations.
  11 + *
  12 + * @return void
  13 + */
  14 + public function up()
  15 + {
  16 + Schema::table('flots', function (Blueprint $table) {
  17 + $table->string('region', 255)->nullable(false);
  18 + $table->string('power', 255)->nullable(false);
  19 + });
  20 + }
  21 +
  22 + /**
  23 + * Reverse the migrations.
  24 + *
  25 + * @return void
  26 + */
  27 + public function down()
  28 + {
  29 + Schema::table('flots', function (Blueprint $table) {
  30 + $table->dropColumn('region');
  31 + $table->dropColumn('power');
  32 + });
  33 + }
  34 +};
public/images/12.jpg

6.66 KB

public/images/13.jpg

1.38 MB

public/images/14.jpg

1.02 MB

public/images/15.jpg

234 KB

public/images/16.jpg

138 KB

public/images/17.jpg

278 KB

public/images/18.jpg

7.31 KB

public/images/bg-3.svg
... ... @@ -0,0 +1,36 @@
  1 +<svg width="1280" height="698" viewBox="0 0 1280 698" fill="none" xmlns="http://www.w3.org/2000/svg">
  2 +<g clip-path="url(#clip0_941_12674)">
  3 +<g opacity="0.4">
  4 +<path d="M1327.92 -322C1181.04 -255.01 1091.59 -135.759 1016.54 -25.1295C988.509 15.7312 952.077 62.654 892.37 76.7468C816.837 94.1272 757.233 46.2576 681.96 52.1345C618.593 56.7266 562.438 96.5472 516.674 133.583C439.067 197.256 367.284 266.038 303.489 335.538C285.478 355.61 267.706 376.57 241.793 392.089C171.09 435.808 74.5124 424.525 0.557344 406.227C-73.3977 387.93 -158.373 365.915 -239.598 395.302C-288.286 413.112 -316.035 475.813 -367.667 486.789C-411.788 496.705 -474.247 483.903 -474.247 483.903C-474.247 483.903 -399.687 762.164 -375.389 852.844C-218.911 829.972 -82.7007 743.927 70.6155 700.94C183.405 668.813 300.635 657.411 415.634 641.843C786.524 592.011 1158.6 500.888 1514.44 374.098L1327.92 -322Z" fill="url(#paint0_linear_941_12674)"/>
  5 +<path d="M-350.218 534.27C-323.315 551.544 -280.824 564.642 -233.323 571.501C-218.24 573.755 -202.293 575.078 -181.675 573.051C-121.21 565.944 -69.8281 529.092 -45.1143 500.784C2.40976 445.379 20.6529 392.924 69.391 337.893C118.129 282.862 212.6 219.775 333.664 189.434C464.081 156.587 572.089 173.116 648.922 197.998C725.58 222.227 794.46 254.836 911.429 250.775C932.397 250.053 956.132 247.191 977.254 238.733C1004.26 227.3 1012.19 211.184 1035.56 198.627C1073.46 177.978 1131.69 174.969 1163.76 182.462C1195.84 189.956 1218.41 203.497 1261.73 203.081C1273.86 202.629 1287.89 200.967 1300.01 196.32C1312.13 191.674 1318.18 185.156 1325.62 179.665C1377.17 139.271 1497.02 108.557 1557.19 121.116L1601.43 286.24L-281.14 792.072L-350.218 534.27Z" fill="url(#paint1_linear_941_12674)"/>
  6 +<path d="M-350.218 534.27C-323.315 551.544 -280.824 564.642 -233.323 571.501C-218.24 573.755 -202.293 575.078 -181.675 573.051C-121.21 565.944 -69.8281 529.092 -45.1143 500.784C2.40976 445.379 20.6529 392.924 69.391 337.893C118.129 282.862 212.6 219.775 333.664 189.434C464.081 156.587 572.089 173.116 648.922 197.998C725.58 222.227 794.46 254.836 911.429 250.775C932.397 250.053 956.132 247.191 977.254 238.733C1004.26 227.3 1012.19 211.184 1035.56 198.627C1073.46 177.978 1131.69 174.969 1163.76 182.462C1195.84 189.956 1218.41 203.497 1261.73 203.081C1273.86 202.629 1287.89 200.967 1300.01 196.32C1312.13 191.674 1318.18 185.156 1325.62 179.665C1377.17 139.271 1497.02 108.557 1557.19 121.116L1601.43 286.24L-281.14 792.072L-350.218 534.27Z" fill="url(#paint2_linear_941_12674)"/>
  7 +<path d="M-261.454 550.3C-235.559 572.17 -210.067 596.69 -153.037 605.982C-96.0077 615.273 -2.0364 608.735 88.5043 581.085C163.679 558.4 222.579 524.824 265.69 494.631C308.801 464.439 344.854 436.985 390.445 403.586C442.458 365.076 507.02 298.632 725.462 270.605C799.872 261.682 856.69 270.182 902.487 279.094C948.073 287.215 984.947 300.212 1037.38 304.805C1114.99 311.971 1225.57 300.98 1339.83 274.602C1453.05 248.503 1567.86 207.572 1651.66 163.086L1800.56 718.783L-81.2049 1223L-261.454 550.3Z" fill="url(#paint3_linear_941_12674)"/>
  8 +<path d="M-261.454 550.3C-235.559 572.17 -210.067 596.69 -153.037 605.982C-96.0077 615.273 -2.0364 608.735 88.5043 581.085C163.679 558.4 222.579 524.824 265.69 494.631C308.801 464.439 344.854 436.985 390.445 403.586C442.458 365.076 507.02 298.632 725.462 270.605C799.872 261.682 856.69 270.182 902.487 279.094C948.073 287.215 984.947 300.212 1037.38 304.805C1114.99 311.971 1225.57 300.98 1339.83 274.602C1453.05 248.503 1567.86 207.572 1651.66 163.086L1800.56 718.783L-81.2049 1223L-261.454 550.3Z" fill="url(#paint4_linear_941_12674)"/>
  9 +</g>
  10 +</g>
  11 +<defs>
  12 +<linearGradient id="paint0_linear_941_12674" x1="287.797" y1="75.4214" x2="577.75" y2="643.513" gradientUnits="userSpaceOnUse">
  13 +<stop stop-color="#F4F7FC"/>
  14 +<stop offset="1" stop-color="#8BA6DB"/>
  15 +</linearGradient>
  16 +<linearGradient id="paint1_linear_941_12674" x1="551.028" y1="131.273" x2="660.437" y2="539.594" gradientUnits="userSpaceOnUse">
  17 +<stop offset="0.211458" stop-color="#A5D5DD"/>
  18 +<stop offset="1" stop-color="#0E5C69"/>
  19 +</linearGradient>
  20 +<linearGradient id="paint2_linear_941_12674" x1="551.015" y1="131.226" x2="611.559" y2="357.18" gradientUnits="userSpaceOnUse">
  21 +<stop stop-color="#E7EDF9"/>
  22 +<stop offset="1" stop-color="#C5D1E8"/>
  23 +</linearGradient>
  24 +<linearGradient id="paint3_linear_941_12674" x1="673.406" y1="275.068" x2="776.518" y2="659.888" gradientUnits="userSpaceOnUse">
  25 +<stop stop-color="#E7EDF9"/>
  26 +<stop offset="1" stop-color="#C5D1E8"/>
  27 +</linearGradient>
  28 +<linearGradient id="paint4_linear_941_12674" x1="673.427" y1="275.147" x2="859.762" y2="970.558" gradientUnits="userSpaceOnUse">
  29 +<stop offset="0.211458" stop-color="#A5D5DD"/>
  30 +<stop offset="1" stop-color="#0E5C69"/>
  31 +</linearGradient>
  32 +<clipPath id="clip0_941_12674">
  33 +<rect width="1280" height="698" fill="white"/>
  34 +</clipPath>
  35 +</defs>
  36 +</svg>
public/images/bg-4.svg
... ... @@ -0,0 +1,21 @@
  1 +<svg width="706" height="448" viewBox="0 0 706 448" fill="none" xmlns="http://www.w3.org/2000/svg">
  2 +<g opacity="0.4">
  3 +<path d="M1237.01 -83C1140.52 -38.9899 1081.75 39.354 1032.45 112.034C1014.03 138.878 990.098 169.704 950.873 178.963C901.25 190.381 862.093 158.933 812.64 162.794C771.01 165.81 734.119 191.971 704.054 216.303C653.068 258.134 605.909 303.321 563.998 348.98C552.166 362.166 540.49 375.937 523.466 386.132C477.017 414.854 413.568 407.441 364.982 395.42C316.396 383.4 260.571 368.937 207.208 388.243C175.222 399.944 156.992 441.136 123.071 448.347C94.0856 454.861 53.0522 446.451 53.0522 446.451C53.0522 446.451 102.036 629.259 117.998 688.832C220.799 673.806 310.285 617.278 411.008 589.037C485.107 567.93 562.123 560.44 637.673 550.212C881.336 517.474 1125.78 457.61 1359.55 374.313L1237.01 -83Z" fill="url(#paint0_linear_941_15331)"/>
  4 +<path d="M134.534 505.818C152.209 517.167 180.124 525.772 211.33 530.278C221.239 531.759 231.716 532.628 245.261 531.297C284.985 526.627 318.741 502.417 334.977 483.82C366.199 447.421 378.184 412.959 410.203 376.806C442.222 340.652 504.286 299.206 583.822 279.273C669.501 257.694 740.458 268.553 790.935 284.899C841.297 300.817 886.548 322.24 963.393 319.572C977.168 319.098 992.762 317.218 1006.64 311.661C1024.38 304.15 1029.59 293.562 1044.94 285.313C1069.84 271.747 1108.09 269.77 1129.17 274.693C1150.24 279.616 1165.07 288.512 1193.53 288.239C1201.5 287.942 1210.72 286.85 1218.68 283.797C1226.64 280.745 1230.62 276.463 1235.5 272.855C1269.37 246.318 1348.11 226.139 1387.63 234.39L1416.7 342.871L179.916 675.186L134.534 505.818Z" fill="url(#paint1_linear_941_15331)"/>
  5 +<path d="M192.849 536.059C209.861 550.427 226.609 566.536 264.075 572.64C301.542 578.744 363.278 574.449 422.76 556.284C472.147 541.38 510.843 519.322 539.165 499.487C567.487 479.651 591.173 461.615 621.124 439.673C655.295 414.373 697.711 370.722 841.219 352.309C890.104 346.446 927.432 352.031 957.519 357.886C987.467 363.221 1011.69 371.76 1046.14 374.777C1097.12 379.485 1169.78 372.265 1244.84 354.935C1319.22 337.788 1394.64 310.898 1449.7 281.673L1547.52 646.747L311.267 978L192.849 536.059Z" fill="url(#paint2_linear_941_15331)"/>
  6 +</g>
  7 +<defs>
  8 +<linearGradient id="paint0_linear_941_15331" x1="553.689" y1="178.092" x2="744.178" y2="551.309" gradientUnits="userSpaceOnUse">
  9 +<stop stop-color="#F4F7FC"/>
  10 +<stop offset="1" stop-color="#8BA6DB"/>
  11 +</linearGradient>
  12 +<linearGradient id="paint1_linear_941_15331" x1="726.622" y1="241.063" x2="798.5" y2="509.317" gradientUnits="userSpaceOnUse">
  13 +<stop offset="0.211458" stop-color="#A5D5DD"/>
  14 +<stop offset="1" stop-color="#0E5C69"/>
  15 +</linearGradient>
  16 +<linearGradient id="paint2_linear_941_15331" x1="807.02" y1="355.241" x2="874.761" y2="608.055" gradientUnits="userSpaceOnUse">
  17 +<stop stop-color="#E7EDF9"/>
  18 +<stop offset="1" stop-color="#C5D1E8"/>
  19 +</linearGradient>
  20 +</defs>
  21 +</svg>
public/images/catpcha.jpg

12.3 KB

public/images/education.jpg

49.1 KB

public/images/stars.svg
... ... @@ -0,0 +1,7 @@
  1 +<svg width="166" height="30" viewBox="0 0 166 30" fill="none" xmlns="http://www.w3.org/2000/svg">
  2 +<path d="M12.6804 8.28454C13.6637 5.83329 14.1553 4.60767 15.0007 4.60767C15.8461 4.60767 16.3378 5.83329 17.321 8.28454L17.3668 8.39868C17.9223 9.78352 18.2 10.4759 18.7661 10.8968C19.3322 11.3177 20.0752 11.3842 21.5614 11.5173L21.8301 11.5414C24.2623 11.7592 25.4785 11.8681 25.7387 12.6418C25.9989 13.4156 25.0957 14.2372 23.2894 15.8806L22.6866 16.4291C21.7722 17.261 21.315 17.6769 21.1019 18.2221C21.0622 18.3238 21.0291 18.428 21.003 18.534C20.8629 19.1023 20.9968 19.7057 21.2646 20.9125L21.3479 21.2882C21.84 23.5061 22.0861 24.6151 21.6565 25.0934C21.4959 25.2722 21.2873 25.4008 21.0555 25.4641C20.4353 25.6333 19.5547 24.9158 17.7935 23.4807C16.637 22.5383 16.0588 22.0671 15.3949 21.9611C15.1338 21.9194 14.8677 21.9194 14.6065 21.9611C13.9427 22.0671 13.3644 22.5383 12.208 23.4807C10.4468 24.9158 9.56618 25.6333 8.94593 25.4641C8.71416 25.4008 8.50552 25.2722 8.34499 25.0934C7.9154 24.6151 8.16144 23.5061 8.65353 21.2882L8.73688 20.9125C9.00464 19.7057 9.13852 19.1023 8.99845 18.534C8.97232 18.428 8.93928 18.3238 8.89953 18.2221C8.68644 17.6769 8.22924 17.261 7.31486 16.4291L6.71201 15.8806C4.90571 14.2372 4.00255 13.4156 4.26278 12.6418C4.523 11.8681 5.73913 11.7592 8.1714 11.5414L8.44007 11.5173C9.92622 11.3842 10.6693 11.3177 11.2354 10.8968C11.8014 10.4759 12.0792 9.78352 12.6347 8.39868L12.6804 8.28454Z" fill="#4D88D9" stroke="#4D88D9" stroke-width="1.4"/>
  3 +<path d="M46.6804 8.28454C47.6637 5.83329 48.1553 4.60767 49.0007 4.60767C49.8461 4.60767 50.3378 5.83329 51.321 8.28454L51.3668 8.39868C51.9223 9.78352 52.2 10.4759 52.7661 10.8968C53.3322 11.3177 54.0752 11.3842 55.5614 11.5173L55.8301 11.5414C58.2623 11.7592 59.4785 11.8681 59.7387 12.6418C59.9989 13.4156 59.0957 14.2372 57.2894 15.8806L56.6866 16.4291C55.7722 17.261 55.315 17.6769 55.1019 18.2221C55.0622 18.3238 55.0291 18.428 55.003 18.534C54.8629 19.1023 54.9968 19.7057 55.2646 20.9125L55.3479 21.2882C55.84 23.5061 56.0861 24.6151 55.6565 25.0934C55.4959 25.2722 55.2873 25.4008 55.0555 25.4641C54.4353 25.6333 53.5547 24.9158 51.7935 23.4807C50.637 22.5383 50.0588 22.0671 49.3949 21.9611C49.1338 21.9194 48.8677 21.9194 48.6065 21.9611C47.9427 22.0671 47.3644 22.5383 46.208 23.4807C44.4468 24.9158 43.5662 25.6333 42.9459 25.4641C42.7142 25.4008 42.5055 25.2722 42.345 25.0934C41.9154 24.6151 42.1614 23.5061 42.6535 21.2882L42.7369 20.9125C43.0046 19.7057 43.1385 19.1023 42.9985 18.534C42.9723 18.428 42.9393 18.3238 42.8995 18.2221C42.6864 17.6769 42.2292 17.261 41.3149 16.4291L40.712 15.8806C38.9057 14.2372 38.0026 13.4156 38.2628 12.6418C38.523 11.8681 39.7391 11.7592 42.1714 11.5414L42.4401 11.5173C43.9262 11.3842 44.6693 11.3177 45.2354 10.8968C45.8014 10.4759 46.0792 9.78352 46.6347 8.39868L46.6804 8.28454Z" fill="#4D88D9" stroke="#4D88D9" stroke-width="1.4"/>
  4 +<path d="M80.6804 8.28454C81.6637 5.83329 82.1553 4.60767 83.0007 4.60767C83.8461 4.60767 84.3378 5.83329 85.321 8.28454L85.3668 8.39868C85.9223 9.78352 86.2 10.4759 86.7661 10.8968C87.3322 11.3177 88.0752 11.3842 89.5614 11.5173L89.8301 11.5414C92.2623 11.7592 93.4785 11.8681 93.7387 12.6418C93.9989 13.4156 93.0957 14.2372 91.2894 15.8806L90.6866 16.4291C89.7722 17.261 89.315 17.6769 89.1019 18.2221C89.0622 18.3238 89.0291 18.428 89.003 18.534C88.8629 19.1023 88.9968 19.7057 89.2646 20.9125L89.3479 21.2882C89.84 23.5061 90.0861 24.6151 89.6565 25.0934C89.4959 25.2722 89.2873 25.4008 89.0555 25.4641C88.4353 25.6333 87.5547 24.9158 85.7935 23.4807C84.637 22.5383 84.0588 22.0671 83.3949 21.9611C83.1338 21.9194 82.8677 21.9194 82.6065 21.9611C81.9427 22.0671 81.3644 22.5383 80.208 23.4807C78.4468 24.9158 77.5662 25.6333 76.9459 25.4641C76.7142 25.4008 76.5055 25.2722 76.345 25.0934C75.9154 24.6151 76.1614 23.5061 76.6535 21.2882L76.7369 20.9125C77.0046 19.7057 77.1385 19.1023 76.9985 18.534C76.9723 18.428 76.9393 18.3238 76.8995 18.2221C76.6864 17.6769 76.2292 17.261 75.3149 16.4291L74.712 15.8806C72.9057 14.2372 72.0026 13.4156 72.2628 12.6418C72.523 11.8681 73.7391 11.7592 76.1714 11.5414L76.4401 11.5173C77.9262 11.3842 78.6693 11.3177 79.2354 10.8968C79.8014 10.4759 80.0792 9.78352 80.6347 8.39868L80.6804 8.28454Z" fill="#4D88D9" stroke="#4D88D9" stroke-width="1.4"/>
  5 +<path d="M114.68 8.28454C115.664 5.83329 116.155 4.60767 117.001 4.60767C117.846 4.60767 118.338 5.83329 119.321 8.28454L119.367 8.39868C119.922 9.78352 120.2 10.4759 120.766 10.8968C121.332 11.3177 122.075 11.3842 123.561 11.5173L123.83 11.5414C126.262 11.7592 127.478 11.8681 127.739 12.6418C127.999 13.4156 127.096 14.2372 125.289 15.8806L124.687 16.4291C123.772 17.261 123.315 17.6769 123.102 18.2221C123.062 18.3238 123.029 18.428 123.003 18.534C122.863 19.1023 122.997 19.7057 123.265 20.9125L123.348 21.2882C123.84 23.5061 124.086 24.6151 123.656 25.0934C123.496 25.2722 123.287 25.4008 123.056 25.4641C122.435 25.6333 121.555 24.9158 119.793 23.4807C118.637 22.5383 118.059 22.0671 117.395 21.9611C117.134 21.9194 116.868 21.9194 116.607 21.9611C115.943 22.0671 115.364 22.5383 114.208 23.4807C112.447 24.9158 111.566 25.6333 110.946 25.4641C110.714 25.4008 110.506 25.2722 110.345 25.0934C109.915 24.6151 110.161 23.5061 110.654 21.2882L110.737 20.9125C111.005 19.7057 111.139 19.1023 110.998 18.534C110.972 18.428 110.939 18.3238 110.9 18.2221C110.686 17.6769 110.229 17.261 109.315 16.4291L108.712 15.8806C106.906 14.2372 106.003 13.4156 106.263 12.6418C106.523 11.8681 107.739 11.7592 110.171 11.5414L110.44 11.5173C111.926 11.3842 112.669 11.3177 113.235 10.8968C113.801 10.4759 114.079 9.78352 114.635 8.39868L114.68 8.28454Z" fill="#4D88D9" stroke="#4D88D9" stroke-width="1.4"/>
  6 +<path d="M148.68 8.28454C149.664 5.83329 150.155 4.60767 151.001 4.60767C151.846 4.60767 152.338 5.83329 153.321 8.28454L153.367 8.39868C153.922 9.78352 154.2 10.4759 154.766 10.8968C155.332 11.3177 156.075 11.3842 157.561 11.5173L157.83 11.5414C160.262 11.7592 161.478 11.8681 161.739 12.6418C161.999 13.4156 161.096 14.2372 159.289 15.8806L158.687 16.4291C157.772 17.261 157.315 17.6769 157.102 18.2221C157.062 18.3238 157.029 18.428 157.003 18.534C156.863 19.1023 156.997 19.7057 157.265 20.9125L157.348 21.2882C157.84 23.5061 158.086 24.6151 157.656 25.0934C157.496 25.2722 157.287 25.4008 157.056 25.4641C156.435 25.6333 155.555 24.9158 153.793 23.4807C152.637 22.5383 152.059 22.0671 151.395 21.9611C151.134 21.9194 150.868 21.9194 150.607 21.9611C149.943 22.0671 149.364 22.5383 148.208 23.4807C146.447 24.9158 145.566 25.6333 144.946 25.4641C144.714 25.4008 144.506 25.2722 144.345 25.0934C143.915 24.6151 144.161 23.5061 144.654 21.2882L144.737 20.9125C145.005 19.7057 145.139 19.1023 144.998 18.534C144.972 18.428 144.939 18.3238 144.9 18.2221C144.686 17.6769 144.229 17.261 143.315 16.4291L142.712 15.8806C140.906 14.2372 140.003 13.4156 140.263 12.6418C140.523 11.8681 141.739 11.7592 144.171 11.5414L144.44 11.5173C145.926 11.3842 146.669 11.3177 147.235 10.8968C147.801 10.4759 148.079 9.78352 148.635 8.39868L148.68 8.28454Z" stroke="#4D88D9" stroke-width="1.4"/>
  7 +</svg>
public/images/svg/1.svg
... ... @@ -0,0 +1,3 @@
  1 +<svg width="48" height="28" viewBox="0 0 48 28" fill="none" xmlns="http://www.w3.org/2000/svg">
  2 +<path fill-rule="evenodd" clip-rule="evenodd" d="M46.9 1.896C47.232 0.804 46.9 0 45.31 0H40.06C38.724 0 38.108 0.694 37.774 1.46C37.774 1.46 35.104 7.852 31.322 12.004C30.098 13.208 29.542 13.59 28.874 13.59C28.54 13.59 28.038 13.208 28.038 12.114V1.896C28.038 0.584 27.67 0 26.558 0H18.302C17.468 0 16.966 0.608 16.966 1.186C16.966 2.428 18.858 2.716 19.052 6.212V13.808C19.052 15.474 18.746 15.776 18.078 15.776C16.298 15.776 11.968 9.354 9.398 2.006C8.9 0.576 8.396 0 7.054 0H1.8C0.3 0 0 0.694 0 1.46C0 2.824 1.78 9.6 8.29 18.562C12.63 24.682 18.74 28 24.306 28C27.644 28 28.056 27.264 28.056 25.994V21.368C28.056 19.894 28.372 19.6 29.43 19.6C30.21 19.6 31.544 19.984 34.66 22.934C38.22 26.432 38.806 28 40.81 28H46.06C47.56 28 48.312 27.264 47.88 25.808C47.404 24.36 45.704 22.258 43.45 19.764C42.226 18.344 40.39 16.814 39.832 16.048C39.054 15.066 39.276 14.628 39.832 13.754C39.832 13.754 46.232 4.902 46.898 1.896H46.9Z" fill="#377D87"/>
  3 +</svg>
public/images/svg/2.svg
... ... @@ -0,0 +1,3 @@
  1 +<svg width="41" height="35" viewBox="0 0 41 35" fill="none" xmlns="http://www.w3.org/2000/svg">
  2 +<path fill-rule="evenodd" clip-rule="evenodd" d="M36.5533 0.85993C37.0475 0.651912 37.5885 0.580168 38.1199 0.652165C38.6513 0.724161 39.1536 0.937267 39.5747 1.2693C39.9958 1.60133 40.3201 2.04016 40.514 2.5401C40.708 3.04003 40.7643 3.58281 40.6773 4.11193L36.1413 31.6259C35.7013 34.2799 32.7893 35.8019 30.3553 34.4799C28.3193 33.3739 25.2953 31.6699 22.5753 29.8919C21.2153 29.0019 17.0493 26.1519 17.5613 24.1239C18.0013 22.3899 25.0013 15.8739 29.0013 11.9999C30.5713 10.4779 29.8553 9.59993 28.0013 10.9999C23.3953 14.4759 16.0053 19.7619 13.5613 21.2499C11.4053 22.5619 10.2813 22.7859 8.93731 22.5619C6.48531 22.1539 4.21131 21.5219 2.35531 20.7519C-0.152693 19.7119 -0.0306929 16.2639 2.35331 15.2599L36.5533 0.85993Z" fill="#377D87"/>
  3 +</svg>
public/images/svg/3.svg
... ... @@ -0,0 +1,3 @@
  1 +<svg width="50" height="54" viewBox="0 0 50 54" fill="none" xmlns="http://www.w3.org/2000/svg">
  2 +<path d="M5.66732 10.0832C5.66732 10.0783 5.66007 10.0373 5.7519 9.88742C5.85582 9.71826 6.06607 9.46692 6.45515 9.16C7.25265 8.53167 8.55765 7.85742 10.3847 7.25084C14.0145 6.03767 19.1813 5.24984 25.0006 5.24984C30.82 5.24984 35.9868 6.04009 39.6166 7.24842C41.4436 7.85742 42.7486 8.52925 43.5461 9.15759C43.9376 9.46692 44.1455 9.71826 44.247 9.88742C44.3437 10.0397 44.334 10.0808 44.334 10.0832C44.334 10.0904 44.3412 10.1315 44.2494 10.2789C44.1455 10.4481 43.9352 10.6994 43.5461 11.0063C42.7486 11.6347 41.4436 12.3089 39.6166 12.9155C35.9868 14.1287 30.82 14.9165 25.0006 14.9165C19.1813 14.9165 14.0145 14.1263 10.3847 12.9179C8.55765 12.3089 7.25265 11.6371 6.45515 11.0088C6.18174 10.8071 5.94472 10.5603 5.75432 10.2789C5.66007 10.1339 5.66732 10.0904 5.66732 10.0832ZM44.334 16.1901V26.9998C44.334 27.0023 44.334 27.0143 44.3267 27.0361C44.3078 27.0923 44.2818 27.1459 44.2494 27.1956C44.1455 27.3648 43.9352 27.6161 43.5461 27.923C42.7486 28.5513 41.4436 29.2256 39.6166 29.8322C35.9868 31.0429 30.82 31.8332 25.0006 31.8332C19.1813 31.8332 14.0145 31.0429 10.3847 29.8346C8.55765 29.2256 7.25265 28.5538 6.45515 27.9254C6.1817 27.7238 5.94469 27.477 5.75432 27.1956C5.72116 27.146 5.69437 27.0924 5.67457 27.0361C5.67053 27.0244 5.66809 27.0122 5.66732 26.9998V16.1901C6.69658 16.7061 7.76286 17.1448 8.85732 17.5023C13.0986 18.9161 18.8067 19.7498 25.0006 19.7498C31.1946 19.7498 36.9027 18.9161 41.144 17.5023C42.2386 17.1452 43.3049 16.7066 44.334 16.1901ZM44.334 33.1068V43.9165L44.3267 43.9528C44.3078 44.009 44.2818 44.0625 44.2494 44.1123C44.1455 44.2814 43.9352 44.5328 43.5461 44.8397C42.7486 45.468 41.4436 46.1423 39.6166 46.7488C35.9868 47.9596 30.82 48.7498 25.0006 48.7498C19.1813 48.7498 14.0145 47.9596 10.3847 46.7513C8.55765 46.1423 7.25265 45.4704 6.45515 44.8421C6.1817 44.6405 5.94469 44.3936 5.75432 44.1123C5.72116 44.0626 5.69437 44.009 5.67457 43.9528L5.66732 43.9165V33.1068C6.69635 33.6233 7.76268 34.0619 8.85732 34.419C13.0986 35.8328 18.8067 36.6665 25.0006 36.6665C31.1946 36.6665 36.9027 35.8328 41.144 34.419C42.2386 34.0619 43.3049 33.6233 44.334 33.1068ZM0.833984 43.9165C0.833984 45.9755 2.08823 47.5512 3.46332 48.6363C4.8674 49.7431 6.74998 50.6324 8.85732 51.3357C13.0986 52.7494 18.8067 53.5832 25.0006 53.5832C31.1946 53.5832 36.9027 52.7494 41.144 51.3357C43.2537 50.6348 45.1339 49.7407 46.538 48.6363C47.9155 47.5512 49.1673 45.9755 49.1673 43.9165V10.0832C49.1673 8.02417 47.9131 6.4485 46.538 5.36342C45.1339 4.25659 43.2513 3.36725 41.144 2.664C36.9027 1.25025 31.1946 0.416504 25.0006 0.416504C18.8067 0.416504 13.0986 1.25025 8.85732 2.664C6.74757 3.36484 4.8674 4.259 3.46332 5.36342C2.08582 6.4485 0.833984 8.02417 0.833984 10.0832V43.9165Z" fill="#377D87"/>
  3 +</svg>
public/images/svg/4.svg
... ... @@ -0,0 +1,3 @@
  1 +<svg width="62" height="50" viewBox="0 0 62 50" fill="none" xmlns="http://www.w3.org/2000/svg">
  2 +<path d="M31 0.25L0.75 16.75L11.75 22.745V39.245L31 49.75L50.25 39.245V22.745L55.75 19.7475V38.75H61.25V16.75L31 0.25ZM49.755 16.75L31 26.98L12.245 16.75L31 6.52L49.755 16.75ZM44.75 36L31 43.48L17.25 36V25.7425L31 33.25L44.75 25.7425V36Z" fill="#377D87"/>
  3 +</svg>
public/images/svg/5.svg
... ... @@ -0,0 +1,3 @@
  1 +<svg width="54" height="32" viewBox="0 0 54 32" fill="none" xmlns="http://www.w3.org/2000/svg">
  2 +<path d="M2.25 10.4998C9.07825 10.4998 14.1987 2.24976 14.1987 2.24976C14.1987 2.24976 19.3192 10.4998 26.1475 10.4998C32.973 10.4998 39.8013 2.24976 39.8013 2.24976C39.8013 2.24976 46.6295 10.4998 51.75 10.4998M2.25 29.7498C9.07825 29.7498 14.1987 21.4998 14.1987 21.4998C14.1987 21.4998 19.3192 29.7498 26.1475 29.7498C32.973 29.7498 39.8013 21.4998 39.8013 21.4998C39.8013 21.4998 46.6295 29.7498 51.75 29.7498" stroke="#377D87" stroke-width="4.125" stroke-linecap="round" stroke-linejoin="round"/>
  3 +</svg>
public/images/svg/6.svg
... ... @@ -0,0 +1,4 @@
  1 +<svg width="54" height="60" viewBox="0 0 54 60" fill="none" xmlns="http://www.w3.org/2000/svg">
  2 +<path d="M2.25 24.5C2.25 14.1298 2.25 8.94325 5.473 5.723C8.69325 2.5 13.8798 2.5 24.25 2.5H29.75C40.1202 2.5 45.3067 2.5 48.527 5.723C51.75 8.94325 51.75 14.1298 51.75 24.5V35.5C51.75 45.8702 51.75 51.0567 48.527 54.277C45.3067 57.5 40.1202 57.5 29.75 57.5H24.25C13.8798 57.5 8.69325 57.5 5.473 54.277C2.25 51.0567 2.25 45.8702 2.25 35.5V24.5Z" stroke="#377D87" stroke-width="4.125"/>
  3 +<path d="M16 24.5H38M16 35.5H29.75" stroke="#377D87" stroke-width="4.125" stroke-linecap="round"/>
  4 +</svg>
public/images/wysiwyg.jpg

22.1 KB

resources/views/admin/ad_employers/index.blade.php
... ... @@ -131,9 +131,9 @@
131 131 <?php $i = 0;?>
132 132 @foreach ($ad->jobs as $title)
133 133 <?php if ($i==0) {?>
134   - <p class="font-semibold text-xs">{{ mb_strimwidth($title->name, 0, 35, "...") }}</p>
  134 + <a href="{{ route('admin.edit_jobs', ['ad_jobs' => $title->id]) }}" class="font-semibold text-xs">{{ mb_strimwidth($title->name, 0, 35, "...") }}</a><br>
135 135 <?php } else {?>
136   - <p class="font-semibold text-xs">/ {{ mb_strimwidth($title->name, 0, 35, "...") }}</p>
  136 + <a href="{{ route('admin.edit_jobs', ['ad_jobs' => $title->id]) }}" class="font-semibold text-xs">/ {{ mb_strimwidth($title->name, 0, 35, "...") }}</a><br>
137 137 <?php }
138 138 $i++;
139 139 ?>
resources/views/admin/ad_jobs/edit.blade.php
... ... @@ -0,0 +1,110 @@
  1 +@extends('layout.admin', ['title' => 'Админка - Редактирование должности в вакансии'])
  2 +
  3 +@section('content')
  4 + <form method="POST" action="{{ route('admin.update_jobs', ['ad_jobs' => $ad_jobs]) }}" enctype="multipart/form-data">
  5 + @csrf
  6 + @method('PUT')
  7 +
  8 + <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800">
  9 +
  10 + <label class="block text-sm">
  11 + <span class="text-gray-700 dark:text-gray-400">Минимальная зарплата</span>
  12 + <input name="min_salary" id="min_salary"
  13 + class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input"
  14 + placeholder="Минимальная зарплата" value="{{ old('min_salary') ?? $ad_jobs->min_salary ?? '' }}"
  15 + />
  16 + @error('min_salary')
  17 + <span class="text-xs text-red-600 dark:text-red-400">
  18 + {{ $message }}
  19 + </span>
  20 + @enderror
  21 + </label><br>
  22 +
  23 + <label class="block text-sm">
  24 + <span class="text-gray-700 dark:text-gray-400">Максимальная зарплата</span>
  25 + <input name="max_salary" id="max_salary"
  26 + class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input"
  27 + placeholder="Максимальная зарплата" value="{{ old('max_salary') ?? $ad_jobs->max_salary ?? '' }}"
  28 + />
  29 + @error('max_salary')
  30 + <span class="text-xs text-red-600 dark:text-red-400">
  31 + {{ $message }}
  32 + </span>
  33 + @enderror
  34 + </label><br>
  35 +
  36 + <label class="block text-sm">
  37 + <span class="text-gray-700 dark:text-gray-400">Регион</span>
  38 + <input name="region" id="region"
  39 + class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input"
  40 + placeholder="Регион" value="{{ old('region') ?? $ad_jobs->region ?? '' }}"
  41 + />
  42 + @error('region')
  43 + <span class="text-xs text-red-600 dark:text-red-400">
  44 + {{ $message }}
  45 + </span>
  46 + @enderror
  47 + </label><br>
  48 +
  49 + <label class="block text-sm">
  50 + <span class="text-gray-700 dark:text-gray-400">Суточные</span>
  51 + <input name="sytki" id="sytki"
  52 + class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input"
  53 + placeholder="Суточные" value="{{ old('sytki') ?? $ad_jobs->sytki ?? '' }}"
  54 + />
  55 + @error('sytki')
  56 + <span class="text-xs text-red-600 dark:text-red-400">
  57 + {{ $message }}
  58 + </span>
  59 + @enderror
  60 + </label><br>
  61 +
  62 + <label class="block text-sm">
  63 + <span class="text-gray-700 dark:text-gray-400">Посадка</span>
  64 + <input name="start" id="start"
  65 + class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input"
  66 + placeholder="Посадка" value="{{ old('start') ?? $ad_jobs->start ?? '' }}"
  67 + />
  68 + @error('start')
  69 + <span class="text-xs text-red-600 dark:text-red-400">
  70 + {{ $message }}
  71 + </span>
  72 + @enderror
  73 + </label><br>
  74 +
  75 + <label class="block text-sm">
  76 + <span class="text-gray-700 dark:text-gray-400">Описание</span>
  77 + <textarea class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-textarea focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray ckeditor_" id="description" name="description" placeholder="Текст (html)" required
  78 + rows="10">{{ old('description') ?? $ad_jobs->description ?? '' }}</textarea>
  79 + @error('description')
  80 + <span class="text-xs text-red-600 dark:text-red-400">
  81 + {{ $message }}
  82 + </span>
  83 + @enderror
  84 + </label>
  85 + <br>
  86 +
  87 + <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4">
  88 + <div>
  89 + <button type="submit" class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple">
  90 + Сохранить
  91 + </button>
  92 + <a href="{{ route('admin.ad-employers') }}"
  93 + class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"
  94 + style="display: -webkit-inline-box; height: 30px!important;"
  95 + >Назад</a>
  96 + </div>
  97 + </div>
  98 + </div>
  99 + </form>
  100 + <script src="//cdn.ckeditor.com/4.14.0/standard/ckeditor.js"></script>
  101 +
  102 + <!--<script src="{{ asset('./ckeditor/ckeditor.js') }}"></script>-->
  103 + <script>
  104 + CKEDITOR.replace( 'text', {
  105 + filebrowserUploadUrl: "{{route('ckeditor.image-upload', ['_token' => csrf_token() ])}}",
  106 + filebrowserImageUploadUrl: "{{ route('ckeditor.image-upload', ['_token' => csrf_token() ])}}",
  107 + filebrowserUploadMethod: 'form'
  108 + });
  109 + </script>
  110 +@endsection
resources/views/admin/employer/edit.blade.php
... ... @@ -12,8 +12,8 @@
12 12 <label for="tab-btn-1">Персональная информация</label>
13 13 <input type="radio" name="tab-btn" id="tab-btn-2" value="">
14 14 <label for="tab-btn-2">Настройки</label>
15   - <!--<input type="radio" name="tab-btn" id="tab-btn-3" value="">
16   - <label for="tab-btn-3">Вкладка 3</label>-->
  15 + <input type="radio" name="tab-btn" id="tab-btn-3" value="">
  16 + <label for="tab-btn-3">Флот</label>
17 17 <div id="content-1">
18 18  
19 19 <label class="block text-sm">
... ... @@ -204,8 +204,77 @@
204 204 </label><br>
205 205  
206 206 </div>
  207 +
207 208 <div id="content-3">
208   - Содержимое 3...
  209 + <label class="block text-sm">
  210 + <span class="text-gray-700 dark:text-gray-400">Флоты</span>
  211 + <a href="{{ route('admin.flot_add', ['employer' => $employer->id]) }}"
  212 + class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"
  213 + style="display: -webkit-inline-box; height: 30px!important;"
  214 + >Новый корабль</a>
  215 + @if ($flots->count())
  216 + <table class="w-full whitespace-no-wrap">
  217 + <thead>
  218 + <tr class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800">
  219 + <th class="px-4 py-3">ID</th>
  220 + <th class="px-4 py-3">Название</th>
  221 + <th class="px-4 py-3">Картинка</th>
  222 + <th class="px-4 py-3">Дата регист.</th>
  223 + <th class="px-4 py-3">Редакт.</th>
  224 + </tr>
  225 + </thead>
  226 + <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800">
  227 + @foreach($flots as $flot)
  228 + <tr class="text-gray-700 dark:text-gray-400">
  229 + <td class="px-4 py-3 text-xs">
  230 + {{ $flot->id }}
  231 + </td>
  232 + <td class="px-4 py-3 text-xs">
  233 + {{ $flot->name }}
  234 + </td>
  235 + <td class="px-4 py-3 text-xs">
  236 + @if (isset($flot->image))
  237 + <div class="flex items-center text-sm">
  238 + <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block">
  239 + <img
  240 + class="object-cover w-full h-full rounded-full"
  241 + src="{{ asset(Storage::url($flot->image)) }}"
  242 + alt="{{ $flot->name }}"
  243 + loading="lazy"
  244 + />
  245 + <div
  246 + class="absolute inset-0 rounded-full shadow-inner"
  247 + aria-hidden="true"
  248 + ></div>
  249 + </div>
  250 + </div>
  251 + @else
  252 + -
  253 + @endif
  254 + </td>
  255 + <td class="px-4 py-3 text-xs">
  256 + {{ $flot->created_at }}
  257 + </td>
  258 + <td class="px-4 py-3 text-xs">
  259 + <div class="flex items-center text-sm">
  260 + <div>
  261 + <a href="{{ route('admin.flot', ['flot' => $flot->id, 'employer' => $flot->employer_id]) }}" class="text-xs text-gray-600 dark:text-gray-400">
  262 + Редактировать
  263 + </a> |
  264 + <a href="{{ route('admin.flot_delete', ['flot' => $flot->id, 'employer_id' => $flot->employer_id]) }}" class="text-xs text-gray-600 dark:text-gray-400">
  265 + Удалить
  266 + </a>
  267 + </div>
  268 + </div>
  269 + </td>
  270 + </tr>
  271 + @endforeach
  272 + </tbody>
  273 + </table>
  274 + @else
  275 + <h2>Нет данных</h2>
  276 + @endif
  277 + </label>
209 278 </div>
210 279 </div>
211 280 <br>
... ... @@ -220,239 +289,7 @@
220 289 >Назад</a>
221 290  
222 291 </div>
223   - <!--<div>
224   - <a href="">Флот</a>
225   - </div>
226   - <div>
227   - <a href="">Вакансии</a>
228   - </div>
229   - <div>
230   - <a href="">Контакты</a>
231   - </div>-->
232 292 </div>
233 293 </div>
234 294 </form>
235   - <!--
236   - <label class="block mt-4 text-sm">
237   - <span class="text-gray-700 dark:text-gray-400">
238   - Requested Limit
239   - </span>
240   - <select
241   - class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-select focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray"
242   - >
243   - <option>$1,000</option>
244   - <option>$5,000</option>
245   - <option>$10,000</option>
246   - <option>$25,000</option>
247   - </select>
248   - </label>
249   -
250   - <label class="block mt-4 text-sm">
251   - <span class="text-gray-700 dark:text-gray-400">
252   - Multiselect
253   - </span>
254   - <select
255   - class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-multiselect focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray"
256   - multiple
257   - >
258   - <option>Option 1</option>
259   - <option>Option 2</option>
260   - <option>Option 3</option>
261   - <option>Option 4</option>
262   - <option>Option 5</option>
263   - </select>
264   - </label>
265   -
266   - <label class="block mt-4 text-sm">
267   - <span class="text-gray-700 dark:text-gray-400">Message</span>
268   - <textarea
269   - class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-textarea focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray"
270   - rows="3"
271   - placeholder="Enter some long form content."
272   - ></textarea>
273   - </label>
274   -
275   - <div class="flex mt-6 text-sm">
276   - <label class="flex items-center dark:text-gray-400">
277   - <input
278   - type="checkbox"
279   - class="text-purple-600 form-checkbox focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray"
280   - />
281   - <span class="ml-2">
282   - I agree to the
283   - <span class="underline">privacy policy</span>
284   - </span>
285   - </label>
286   - </div>
287   -</div>
288   -
289   -<!-- Validation inputs -->
290   - <!--<h4
291   - class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300"
292   - >
293   - Validation
294   - </h4>
295   - <div
296   - class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"
297   - >
298   - <!-- Invalid input -->
299   - <!--<label class="block text-sm">
300   - <span class="text-gray-700 dark:text-gray-400">
301   - Invalid input
302   - </span>
303   - <input
304   - class="block w-full mt-1 text-sm border-red-600 dark:text-gray-300 dark:bg-gray-700 focus:border-red-400 focus:outline-none focus:shadow-outline-red form-input"
305   - placeholder="Jane Doe"
306   - />
307   - <span class="text-xs text-red-600 dark:text-red-400">
308   - Your password is too short.
309   - </span>
310   - </label>
311   -
312   - <!-- Valid input -->
313   - <!--<label class="block mt-4 text-sm">
314   - <span class="text-gray-700 dark:text-gray-400">
315   - Valid input
316   - </span>
317   - <input
318   - class="block w-full mt-1 text-sm border-green-600 dark:text-gray-300 dark:bg-gray-700 focus:border-green-400 focus:outline-none focus:shadow-outline-green form-input"
319   - placeholder="Jane Doe"
320   - />
321   - <span class="text-xs text-green-600 dark:text-green-400">
322   - Your password is strong.
323   - </span>
324   - </label>
325   -
326   - <!-- Helper text -->
327   - <!--<label class="block mt-4 text-sm">
328   - <span class="text-gray-700 dark:text-gray-400">
329   - Helper text
330   - </span>
331   - <input
332   - class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input"
333   - placeholder="Jane Doe"
334   - />
335   - <span class="text-xs text-gray-600 dark:text-gray-400">
336   - Your password must be at least 6 characters long.
337   - </span>
338   - </label>
339   -</div>
340   -
341   -<!-- Inputs with icons -->
342   - <!--<h4
343   - class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300"
344   - >
345   - Icons
346   - </h4>
347   - <div
348   - class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"
349   - >
350   - <label class="block text-sm">
351   - <span class="text-gray-700 dark:text-gray-400">Icon left</span>
352   - <!-- focus-within sets the color for the icon when input is focused -->
353   - <!--<div
354   - class="relative text-gray-500 focus-within:text-purple-600 dark:focus-within:text-purple-400"
355   - >
356   - <input
357   - class="block w-full pl-10 mt-1 text-sm text-black dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input"
358   - placeholder="Jane Doe"
359   - />
360   - <div
361   - class="absolute inset-y-0 flex items-center ml-3 pointer-events-none"
362   - >
363   - <svg
364   - class="w-5 h-5"
365   - aria-hidden="true"
366   - fill="none"
367   - stroke-linecap="round"
368   - stroke-linejoin="round"
369   - stroke-width="2"
370   - viewBox="0 0 24 24"
371   - stroke="currentColor"
372   - >
373   - <path
374   - d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"
375   - ></path>
376   - </svg>
377   - </div>
378   - </div>
379   -</label>
380   -
381   -<label class="block mt-4 text-sm">
382   - <span class="text-gray-700 dark:text-gray-400">Icon right</span>
383   - <!-- focus-within sets the color for the icon when input is focused -->
384   - <!--<div
385   - class="relative text-gray-500 focus-within:text-purple-600 dark:focus-within:text-purple-400"
386   - >
387   - <input
388   - class="block w-full pr-10 mt-1 text-sm text-black dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input"
389   - placeholder="Jane Doe"
390   - />
391   - <div
392   - class="absolute inset-y-0 right-0 flex items-center mr-3 pointer-events-none"
393   - >
394   - <svg
395   - class="w-5 h-5"
396   - aria-hidden="true"
397   - fill="none"
398   - stroke-linecap="round"
399   - stroke-linejoin="round"
400   - stroke-width="2"
401   - viewBox="0 0 24 24"
402   - stroke="currentColor"
403   - >
404   - <path
405   - d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"
406   - ></path>
407   - </svg>
408   - </div>
409   - </div>
410   -</label>
411   -</div>
412   -
413   -<!-- Inputs with buttons -->
414   - <!--<h4
415   - class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300"
416   - >
417   - Buttons
418   - </h4>
419   - <div
420   - class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"
421   - >
422   - <label class="block text-sm">
423   - <span class="text-gray-700 dark:text-gray-400">
424   - Button left
425   - </span>
426   - <div class="relative">
427   - <input
428   - class="block w-full pl-20 mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input"
429   - placeholder="Jane Doe"
430   - />
431   - <button
432   - class="absolute inset-y-0 px-4 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-l-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray"
433   - >
434   - Click
435   - </button>
436   - </div>
437   - </label>
438   -
439   - <label class="block mt-4 text-sm">
440   - <span class="text-gray-700 dark:text-gray-400">
441   - Button right
442   - </span>
443   - <div
444   - class="relative text-gray-500 focus-within:text-purple-600"
445   - >
446   - <input
447   - class="block w-full pr-20 mt-1 text-sm text-black dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input"
448   - placeholder="Jane Doe"
449   - />
450   - <button
451   - class="absolute inset-y-0 right-0 px-4 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-r-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"
452   - >
453   - Click
454   - </button>
455   - </div>
456   - </label>
457   - </div>-->
458 295 @endsection
resources/views/admin/flot/add.blade.php
... ... @@ -0,0 +1,7 @@
  1 +@extends('layout.admin', ['title' => 'Админка - Добавление корабля'])
  2 +
  3 +@section('content')
  4 + <form method="POST" action="{{ route('admin.flot_add_save') }}" enctype="multipart/form-data">
  5 + @include('admin.flot.test')
  6 + </form>
  7 +@endsection
resources/views/admin/flot/edit.blade.php
... ... @@ -0,0 +1,7 @@
  1 +@extends('layout.admin', ['title' => 'Админка - Редактирование корабля'])
  2 +
  3 +@section('content')
  4 + <form method="POST" action="{{ route('admin.flot_edit', ['flot' => $flot]) }}" enctype="multipart/form-data">
  5 + @include('admin.flot.test', ['flot' => $flot])
  6 + </form>
  7 +@endsection
resources/views/admin/flot/flot_add.blade.php
... ... @@ -0,0 +1,71 @@
  1 +@csrf
  2 +
  3 +@isset($flot)
  4 + @method('PUT')
  5 +@endisset
  6 +
  7 +<div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800">
  8 + <input type="hidden" id="id" name="id" value="{{ $flot->id }}"/>
  9 + <label class="block text-sm">
  10 + <span class="text-gray-700 dark:text-gray-400">Название корабля</span>
  11 + <input name="name" id="name"
  12 + class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input"
  13 + placeholder="Название учебного заведения" value="{{ old('name') ?? $flot->name ?? '' }}"
  14 + />
  15 + @error('name')
  16 + <span class="text-xs text-red-600 dark:text-red-400">
  17 + {{ $message }}
  18 + </span>
  19 + @enderror
  20 + </label><br>
  21 +
  22 + <label class="block text-sm">
  23 + <span class="text-gray-700 dark:text-gray-400">Текст</span>
  24 + <textarea class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-textarea focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray ckeditor_" name="text" placeholder="Текст (html)" required
  25 + rows="10">{{ old('text') ?? $flot->text ?? '' }}</textarea>
  26 + @error('text')
  27 + <span class="text-xs text-red-600 dark:text-red-400">
  28 + {{ $message }}
  29 + </span>
  30 + @enderror
  31 + </label><br>
  32 +
  33 + <label class="block text-sm">
  34 + <span class="text-gray-700 dark:text-gray-400">Картинка</span>
  35 + <input type="file" class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700
  36 + focus:border-purple-400 focus:outline-none focus:shadow-outline-purple
  37 + dark:text-gray-300 dark:focus:shadow-outline-gray form-input"
  38 + id="image" name="image" accept="image/png, image/jpeg">
  39 + @error('image')
  40 + <span class="text-xs text-red-600 dark:text-red-400">
  41 + {{ $message }}
  42 + </span>
  43 + @enderror
  44 + @isset($education->image)
  45 + <img src="{{asset(Storage::url($education->image))}}" width="100px"/>
  46 + @endisset
  47 + </label><br>
  48 +
  49 + <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4">
  50 + <div>
  51 + <button type="submit" class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple">
  52 + Сохранить
  53 + </button>
  54 + <a href="{{ route('admin.education.index') }}"
  55 + class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"
  56 + style="display: -webkit-inline-box; height: 30px!important;"
  57 + >Назад</a>
  58 + </div>
  59 + </div>
  60 +</div>
  61 +
  62 +<script src="//cdn.ckeditor.com/4.14.0/standard/ckeditor.js"></script>
  63 +
  64 +<!--<script src="{{ asset('./ckeditor/ckeditor.js') }}"></script>-->
  65 +<script>
  66 + CKEDITOR.replace( 'text', {
  67 + filebrowserUploadUrl: "{{route('ckeditor.image-upload', ['_token' => csrf_token() ])}}",
  68 + filebrowserImageUploadUrl: "{{ route('ckeditor.image-upload', ['_token' => csrf_token() ])}}",
  69 + filebrowserUploadMethod: 'form'
  70 + });
  71 +</script>
resources/views/admin/flot/test.blade.php
... ... @@ -0,0 +1,71 @@
  1 +@csrf
  2 +
  3 +@isset($flot)
  4 + @method('PUT')
  5 +@endisset
  6 +
  7 +<div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800">
  8 + <input type="hidden" id="employer_id" name="employer_id" value="@isset($flot->employer_id) {{$flot->employer_id }} @else {{ $employer->id }} @endif"/>
  9 + <label class="block text-sm">
  10 + <span class="text-gray-700 dark:text-gray-400">Название корабля</span>
  11 + <input name="name" id="name"
  12 + class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input"
  13 + placeholder="Название корабля" value="{{ old('name') ?? $flot->name ?? '' }}"
  14 + />
  15 + @error('name')
  16 + <span class="text-xs text-red-600 dark:text-red-400">
  17 + {{ $message }}
  18 + </span>
  19 + @enderror
  20 + </label><br>
  21 +
  22 + <label class="block text-sm">
  23 + <span class="text-gray-700 dark:text-gray-400">Текст</span>
  24 + <textarea class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-textarea focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray ckeditor_" name="text" placeholder="Текст (html)" required
  25 + rows="10">{{ old('text') ?? $flot->text ?? '' }}</textarea>
  26 + @error('text')
  27 + <span class="text-xs text-red-600 dark:text-red-400">
  28 + {{ $message }}
  29 + </span>
  30 + @enderror
  31 + </label><br>
  32 +
  33 + <label class="block text-sm">
  34 + <span class="text-gray-700 dark:text-gray-400">Картинка</span>
  35 + <input type="file" class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700
  36 + focus:border-purple-400 focus:outline-none focus:shadow-outline-purple
  37 + dark:text-gray-300 dark:focus:shadow-outline-gray form-input"
  38 + id="image" name="image" accept="image/png, image/jpeg">
  39 + @error('image')
  40 + <span class="text-xs text-red-600 dark:text-red-400">
  41 + {{ $message }}
  42 + </span>
  43 + @enderror
  44 + @isset($flot->image)
  45 + <img src="{{asset(Storage::url($flot->image))}}" width="100px"/>
  46 + @endisset
  47 + </label><br>
  48 +
  49 + <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4">
  50 + <div>
  51 + <button type="submit" class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple">
  52 + Сохранить
  53 + </button>
  54 + <a href="{{ route('admin.education.index') }}"
  55 + class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"
  56 + style="display: -webkit-inline-box; height: 30px!important;"
  57 + >Назад</a>
  58 + </div>
  59 + </div>
  60 +</div>
  61 +
  62 +<script src="//cdn.ckeditor.com/4.14.0/standard/ckeditor.js"></script>
  63 +
  64 +<!--<script src="{{ asset('./ckeditor/ckeditor.js') }}"></script>-->
  65 +<script>
  66 + CKEDITOR.replace( 'text', {
  67 + filebrowserUploadUrl: "{{route('ckeditor.image-upload', ['_token' => csrf_token() ])}}",
  68 + filebrowserImageUploadUrl: "{{ route('ckeditor.image-upload', ['_token' => csrf_token() ])}}",
  69 + filebrowserUploadMethod: 'form'
  70 + });
  71 +</script>
resources/views/ajax/companies.blade.php
... ... @@ -0,0 +1,30 @@
  1 +<div class="main__employers-one">
  2 +@if ($emps->count())
  3 + @foreach($emps as $emp)
  4 + <div class="main__employers-item">
  5 + <span class="main__employers-item-inner">
  6 + <img src="{{ asset(Storage::url($emp->logo)) }}" alt="{{ $emp->name_company }}" class="main__employers-item-pic">
  7 + <span class="main__employers-item-body">
  8 + <b>{{ $emp->name_company }}</b>
  9 + <i>{{ $emp->ads->count() }} вакансия(ий)</i>
  10 + </span>
  11 + </span>
  12 + <a href="{{ route('info_company', ['company' => $emp->id]) }}" class="button button_light main__employers-item-more">Подробнее</a>
  13 +
  14 + @if ($emp->oficial_status == 1)
  15 + <span class="main__employers-item-label">
  16 + <svg>
  17 + <use xlink:href="images/sprite.svg#v"></use>
  18 + </svg>
  19 + <span>Компания одобрена сервисом rekamore.su</span>
  20 + </span>
  21 + @endif
  22 + </div>
  23 + @endforeach
  24 +</div>
  25 +
  26 +{{ $emps->appends($_GET)->links('paginate') }}
  27 +@else
  28 + <H2>Нет данных</H2>
  29 +@endif
  30 +
resources/views/ajax/companies2.blade.php
... ... @@ -0,0 +1,29 @@
  1 +@if ($emps->count())
  2 + <div class="main__employers-two">
  3 + @foreach($emps as $emp)
  4 + <div class="main__employers-item">
  5 + <span class="main__employers-item-inner">
  6 + <img src="{{ asset(Storage::url($emp->logo)) }}" alt="{{ $emp->name_company }}" class="main__employers-item-pic">
  7 + <span class="main__employers-item-body">
  8 + <b>{{ $emp->name_company }}</b>
  9 + <i>{{ $emp->ads->count() }} вакансия(ий)</i>
  10 + </span>
  11 + </span>
  12 + <a href="{{ route('info_company', ['company' => $emp->id]) }}" class="button button_light main__employers-item-more">Подробнее</a>
  13 + @if ($emp->oficial_status == 1)
  14 + <span class="main__employers-item-label">
  15 + <svg>
  16 + <use xlink:href="{{ asset('images/sprite.svg#v') }}"></use>
  17 + </svg>
  18 + <span>Компания одобрена сервисом rekamore.su</span>
  19 + </span>
  20 + @endif
  21 + </div>
  22 + @endforeach
  23 + </div>
  24 + {{ $emps->appends($_GET)->links('paginate') }}
  25 +@else
  26 + <H2>Нет данных</H2>
  27 +@endif
  28 +
  29 +
resources/views/ajax/list_vacancies.blade.php
... ... @@ -0,0 +1,82 @@
  1 +@if ($Query->count())
  2 +@foreach ($Query as $Q)
  3 +<div class="main__vacancies-item main__employer-page-two-item">
  4 + <a href="{{ route('list-vacancies', ['categories' => $categories->id]) }}" class="back main__employer-page-two-item-back">
  5 + <svg>
  6 + <use xlink:href="{{ asset('images/sprite.svg#back') }}"></use>
  7 + </svg>
  8 + <span>
  9 + Вернуться к списку вакансий
  10 + </span>
  11 + </a>
  12 + <div class="main__employer-page-two-item-toper">
  13 + @if (isset($Q->employer))
  14 + <img src="{{ asset(Storage::url($Q->employer->logo)) }}" alt="{{ $Q->employer->name }}">
  15 + @endif
  16 + <span>@if (!empty($Q->name)) {{ $Q->name }} @endif</span>
  17 + </div>
  18 + <div class="main__employer-page-two-item-text">
  19 + <div class="main__employer-page-two-item-text-name">Судоходная компания ведет набор
  20 + специалистов на следующие должности:</div>
  21 + <div class="main__employer-page-two-item-text-links">
  22 + @if (isset($Q->jobs))
  23 + @foreach ($Q->jobs as $key => $j)
  24 + <a>“{{ $j->name }}” – з/п от @if (isset($Q->jobs_code[$key]->min_salary)) {{ $Q->jobs_code[$key]->min_salary }} @endif - @if (isset($Q->jobs_code[$key]->max_salary)) {{ $Q->jobs_code[$key]->max_salary }} @endif рублей (на руки)</a>
  25 + @endforeach
  26 + @endif
  27 + </div>
  28 + </div>
  29 + <div class="main__employer-page-two-item-text">
  30 + <div class="main__employer-page-two-item-text-name">Мы предлагаем:</div>
  31 + <div class="main__employer-page-two-item-text-body">
  32 + {!! $Q->text !!}
  33 + </div>
  34 + </div>
  35 + <div class="main__employer-page-two-item-text">
  36 + <div class="main__employer-page-two-item-text-name">Наши ожидания:</div>
  37 + <div class="main__employer-page-two-item-text-body">
  38 + {!! $Q->description !!}
  39 + </div>
  40 + </div>
  41 + <div class="main__employer-page-two-item-text">
  42 + <div class="main__employer-page-two-item-text-name">Резюме направляйте на почту:</div>
  43 + <div class="main__employer-page-two-item-text-body">
  44 + {!! $Q->contacts_emails !!}
  45 + </div>
  46 + </div>
  47 + <div class="main__employer-page-two-item-text">
  48 + <div class="main__employer-page-two-item-text-name">Или звоните:</div>
  49 + <div class="main__employer-page-two-item-text-body">
  50 + {!! $Q->contacts_telephones !!}
  51 + </div>
  52 + </div>
  53 + <div class="main__employer-page-two-item-tags">
  54 + @if (isset($Q->jobs))
  55 + @foreach ($Q->jobs as $key => $j)
  56 + <span class="main__employer-page-two-item-tag">#{{ $j->name }}</span>
  57 + @endforeach
  58 + @endif
  59 + </div>
  60 + <div class="main__employer-page-two-item-buttons">
  61 + <button type="button"
  62 + class="button main__employer-page-two-item-button">Откликнуться</button>
  63 + <a href="{{ route('vacancie', ['vacancy' => $Q->id]) }}" class="button button_light main__employer-page-two-item-button">Подробнее</a>
  64 + </div>
  65 + <div class="main__employer-page-two-item-bottom">
  66 + <div class="main__employer-page-two-item-bottom-date">{{ $Q->created_at }}</div>
  67 + <button type="button" class="like main__employer-page-two-item-bottom-like js-toggle">
  68 + <svg>
  69 + <use xlink:href="{{ asset('images/sprite.svg#heart') }}"></use>
  70 + </svg>
  71 + </button>
  72 + </div>
  73 +</div>
  74 +@endforeach
  75 +<div style="margin-top: 20px">
  76 + {{ $Query->appends($_GET)->links('paginate') }}
  77 +</div>
  78 +@else
  79 + <div class="main__vacancies-item main__employer-page-two-item">
  80 + Нет вакансий по данному запросу
  81 + </div>
  82 +@endif
resources/views/ajax/vacance-item.blade.php
resources/views/ajax/vacancies.blade.php
... ... @@ -3,7 +3,7 @@
3 3 @endphp
4 4 @if ($categories->count())
5 5 @foreach ($categories as $cat)
6   - <a href="#" class="vacancies__item">
  6 + <a href="{{ route('list-vacancies', ['categories' => $cat->id]) }}" class="vacancies__item">
7 7 <span style="border-color:{{$colors[$i]}}">
8 8 <b>{{ $cat->name }}</b>
9 9 <u>{{ $cat->min_salary }} &mdash; {{ $cat->max_salary }} ₽</u>
resources/views/companies.blade.php
... ... @@ -0,0 +1,182 @@
  1 +@extends('layout.frontend', ['title' => 'Судоходные компании РекаМоре'])
  2 +
  3 +@section('scripts')
  4 + <script>
  5 + console.log('Test system');
  6 + $(document).on('change', '#sort_ajax', function() {
  7 + var this_ = $(this);
  8 + var val_ = this_.val();
  9 + console.log('sort items '+val_);
  10 +
  11 + $.ajax({
  12 + type: "GET",
  13 + url: "{{ route('shipping_companies') }}",
  14 + data: "sort="+val_+"&block=1",
  15 + success: function (data) {
  16 + console.log('Выбор сортировки');
  17 + console.log(data);
  18 + $('#block_1').html(data);
  19 + },
  20 + headers: {
  21 + 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  22 + },
  23 + error: function (data) {
  24 + data = JSON.stringify(data);
  25 + console.log('Error: ' + data);
  26 + }
  27 + });
  28 +
  29 + $.ajax({
  30 + type: "GET",
  31 + url: "{{ route('shipping_companies') }}",
  32 + data: "sort="+val_+"&block=2",
  33 + success: function (data) {
  34 + console.log('Выбор сортировки2');
  35 + console.log(data);
  36 + history.pushState({}, '', "{{ route('shipping_companies') }}?sort="+val_+"@if (isset($_GET['page']))&page={{ $_GET['page'] }}@endif");
  37 + $('#block_2').html(data);
  38 + },
  39 + headers: {
  40 + 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  41 + },
  42 + error: function (data) {
  43 + data = JSON.stringify(data);
  44 + console.log('Error: ' + data);
  45 + }
  46 + });
  47 + });
  48 +
  49 + $(document).ready(function(){
  50 + var sel = $('#select2-sort_ajax-container');
  51 + var key = getUrlParameter('sort');
  52 +
  53 + if (key !=='') {
  54 + console.log(key);
  55 + switch (key) {
  56 + case "default": sel.html('Сортировка (по умолчанию)'); break;
  57 + case "name_up": sel.html('По имени (возрастание)'); break;
  58 + case "name_down": sel.html('По дате (убывание)'); break;
  59 + case "created_at_up": sel.html('По дате (возрастание)'); break;
  60 + case "created_at_down": sel.html('По дате (убывание)'); break;
  61 + }
  62 +
  63 + }
  64 + });
  65 + </script>
  66 +@endsection
  67 +
  68 +@section('content')
  69 +<section class="thing">
  70 + <div class="container">
  71 + <form class="thing__body">
  72 + @csrf
  73 + <ul class="breadcrumbs thing__breadcrumbs">
  74 + <li><a href="{{ route('index') }}">Главная</a></li>
  75 + <li><b>Работодатели</b></li>
  76 + </ul>
  77 + <h1 class="thing__title">Работодатели</h1>
  78 + <p class="thing__text">С другой стороны, социально-экономическое развитие не оставляет шанса для
  79 + существующих финансовых и административных условий.</p>
  80 + <div class="search thing__search">
  81 + <input type="search" id="search" name="search" class="input" value="{{ (isset($_GET['search'])) ? $_GET['search'] : '' }}" placeholder="Введите наименование работодателя" required>
  82 + <button type="submit" class="button">Найти</button>
  83 + <span>
  84 + <svg>
  85 + <use xlink:href="{{ asset('images/sprite.svg#search') }}"></use>
  86 + </svg>
  87 + </span>
  88 + </div>
  89 + </form>
  90 + </div>
  91 +</section>
  92 +<main class="main">
  93 + <div class="container">
  94 + <div class="main__employers">
  95 + <div class="filters">
  96 + <div class="filters__label">Показано @if ($count_emps < 4) 1 - {{ $count_emps }} @else 1 – 4 @endif из {{ $count_emps }} результатов поиска</div>
  97 + <div class="filters__body">
  98 + <div class="select filters__select">
  99 + <select class="js-select2" id="sort_ajax" name="sort_ajax">
  100 + <option value="default">Сортировка (по умолчанию)</option>
  101 + <option value="name_up">По имени (возрастание)</option>
  102 + <option value="name_down">По имени (убывание)</option>
  103 + <option value="created_at_up">По дате (возрастание)</option>
  104 + <option value="created_at_down">По дате (убывание)</option>
  105 + </select>
  106 + </div>
  107 + <button type="button" class="filters__item active" data-tab="1">
  108 + <svg>
  109 + <use xlink:href="{{ asset('images/sprite.svg#grid-1') }}"></use>
  110 + </svg>
  111 + </button>
  112 + <button type="button" class="filters__item" data-tab="2">
  113 + <svg>
  114 + <use xlink:href="{{ asset('images/sprite.svg#grid-2') }}"></use>
  115 + </svg>
  116 + </button>
  117 + </div>
  118 + </div>
  119 + <div class="main__employers-body showed" data-body="1" id="block_1" name="block_1">
  120 + <div class="main__employers-one">
  121 + @if ($emps->count())
  122 + @foreach($emps as $emp)
  123 + <div class="main__employers-item">
  124 + <span class="main__employers-item-inner">
  125 + <img src="{{ asset(Storage::url($emp->logo)) }}" alt="{{ $emp->name_company }}" class="main__employers-item-pic">
  126 + <span class="main__employers-item-body">
  127 + <b>{{ $emp->name_company }}</b>
  128 + <i>{{ $emp->ads->count() }} вакансия(ий)</i>
  129 + </span>
  130 + </span>
  131 + <a href="{{ route('info_company', ['company' => $emp->id]) }}" class="button button_light main__employers-item-more">Подробнее</a>
  132 +
  133 + @if ($emp->oficial_status == 1)
  134 + <span class="main__employers-item-label">
  135 + <svg>
  136 + <use xlink:href="images/sprite.svg#v"></use>
  137 + </svg>
  138 + <span>Компания одобрена сервисом rekamore.su</span>
  139 + </span>
  140 + @endif
  141 + </div>
  142 + @endforeach
  143 + </div>
  144 +
  145 + {{ $emps->appends($_GET)->links('paginate') }}
  146 + @else
  147 + <H2>Нет данных</H2>
  148 + @endif
  149 + </div>
  150 + <div class="main__employers-body" data-body="2" id="block_2" name="block_2">
  151 + @if ($emps->count())
  152 + <div class="main__employers-two">
  153 + @foreach($emps as $emp)
  154 + <div class="main__employers-item">
  155 + <span class="main__employers-item-inner">
  156 + <img src="{{ asset(Storage::url($emp->logo)) }}" alt="{{ $emp->name_company }}" class="main__employers-item-pic">
  157 + <span class="main__employers-item-body">
  158 + <b>{{ $emp->name_company }}</b>
  159 + <i>{{ $emp->ads->count() }} вакансия(ий)</i>
  160 + </span>
  161 + </span>
  162 + <a href="{{ route('info_company', ['company' => $emp->id]) }}" class="button button_light main__employers-item-more">Подробнее</a>
  163 + @if ($emp->oficial_status == 1)
  164 + <span class="main__employers-item-label">
  165 + <svg>
  166 + <use xlink:href="{{ asset('images/sprite.svg#v') }}"></use>
  167 + </svg>
  168 + <span>Компания одобрена сервисом rekamore.su</span>
  169 + </span>
  170 + @endif
  171 + </div>
  172 + @endforeach
  173 + </div>
  174 + {{ $emps->appends($_GET)->links('paginate') }}
  175 + @else
  176 + <H2>Нет данных</H2>
  177 + @endif
  178 + </div>
  179 + </div>
  180 + </div>
  181 +</main>
  182 +@endsection
resources/views/contacts.blade.php
... ... @@ -0,0 +1,140 @@
  1 +@extends('layout.frontend', ['title' => 'Образование и образовательные программы - РекаМоре'])
  2 +
  3 +@section('scripts')
  4 + <script>
  5 + console.log('Test system');
  6 + $(document).on('change', '#sort_ajax', function() {
  7 + var this_ = $(this);
  8 + var val_ = this_.val();
  9 + console.log('sort items '+val_);
  10 +
  11 + $.ajax({
  12 + type: "GET",
  13 + url: "{{ route('shipping_companies') }}",
  14 + data: "sort="+val_+"&block=1",
  15 + success: function (data) {
  16 + console.log('Выбор сортировки');
  17 + console.log(data);
  18 + $('#block_1').html(data);
  19 + },
  20 + headers: {
  21 + 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  22 + },
  23 + error: function (data) {
  24 + data = JSON.stringify(data);
  25 + console.log('Error: ' + data);
  26 + }
  27 + });
  28 +
  29 + $.ajax({
  30 + type: "GET",
  31 + url: "{{ route('shipping_companies') }}",
  32 + data: "sort="+val_+"&block=2",
  33 + success: function (data) {
  34 + console.log('Выбор сортировки2');
  35 + console.log(data);
  36 + history.pushState({}, '', "{{ route('shipping_companies') }}?sort="+val_+"@if (isset($_GET['page']))&page={{ $_GET['page'] }}@endif");
  37 + $('#block_2').html(data);
  38 + },
  39 + headers: {
  40 + 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  41 + },
  42 + error: function (data) {
  43 + data = JSON.stringify(data);
  44 + console.log('Error: ' + data);
  45 + }
  46 + });
  47 + });
  48 + </script>
  49 +@endsection
  50 +
  51 +@section('content')
  52 + <section class="thing">
  53 + <div class="container">
  54 + <div class="thing__body">
  55 + <ul class="breadcrumbs thing__breadcrumbs">
  56 + <li><a href="{{ route('index') }}">Главная</a></li>
  57 + <li><b>Контакты</b></li>
  58 + </ul>
  59 + <img src="{{ asset('images/14.jpg') }}" alt="" class="thing__pic thing__pic_two">
  60 + <h1 class="thing__title">Мы специализированная доска объявлений для поиска плавсостава</h1>
  61 + <p class="thing__text">Нашим сервисом пользуются более 120 судоходных компаний России.</p>
  62 + <p class="thing__text">Со списком компаний Вы можете ознакомиться перейдя по кнопке ниже.</p>
  63 + <div class="thing__buttons">
  64 + <a href="{{ route('shipping_companies') }}" class="button">Список компаний</a>
  65 + </div>
  66 + </div>
  67 + </div>
  68 + </section>
  69 +
  70 + <main class="main">
  71 + <div class="container">
  72 + <div class="main__cond">
  73 + <div class="main__cond-label">
  74 + На рынке мы с 2020 года.
  75 + <br>Мы молодая компания, которой важно сделать хороший и востребованный продукт!
  76 + </div>
  77 + <div>
  78 + <h3>За это время нам удалось:</h3>
  79 + <ul class="main__cond-icons">
  80 + <li>
  81 + <span><img src="{{ asset('images/svg/1.svg') }}" alt=""></span>
  82 + Создать самое крупное сообщество Вконтакте по поиску работы на речноми морском флоте
  83 + </li>
  84 + <li>
  85 + <span><img src="{{ asset('images/svg/2.svg') }}" alt=""></span>
  86 + Создать самый крупный телеграм канал по поиску работы на речноми морском флоте
  87 + </li>
  88 + <li>
  89 + <span><img src="{{ asset('images/svg/3.svg') }}" alt=""></span>
  90 + Создать действительно эффективную и удобную базу анкет
  91 + </li>
  92 + <li>
  93 + <span><img src="{{ asset('images/svg/4.svg') }} " alt=""></span>
  94 + Разместить свою рекламу во многих учебных заведениях нашей страны. Колледжи,вузы, утц, медицинские центры охотно размещают нашу рекламу в своих заведениях
  95 + </li>
  96 + <li>
  97 + <span><img src="{{ asset('images/svg/5.svg') }}" alt=""></span>
  98 + Подключить к нашему сервису более 120 судоходных компаний России
  99 + </li>
  100 + <li>
  101 + <span><img src="{{ asset('images/svg/6.svg') }}" alt=""></span>
  102 + Оправдать доверие и ожидание, так как компании заключившие с нами договорв первый раз в 95% случаев остаются довольны сотрудничеством и продлевают договор
  103 + </li>
  104 + </ul>
  105 + </div>
  106 + <div>
  107 + <h3>Форма обратной связи</h3>
  108 + <p>Все поля обязательны для заполнения.</p>
  109 + <form class="callback main__cond-callback" action="" method="GET">
  110 + <div class="callback__body">
  111 + <input type="text" class="input" id="name" name="name" placeholder="Ваше имя" required>
  112 + <input type="text" class="input" id="company" name="company" placeholder="Название судоходной компании" required>
  113 + <input type="tel" class="input" id="telephone" name="telephone" placeholder="Телефон" required>
  114 + <input type="email" class="input" id="email" name="email" placeholder="Электронная почта" required>
  115 + </div>
  116 + <textarea class="textarea callback__textarea" id="text" name="text" placeholder="Текст сообщения" required></textarea>
  117 + <div class="callback__bottom">
  118 + <label class="checkbox">
  119 + <input type="checkbox" class="checkbox__input" id="box" name="box" required>
  120 + <span class="checkbox__icon">
  121 + <svg>
  122 + <use xlink:href="{{ asset('images/sprite.svg#v') }}"></use>
  123 + </svg>
  124 + </span>
  125 + <span class="checkbox__text">
  126 + <span>
  127 + Я согласен(на) с
  128 + <a href="{{ route('page', ['pages' => "Politika-konfidencialnosti"]) }}">Политикой конфиденциальности</a>
  129 + </span>
  130 + </span>
  131 + </label>
  132 + <button type="submit" class="button">Отправить</button>
  133 + </div>
  134 + </form>
  135 + </div>
  136 + </div>
  137 + </div>
  138 + </main>
  139 + </div>
  140 +@endsection
resources/views/education.blade.php
... ... @@ -0,0 +1,157 @@
  1 +@extends('layout.frontend', ['title' => 'Образование и образовательные программы - РекаМоре'])
  2 +
  3 +@section('scripts')
  4 + <script>
  5 + console.log('Test system');
  6 + $(document).on('change', '#sort_ajax', function() {
  7 + var this_ = $(this);
  8 + var val_ = this_.val();
  9 + console.log('sort items '+val_);
  10 +
  11 + $.ajax({
  12 + type: "GET",
  13 + url: "{{ route('shipping_companies') }}",
  14 + data: "sort="+val_+"&block=1",
  15 + success: function (data) {
  16 + console.log('Выбор сортировки');
  17 + console.log(data);
  18 + $('#block_1').html(data);
  19 + },
  20 + headers: {
  21 + 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  22 + },
  23 + error: function (data) {
  24 + data = JSON.stringify(data);
  25 + console.log('Error: ' + data);
  26 + }
  27 + });
  28 +
  29 + $.ajax({
  30 + type: "GET",
  31 + url: "{{ route('shipping_companies') }}",
  32 + data: "sort="+val_+"&block=2",
  33 + success: function (data) {
  34 + console.log('Выбор сортировки2');
  35 + console.log(data);
  36 + history.pushState({}, '', "{{ route('shipping_companies') }}?sort="+val_+"@if (isset($_GET['page']))&page={{ $_GET['page'] }}@endif");
  37 + $('#block_2').html(data);
  38 + },
  39 + headers: {
  40 + 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  41 + },
  42 + error: function (data) {
  43 + data = JSON.stringify(data);
  44 + console.log('Error: ' + data);
  45 + }
  46 + });
  47 + });
  48 +
  49 + $(document).ready(function(){
  50 + var sel = $('#select2-sort_ajax-container');
  51 + var key = getUrlParameter('sort');
  52 +
  53 + if (key !=='') {
  54 + console.log(key);
  55 + switch (key) {
  56 + case "default": sel.html('Сортировка (по умолчанию)'); break;
  57 + case "name_up": sel.html('По имени (возрастание)'); break;
  58 + case "name_down": sel.html('По дате (убывание)'); break;
  59 + case "created_at_up": sel.html('По дате (возрастание)'); break;
  60 + case "created_at_down": sel.html('По дате (убывание)'); break;
  61 + }
  62 +
  63 + }
  64 + });
  65 + </script>
  66 +@endsection
  67 +
  68 +@section('content')
  69 + <section class="thing">
  70 + <div class="container">
  71 + <form class="thing__body" active="{{ route('education') }}">
  72 + <ul class="breadcrumbs thing__breadcrumbs">
  73 + <li><a href="{{ route('index') }}">Главная</a></li>
  74 + <li><b>Образование</b></li>
  75 + </ul>
  76 + <h1 class="thing__title">Образование</h1>
  77 + <p class="thing__text">Прежде всего, современная методология разработки представляет собой интересный эксперимент проверки направлений прогрессивного развития.</p>
  78 + <div class="search thing__search">
  79 + <input type="search" class="input" id="search" name="search" placeholder="Введите наименование работодателя" value="@if (!empty($_GET['search'])) {{ $_GET['search'] }} @endif">
  80 + <button type="submit" class="button">Найти</button>
  81 + <span>
  82 + <svg>
  83 + <use xlink:href="{{ asset('images/sprite.svg#search') }}"></use>
  84 + </svg>
  85 + </span>
  86 + </div>
  87 + </form>
  88 + </div>
  89 + </section>
  90 + <main class="main">
  91 + <div class="container">
  92 + <div class="filters">
  93 + <div class="filters__label">Показано 1 – @if($count_edu < 6) {{ $count_edu }}@else 6 @endif из {{ $count_edu }} результатов поиска</div>
  94 + <div class="filters__body">
  95 + <div class="select filters__select">
  96 + <select class="js-select2" id="sort_ajax" name="sort_ajax">
  97 + <option value="default">Сортировка (по умолчанию)</option>
  98 + <option value="name_up">По имени (возрастание)</option>
  99 + <option value="name_down">По имени (убывание)</option>
  100 + <option value="created_at_up">По дате (возрастание)</option>
  101 + <option value="created_at_down">По дате (убывание)</option>
  102 + </select>
  103 + </div>
  104 + </div>
  105 + </div>
  106 + @if ($educations->count())
  107 + <div class="main__ads">
  108 + @foreach($educations as $edu)
  109 + <div class="main__ads-item">
  110 + <div class="main__ads-item-pic">
  111 + <img src="@if (!empty($edu->image)) {{ asset(Storage::url($edu->image)) }} @else {{ asset('images/education.jpg') }} @endif" alt="{{ $edu->name }}">
  112 + <span>
  113 + <svg>
  114 + <use xlink:href="{{ asset('images/sprite.svg#v') }}"></use>
  115 + </svg>
  116 + </span>
  117 + </div>
  118 + <div class="main__ads-item-body">
  119 + <b>{{ $edu->name }}</b>
  120 + <span>{{ $edu->program_education->count() }} учебных направлений</span>
  121 + <a href="" class="button button_light">Читать далее</a>
  122 + </div>
  123 + </div>
  124 + @endforeach
  125 +
  126 + </div>
  127 + {{ $educations->appends($_GET)->links('paginate') }}
  128 + @else
  129 + <H2>Нет данных</H2>
  130 + @endif
  131 + <!--<div class="pagination">
  132 + <a href="#" class="pagination__nav pagination__nav_prev">
  133 + <svg>
  134 + <use xlink:href="images/sprite.svg#arrow-bold"></use>
  135 + </svg>
  136 + </a>
  137 + <span class="pagination__item active">1</span>
  138 + <a href="#" class="pagination__item">2</a>
  139 + <a href="#" class="pagination__item">3</a>
  140 + <a href="#" class="pagination__item">4</a>
  141 + <a href="#" class="pagination__item">5</a>
  142 + <span class="pagination__dots">
  143 + <svg>
  144 + <use xlink:href="images/sprite.svg#dots"></use>
  145 + </svg>
  146 + </span>
  147 + <a href="#" class="pagination__item">25</a>
  148 + <a href="#" class="pagination__nav pagination__nav_next">
  149 + <svg>
  150 + <use xlink:href="images/sprite.svg#arrow-bold"></use>
  151 + </svg>
  152 + </a>
  153 + </div>-->
  154 + </div>
  155 + </main>
  156 + </div>
  157 +@endsection
resources/views/info_company.blade.php
... ... @@ -0,0 +1,242 @@
  1 +@extends('layout.frontend', ['title' => 'Описание компании '.$title.'- РекаМоре'])
  2 +
  3 +@section('scripts')
  4 + <script>
  5 + console.log('Test system');
  6 + $(document).on('change', '#sort_ajax', function() {
  7 + var this_ = $(this);
  8 + var val_ = this_.val();
  9 + console.log('sort items '+val_);
  10 +
  11 + $.ajax({
  12 + type: "GET",
  13 + url: "{{ route('shipping_companies') }}",
  14 + data: "sort="+val_+"&block=1",
  15 + success: function (data) {
  16 + console.log('Выбор сортировки');
  17 + console.log(data);
  18 + $('#block_1').html(data);
  19 + },
  20 + headers: {
  21 + 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  22 + },
  23 + error: function (data) {
  24 + data = JSON.stringify(data);
  25 + console.log('Error: ' + data);
  26 + }
  27 + });
  28 +
  29 + $.ajax({
  30 + type: "GET",
  31 + url: "{{ route('shipping_companies') }}",
  32 + data: "sort="+val_+"&block=2",
  33 + success: function (data) {
  34 + console.log('Выбор сортировки2');
  35 + console.log(data);
  36 + history.pushState({}, '', "{{ route('shipping_companies') }}?sort="+val_+"@if (isset($_GET['page']))&page={{ $_GET['page'] }}@endif");
  37 + $('#block_2').html(data);
  38 + },
  39 + headers: {
  40 + 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  41 + },
  42 + error: function (data) {
  43 + data = JSON.stringify(data);
  44 + console.log('Error: ' + data);
  45 + }
  46 + });
  47 + });
  48 +
  49 + $(document).ready(function(){
  50 + var sel = $('#select2-sort_ajax-container');
  51 + var key = getUrlParameter('sort');
  52 +
  53 + if (key !=='') {
  54 + console.log(key);
  55 + switch (key) {
  56 + case "default": sel.html('Сортировка (по умолчанию)'); break;
  57 + case "name_up": sel.html('По имени (возрастание)'); break;
  58 + case "name_down": sel.html('По дате (убывание)'); break;
  59 + case "created_at_up": sel.html('По дате (возрастание)'); break;
  60 + case "created_at_down": sel.html('По дате (убывание)'); break;
  61 + }
  62 +
  63 + }
  64 + });
  65 + </script>
  66 +@endsection
  67 +
  68 +@section('content')
  69 + <section class="thing">
  70 + <div class="container">
  71 + <div class="thing__body">
  72 + <ul class="breadcrumbs thing__breadcrumbs">
  73 + <li><a href="{{ route('index') }}">Главная</a></li>
  74 + <li><a href="{{ route('shipping_companies') }}">Работодатели</a></li>
  75 + <li><b>@isset($title) {{ $title }} @else Не указано @endif</b></li>
  76 + </ul>
  77 + @if ($company[0]->oficial_status == 1)
  78 + <div class="thing__badge">
  79 + <svg>
  80 + <use xlink:href="{{ asset('images/sprite.svg#badge') }}"></use>
  81 + </svg>
  82 + Компания проверена
  83 + </div>
  84 + @endif
  85 +
  86 + <img src="{{ asset(Storage::url($company[0]->logo)) }}" alt="{{ $company[0]->name_company }}" class="thing__pic">
  87 + <h1 class="thing__title">{{ $company[0]->name_company }}</h1>
  88 + <p class="thing__text">{{ $company[0]->text }}</p>
  89 + <div class="thing__buttons">
  90 + <button type="button" class="button">
  91 + <svg>
  92 + <use xlink:href="{{ asset('images/sprite.svg#grid-1') }}"></use>
  93 + </svg>
  94 + {{ $company[0]->ads->count() }} вакансии
  95 + </button>
  96 + <a href="" class="button">
  97 + Написать сообщение
  98 + </a>
  99 + </div>
  100 + </div>
  101 + </div>
  102 + </section>
  103 + <main class="main">
  104 + <div class="container">
  105 + <div class="main__employer-page">
  106 + <h2 class="main__employer-page-title">О компании</h2>
  107 + <div class="main__employer-page-info">
  108 + <div class="main__employer-page-item">
  109 + <b>Адрес компании</b>
  110 + <span>
  111 + {{ $company[0]->address }}
  112 + </span>
  113 + </div>
  114 + <div class="main__employer-page-item">
  115 + <b>Сайт</b>
  116 + <span>
  117 + <a href="{{ $company[0]->site }}">{{ $company[0]->site }}</a>
  118 + </span>
  119 + </div>
  120 + <div class="main__employer-page-item">
  121 + <b>Почта</b>
  122 + <span>
  123 + <a href="mailto:">{{ $company[0]->email }}</a>
  124 + </span>
  125 + </div>
  126 + <div class="main__employer-page-item">
  127 + <b>Телефон</b>
  128 + <span>
  129 + <a href="tel:{{ $company[0]->telephone }}">{{ $company[0]->telephone }}</a>
  130 + </span>
  131 + </div>
  132 + </div>
  133 + <div class="main__employer-page-item">
  134 + <b>Описание</b>
  135 + <span>
  136 + {{ $company[0]->text }}
  137 + </span>
  138 + </div>
  139 + <div>
  140 + <div class="main__employer-page-tabs">
  141 + <button type="button" class="main__employer-page-tabs-item active"
  142 + data-tab="1">Флот</button>
  143 + <button type="button" class="main__employer-page-tabs-item" data-tab="2">Вакансии</button>
  144 + </div>
  145 + <div class="main__employer-page-body">
  146 + <div class="main__employer-page-body-item showed" data-body="1">
  147 + <div class="main__employer-page-one">
  148 + @if ($company[0]->flots->count())
  149 + @foreach ($company[0]->flots as $flot)
  150 + <a href="" class="main__employer-page-one-item">
  151 + <img src="{{ asset(Storage::url($flot->image)) }}" alt="{{ $flot->name }}">
  152 + <b>{{ $flot->region }}</b>
  153 + <span>{{ $flot->power }}</span>
  154 + </a>
  155 + @endforeach
  156 + @endif
  157 + </div>
  158 + </div>
  159 +
  160 + <div class="main__employer-page-body-item" data-body="2">
  161 + <div class="main__employer-page-two">
  162 + @foreach ($company[0]->ads as $job)
  163 + @foreach ($job->ad_job as $item)
  164 + <div class="main__employer-page-two-item">
  165 + <div class="main__employer-page-two-item-toper">
  166 + <!-- end -->
  167 + <img src="{{ asset(Storage::url($company[0]->logo)) }}" alt="{{ $job->name }}">
  168 + <span>{{ $job->name }}</span>
  169 + </div>
  170 + <div class="main__employer-page-two-item-title">{{ $item->flot }}</div>
  171 + <div class="main__employer-page-two-item-text">
  172 + <div class="main__employer-page-two-item-text-name">
  173 + {{ $item->job_title->name }}
  174 + </div>
  175 + <div class="main__employer-page-two-item-text-body">
  176 + <p>Зарплата:{{ $item->min_salary }} - {{ $item->max_salary }}р + {{ $item->sytki }} суточные.</p>
  177 + <p>Контракт: {{ $item->period }} мес.</p>
  178 + </div>
  179 + </div>
  180 + <div class="main__employer-page-two-item-text">
  181 + <div class="main__employer-page-two-item-text-name">Район работы</div>
  182 + <div class="main__employer-page-two-item-text-body">
  183 + <p>{{ $item->region }}</p>
  184 + </div>
  185 + </div>
  186 + <div class="main__employer-page-two-item-text">
  187 + <div class="main__employer-page-two-item-text-name">Посадка</div>
  188 + <div class="main__employer-page-two-item-text-body">
  189 + <p> {{ $item->start }}</p>
  190 + {!! $item->description !!}
  191 + </div>
  192 + </div>
  193 + <div class="main__employer-page-two-item-text">
  194 + <div class="main__employer-page-two-item-text-name">Звонить по вопросам на:
  195 + </div>
  196 + <div class="main__employer-page-two-item-text-body">
  197 + <a href="tel:{{ $job->telephone }}">{{ $job->telephone }}</a>
  198 + </div>
  199 + </div>
  200 + <div class="main__employer-page-two-item-text">
  201 + <div class="main__employer-page-two-item-text-name">Анкеты присылать на
  202 + почту:
  203 + </div>
  204 + <div class="main__employer-page-two-item-text-body">
  205 + <a href="mailto: {{ $job->email }}">{{ $job->email }}</a>
  206 + </div>
  207 + </div>
  208 + <div class="main__employer-page-two-item-tags">
  209 + <span class="main__employer-page-two-item-tag">#{{ $item->job_title->name }}</span>
  210 + </div>
  211 + <div class="main__employer-page-two-item-buttons">
  212 + <button type="button"
  213 + class="button main__employer-page-two-item-button">Оставить
  214 + отклик</button>
  215 + <a href="#"
  216 + class="button button_light main__employer-page-two-item-button">Подробнее</a>
  217 + </div>
  218 + <div class="main__employer-page-two-item-bottom">
  219 + <div class="main__employer-page-two-item-bottom-date">{{ $job->updated_at }}</div>
  220 + <button type="button"
  221 + class="like main__employer-page-two-item-bottom-like js-toggle">
  222 + <svg>
  223 + <use xlink:href="{{ asset('images/sprite.svg#heart') }}"></use>
  224 + </svg>
  225 + </button>
  226 + </div>
  227 + </div>
  228 + @endforeach
  229 + @endforeach
  230 + <button type="button"
  231 + class="button button_light button_more main__employer-page-two-more js-toggle js-parent-toggle">
  232 + <span>Показать ещё</span>
  233 + <span>Скрыть</span>
  234 + </button>
  235 + </div>
  236 + </div>
  237 + </div>
  238 + </div>
  239 + </div>
  240 + </div>
  241 + </main>
  242 +@endsection
resources/views/layout/frontend-page.blade.php
... ... @@ -0,0 +1,261 @@
  1 +<!DOCTYPE html>
  2 +<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
  3 +
  4 +<head>
  5 + <meta charset="utf-8">
  6 + <title>{{ $title }}</title>
  7 + <meta name="viewport" content="width=device-width,initial-scale=1">
  8 + <meta name="theme-color" content="#377D87">
  9 + <link rel="stylesheet" href="{{ asset('css/news/style.css') }}">
  10 +</head>
  11 +
  12 +<body id="body">
  13 +<a href="#body" class="to-top js-scroll-to">
  14 + <svg>
  15 + <use xlink:href="{{ asset('images/sprite.svg#arrow-top') }}"></use>
  16 + </svg>
  17 +</a>
  18 +
  19 +<div> <!-- BEGIN TOP WRAPPER -->
  20 + <header class="header">
  21 + <div class="container">
  22 + <div class="header__body">
  23 + <div class="header__left">
  24 + <a href="{{ route('index') }}" class="header__logo">
  25 + <svg>
  26 + <use xlink:href="{{ asset('images/sprite.svg#logo') }}"></use>
  27 + </svg>
  28 + </a>
  29 + <nav class="header__menu">
  30 + <a href="{{ route('vacancies') }}" class="header__menu-item">Вакансии</a>
  31 + <a href="{{ route('shipping_companies') }}" class="header__menu-item">Судоходные компании</a>
  32 + <a href="{{ route('education') }}" class="header__menu-item">Образование</a>
  33 + </nav>
  34 + </div>
  35 + <div class="header__right">
  36 + <button class="header__notifs header__notifs_actived">
  37 + <svg>
  38 + <use xlink:href="{{ asset('images/sprite.svg#ring') }}"></use>
  39 + </svg>
  40 + <span>Уведомления</span>
  41 + </button>
  42 + <div class="header__right-line"></div>
  43 + <button class="header__burger">
  44 + <svg>
  45 + <use xlink:href="{{ asset('images/sprite.svg#burger') }}"></use>
  46 + </svg>
  47 + </button>
  48 + @guest
  49 + <a class="button header__sign" href="{{ route('login') }}">Войти</a>
  50 + @else
  51 + <a class="button header__sign" href="{{ route('logout') }}">Выйти</a>
  52 + @endguest
  53 + </div>
  54 + </div>
  55 + </div>
  56 + </header>
  57 +
  58 + <section class="thing">
  59 + <div class="container">
  60 + <div class="thing__body">
  61 + <ul class="breadcrumbs thing__breadcrumbs">
  62 + <li><a href="{{ route('index') }}">Главная</a></li>
  63 + <li><b>{{ $title }}</b></li>
  64 + </ul>
  65 + <img src="{{ asset('images/14.jpg') }}" alt="" class="thing__pic thing__pic_two">
  66 + <h1 class="thing__title">{{ $title }}</h1>
  67 + <p class="thing__text">{{ $description }}</p>
  68 + </div>
  69 + </div>
  70 + </section>
  71 +
  72 + @yield('content')
  73 +
  74 +</div> <!-- END TOP WRAPPER -->
  75 +
  76 +<div> <!-- BEGIN BOTTOM WRAPPER -->
  77 + <footer class="footer">
  78 + <div class="container">
  79 + <div class="footer__mobile">
  80 + <button class="footer__mobile-toper js-toggle active">
  81 + <a href="{{ route('index') }}">
  82 + <svg>
  83 + <use xlink:href="{{ asset('images/sprite.svg#logo') }}"></use>
  84 + </svg>
  85 + </a>
  86 + <span>
  87 + <svg>
  88 + <use xlink:href="{{ asset('images/sprite.svg#arrow-top') }}"></use>
  89 + </svg>
  90 + </span>
  91 + </button>
  92 + <div class="footer__mobile-menu">
  93 + <div class="footer__mobile-menu-item">
  94 + <button class="js-toggle">
  95 + <b>Соискателям</b>
  96 + <span><svg>
  97 + <use xlink:href="{{ asset('images/sprite.svg#arrow-top') }}"></use>
  98 + </svg></span>
  99 + </button>
  100 + <div>
  101 + <a href="{{ route('vacancies') }}">Вакансии</a>
  102 + <a href="{{ route('if_public') }}">Условия размещения</a>
  103 + <a href="{{ route('education') }}">Образование</a>
  104 + <a href="{{ route('news') }}">Новости</a>
  105 + <a href="{{ route('contacts') }}">Контакты</a>
  106 + <a href="{{ route('public_offer') }}">Публичная оферта</a>
  107 + </div>
  108 + </div>
  109 + <div class="footer__mobile-menu-item">
  110 + <button class="js-toggle">
  111 + <b>Работодателям</b>
  112 + <span><svg>
  113 + <use xlink:href="{{asset('images/sprite.svg#arrow-top') }}"></use>
  114 + </svg></span>
  115 + </button>
  116 + <div>
  117 + <a href="{{ route('register') }}">Регистрация</a>
  118 + <a href="{{ route('bd_resume') }}">База резюме</a>
  119 + <a href="{{ route('cost_public_employer') }}">Стоимость размещения</a>
  120 + <a href="{{ route('instruction') }}">Инструкции</a>
  121 + <a href="{{ route('effective_note') }}">Эффективность объявления</a>
  122 + <a href="{{ route('public_offer_emp') }}">Публичная оферта</a>
  123 + </div>
  124 + </div>
  125 + </div>
  126 + <div class="footer__mobile-contacts">
  127 + <b>Контакты</b>
  128 + <a href="tel:{{ $companies[0]->telephone }}">{{ $companies[0]->telephone }}</a>
  129 + <a href="mailto:{{ $companies[0]->email }}">{{ $companies[0]->email }}</a>
  130 + </div>
  131 + <div class="footer__mobile-bottom">
  132 + <div class="socials">
  133 + <a href="{{ $companies[0]->vkontact }}" target="_blank">
  134 + <svg>
  135 + <use xlink:href="{{ asset('images/sprite.svg#vk') }}"></use>
  136 + </svg>
  137 + </a>
  138 + <a href="{{ $companies[0]->telegram }}" target="_blank">
  139 + <svg>
  140 + <use xlink:href="{{ asset('images/sprite.svg#tg') }}"></use>
  141 + </svg>
  142 + </a>
  143 + </div>
  144 + <nav class="footer__mobile-links">
  145 + <a href="{{ route('private_policy') }}">Политика конфиденциальности</a>
  146 + <span></span>
  147 + <a href="{{ route('terms_of_use') }}">Пользовательское соглашение</a>
  148 + </nav>
  149 + &copy; 2023 &mdash; RekaMore.su
  150 + <a href="{{ route('index') }}" class="nls" target="_blank">
  151 + <svg>
  152 + <use xlink:href="{{ asset('images/sprite.svg#nls') }}"></use>
  153 + </svg>
  154 + <span>
  155 + Дизайн и разработка:
  156 + <b>NoLogoStudio.ru</b>
  157 + </span>
  158 + </a>
  159 + </div>
  160 + </div>
  161 + <div class="footer__main">
  162 + <div class="footer__main-body">
  163 + <a href="" class="footer__main-logo">
  164 + <svg>
  165 + <use xlink:href="{{ asset('images/sprite.svg#logo') }}"></use>
  166 + </svg>
  167 + </a>
  168 + <div class="footer__main-col">
  169 + <div class="footer__main-title">Соискателям</div>
  170 + <nav>
  171 + <a href="{{ route('vacancies') }}">Вакансии</a>
  172 + <a href="{{ route('if_public') }}">Условия размещения</a>
  173 + <a href="{{ route('education') }}">Образование</a>
  174 + <a href="{{ route('news') }}">Новости</a>
  175 + <a href="{{ route('contacts') }}">Контакты</a>
  176 + <a href="{{ route('public_offer') }}">Публичная оферта</a>
  177 + </nav>
  178 + </div>
  179 + <div class="footer__main-col">
  180 + <div class="footer__main-title">Работодателям</div>
  181 + <nav>
  182 + <a href="{{ route('register') }}">Регистрация</a>
  183 + <a href="{{ route('bd_resume') }}">База резюме</a>
  184 + <a href="{{ route('cost_public_employer') }}">Стоимость размещения</a>
  185 + <a href="{{ route('instruction') }}">Инструкции</a>
  186 + <a href="{{ route('effective_note') }}">Эффективность объявления</a>
  187 + <a href="{{ route('public_offer_emp') }}">Публичная оферта</a>
  188 + </nav>
  189 + </div>
  190 +
  191 + <div class="footer__main-col">
  192 + <div class="footer__main-title">Контакты</div>
  193 + <div class="footer__main-contacts">
  194 + <a href="tel:{{ $companies[0]->telephone }}">{{ $companies[0]->telephone }}</a>
  195 + <a href="mailto:{{ $companies[0]->email }}">{{ $companies[0]->email }}</a>
  196 + </div>
  197 + <div class="socials">
  198 + <a href="{{ $companies[0]->vkontact }}" target="_blank">
  199 + <svg>
  200 + <use xlink:href="{{ asset('images/sprite.svg#vk') }}"></use>
  201 + </svg>
  202 + </a>
  203 + <a href="{{ $companies[0]->telegram }}" target="_blank">
  204 + <svg>
  205 + <use xlink:href="{{ asset('images/sprite.svg#tg') }}"></use>
  206 + </svg>
  207 + </a>
  208 + </div>
  209 + </div>
  210 + </div>
  211 + <div class="footer__main-copy">
  212 + <div>&copy; 2023 &mdash; RekaMore.su</div>
  213 + <nav>
  214 + <a href="{{ route('private_policy') }}">Политика конфиденциальности</a>
  215 + <span></span>
  216 + <a href="{{ route('terms_of_use') }}">Пользовательское соглашение</a>
  217 + </nav>
  218 + <a href="{{ route('index') }}" class="nls" target="_blank">
  219 + <svg>
  220 + <use xlink:href="{{ asset('images/sprite.svg#nls') }}"></use>
  221 + </svg>
  222 + <span>
  223 + Дизайн и разработка:
  224 + <b>NoLogoStudio.ru</b>
  225 + </span>
  226 + </a>
  227 + </div>
  228 + </div>
  229 + </div>
  230 + </footer>
  231 +</div> <!-- END BOTTOM WRAPPER -->
  232 +
  233 +<div hidden> <!-- BEGIN MODALS WRAPPER -->
  234 + <div class="modal">
  235 + modal
  236 + </div>
  237 +</div> <!-- END MODALS WRAPPER -->
  238 +
  239 +<script src="{{ asset('js/jquery.js') }}"></script>
  240 +<script src="{{ asset('js/jquery.maskedinput.js') }}"></script>
  241 +<script src="{{ asset('js/jquery.fancybox.js') }}"></script>
  242 +<script src="{{ asset('js/jquery.select2.js') }}"></script>
  243 +<script src="{{ asset('js/swiper.js') }}"></script>
  244 +<script src="{{ asset('js/script.js') }}"></script>
  245 +<script>
  246 + var getUrlParameter = function getUrlParameter(sParam) {
  247 + var sPageURL = decodeURIComponent(window.location.search.substring(1)),
  248 + sURLVariables = sPageURL.split('&'),
  249 + sParameterName,
  250 + i;
  251 + for (i = 0; i < sURLVariables.length; i++) {
  252 + sParameterName = sURLVariables[i].split('=');
  253 + if (sParameterName[0] === sParam) {
  254 + return sParameterName[1] === undefined ? true : sParameterName[1];
  255 + }
  256 + }
  257 + };
  258 +</script>
  259 +@yield('scripts')
  260 +</body>
  261 +</html>
resources/views/layout/frontend.blade.php
... ... @@ -84,11 +84,11 @@
84 84 </button>
85 85 <div>
86 86 <a href="{{ route('vacancies') }}">Вакансии</a>
87   - <a href="{{ route('if_public') }}">Условия размещения</a>
  87 + <a href="{{ route('page', ['pages' => "Usloviya-razmescheniya"]) }}">Условия размещения</a>
88 88 <a href="{{ route('education') }}">Образование</a>
89 89 <a href="{{ route('news') }}">Новости</a>
90 90 <a href="{{ route('contacts') }}">Контакты</a>
91   - <a href="{{ route('public_offer') }}">Публичная оферта</a>
  91 + <a href="{{ route('page', ['pages' => "Publichnaya-oferta-soiskatelyam"]) }}">Публичная оферта</a>
92 92 </div>
93 93 </div>
94 94 <div class="footer__mobile-menu-item">
... ... @@ -101,10 +101,10 @@
101 101 <div>
102 102 <a href="{{ route('register') }}">Регистрация</a>
103 103 <a href="{{ route('bd_resume') }}">База резюме</a>
104   - <a href="{{ route('cost_public_employer') }}">Стоимость размещения</a>
105   - <a href="{{ route('instruction') }}">Инструкции</a>
106   - <a href="{{ route('effective_note') }}">Эффективность объявления</a>
107   - <a href="{{ route('public_offer_emp') }}">Публичная оферта</a>
  104 + <a href="{{ route('page', ['pages' => "Stoimost-razmescheniya"]) }}">Стоимость размещения</a>
  105 + <a href="{{ route('page', ['pages' => "Instrukcii"]) }}">Инструкции</a>
  106 + <a href="{{ route('page', ['pages' => "Effektivnost-obyavleniya"]) }}">Эффективность объявления</a>
  107 + <a href="{{ route('page', ['pages' => "Publichnaya-oferta-rabotodatelyam"]) }}">Публичная оферта</a>
108 108 </div>
109 109 </div>
110 110 </div>
... ... @@ -127,9 +127,9 @@
127 127 </a>
128 128 </div>
129 129 <nav class="footer__mobile-links">
130   - <a href="{{ route('private_policy') }}">Политика конфиденциальности</a>
  130 + <a href="{{ route('page', ['pages' => "Politika-konfidencialnosti"]) }}">Политика конфиденциальности</a>
131 131 <span></span>
132   - <a href="{{ route('terms_of_use') }}">Пользовательское соглашение</a>
  132 + <a href="{{ route('page', ['pages' => "Polzovatelskoe-soglashenie"]) }}">Пользовательское соглашение</a>
133 133 </nav>
134 134 &copy; 2023 &mdash; RekaMore.su
135 135 <a href="{{ route('index') }}" class="nls" target="_blank">
... ... @@ -154,11 +154,11 @@
154 154 <div class="footer__main-title">Соискателям</div>
155 155 <nav>
156 156 <a href="{{ route('vacancies') }}">Вакансии</a>
157   - <a href="{{ route('if_public') }}">Условия размещения</a>
  157 + <a href="{{ route('page', ['pages' => "Usloviya-razmescheniya"]) }}">Условия размещения</a>
158 158 <a href="{{ route('education') }}">Образование</a>
159 159 <a href="{{ route('news') }}">Новости</a>
160 160 <a href="{{ route('contacts') }}">Контакты</a>
161   - <a href="{{ route('public_offer') }}">Публичная оферта</a>
  161 + <a href="{{ route('page', ['pages' => "Publichnaya-oferta-soiskatelyam"]) }}">Публичная оферта</a>
162 162 </nav>
163 163 </div>
164 164 <div class="footer__main-col">
... ... @@ -166,10 +166,10 @@
166 166 <nav>
167 167 <a href="{{ route('register') }}">Регистрация</a>
168 168 <a href="{{ route('bd_resume') }}">База резюме</a>
169   - <a href="{{ route('cost_public_employer') }}">Стоимость размещения</a>
170   - <a href="{{ route('instruction') }}">Инструкции</a>
171   - <a href="{{ route('effective_note') }}">Эффективность объявления</a>
172   - <a href="{{ route('public_offer_emp') }}">Публичная оферта</a>
  169 + <a href="{{ route('page', ['pages' => "Stoimost-razmescheniya"]) }}">Стоимость размещения</a>
  170 + <a href="{{ route('page', ['pages' => "Instrukcii"]) }}">Инструкции</a>
  171 + <a href="{{ route('page', ['pages' => "Effektivnost-obyavleniya"]) }}">Эффективность объявления</a>
  172 + <a href="{{ route('page', ['pages' => "Publichnaya-oferta-rabotodatelyam"]) }}">Публичная оферта</a>
173 173 </nav>
174 174 </div>
175 175  
... ... @@ -196,9 +196,9 @@
196 196 <div class="footer__main-copy">
197 197 <div>&copy; 2023 &mdash; RekaMore.su</div>
198 198 <nav>
199   - <a href="{{ route('private_policy') }}">Политика конфиденциальности</a>
  199 + <a href="{{ route('page', ['pages' => "Politika-konfidencialnosti"]) }}">Политика конфиденциальности</a>
200 200 <span></span>
201   - <a href="{{ route('terms_of_use') }}">Пользовательское соглашение</a>
  201 + <a href="{{ route('page', ['pages' => "Polzovatelskoe-soglashenie"]) }}">Пользовательское соглашение</a>
202 202 </nav>
203 203 <a href="{{ route('index') }}" class="nls" target="_blank">
204 204 <svg>
... ... @@ -227,7 +227,20 @@
227 227 <script src="{{ asset('js/jquery.select2.js') }}"></script>
228 228 <script src="{{ asset('js/swiper.js') }}"></script>
229 229 <script src="{{ asset('js/script.js') }}"></script>
230   -
  230 +<script>
  231 + var getUrlParameter = function getUrlParameter(sParam) {
  232 + var sPageURL = decodeURIComponent(window.location.search.substring(1)),
  233 + sURLVariables = sPageURL.split('&'),
  234 + sParameterName,
  235 + i;
  236 + for (i = 0; i < sURLVariables.length; i++) {
  237 + sParameterName = sURLVariables[i].split('=');
  238 + if (sParameterName[0] === sParam) {
  239 + return sParameterName[1] === undefined ? true : sParameterName[1];
  240 + }
  241 + }
  242 + };
  243 +</script>
231 244 @yield('scripts')
232 245 </body>
233 246 </html>
resources/views/list_vacancies.blade.php
... ... @@ -3,18 +3,20 @@
3 3 @section('scripts')
4 4 <script>
5 5 console.log('Test system');
6   - $(document).on('change', '.jobs', function() {
  6 + $(document).on('change', '#jobs', function() {
7 7 var val = $(this).val();
  8 + var main_oskar = $('#main_ockar');
8 9  
  10 + console.log('Code='+val);
9 11 console.log('Click change...');
10 12 $.ajax({
11 13 type: "GET",
12   - url: "{{ route('vacancies') }}",
  14 + url: "{{ route('list-vacancies', ['categories' => $categories->id]) }}",
13 15 data: "job="+val,
14 16 success: function (data) {
15   - console.log('Выбор должности');
  17 + console.log('Выбор сделан!');
16 18 console.log(data);
17   - $('#block_ajax').html(data);
  19 + main_oskar.html(data);
18 20 },
19 21 headers: {
20 22 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
... ... @@ -27,7 +29,6 @@
27 29 });
28 30 </script>
29 31 @endsection
30   -
31 32 @section('content')
32 33 <section class="thing">
33 34 <div class="container">
... ... @@ -35,7 +36,7 @@
35 36 <ul class="breadcrumbs thing__breadcrumbs">
36 37 <li><a href="{{ route('index') }}">Главная</a></li>
37 38 <li><a href="{{ route('vacancies') }}">Вакансии</a></li>
38   - <li><b>{{ isset($Name_categori) ? $Name_categori : 'Все категории' }}</b></li>
  39 + <li><b>{{ isset($Name_categori[0]) ? $Name_categori[0]->name : 'Все категории' }}</b></li>
39 40 </ul>
40 41 <h1 class="thing__title">Вакансии</h1>
41 42 <p class="thing__text">С другой стороны, социально-экономическое развитие не оставляет шанса для
... ... @@ -43,7 +44,7 @@
43 44 <div class="select select_search thing__select">
44 45 <div class="select__icon">
45 46 <svg>
46   - <use xlink:href="images/sprite.svg#search"></use>
  47 + <use xlink:href="{{ asset('images/sprite.svg#search') }}"></use>
47 48 </svg>
48 49 </div>
49 50 <select class="js-select2" id="jobs" name="jobs">
... ... @@ -61,339 +62,103 @@
61 62 <main class="main">
62 63 <div class="container">
63 64 <div class="main__vacancies">
64   - <h2 class="main__vacancies-title">Категория вакансий ВТОРОЙ МЕХАНИК</h2>
  65 + @if (isset($job))
  66 + <h2 class="main__vacancies-title">Категория вакансий {{ $job }}</h2>
  67 + @else
  68 + <h2 class="main__vacancies-title">Все категории</h2>
  69 + @endif
65 70 <div class="filters main__vacancies-filters">
66   - <div class="filters__label">Показано 5 из 165 результатов поиска</div>
  71 + <div class="filters__label" id="col-vo" name="col-vo">Показано @if ($Query_count < 3) {{$Query_count}} @else 3 @endif из @isset($Query_count) {{ $Query_count }} @else 0 @endisset результатов поиска</div>
67 72 <div class="filters__body">
68 73 <div class="select filters__select">
69   - <select class="js-select2">
70   - <option>Сортировка (по умолчанию)</option>
71   - <option>Сортировка 1</option>
72   - <option>Сортировка 2</option>
73   - <option>Сортировка 3</option>
74   - <option>Сортировка 4</option>
75   - <option>Сортировка 5</option>
76   - <option>Сортировка 6</option>
  74 + <select class="js-select2" id="sort_ajax" name="sort_ajax">
  75 + <option value="default">Сортировка (по умолчанию)</option>
  76 + <option value="name (asc)">По имени (возрастание)</option>
  77 + <option value="name (desc)">По имени (убывание)</option>
  78 + <option value="created_at (asc)">По дате (возрастание)</option>
  79 + <option value="created_at (desc)">По дате (убывание)</option>
77 80 </select>
78 81 </div>
79 82 </div>
80 83 </div>
  84 + <div id="main_ockar" name="main_ockar" style="width:100%;">
  85 + @foreach ($Query as $Q)
81 86 <div class="main__vacancies-item main__employer-page-two-item">
82   - <a href="#" class="back main__employer-page-two-item-back">
  87 + <a href="{{ route('list-vacancies', ['categories' => $categories->id]) }}" class="back main__employer-page-two-item-back">
83 88 <svg>
84   - <use xlink:href="images/sprite.svg#back"></use>
  89 + <use xlink:href="{{ asset('images/sprite.svg#back') }}"></use>
85 90 </svg>
86 91 <span>
87 92 Вернуться к списку вакансий
88   - </span>
  93 + </span>
89 94 </a>
90 95 <div class="main__employer-page-two-item-toper">
91   - <img src="images/12.jpg" alt="">
92   - <span>Наяда</span>
  96 + @if (isset($Q->employer))
  97 + <img src="{{ asset(Storage::url($Q->employer->logo)) }}" alt="{{ $Q->employer->name }}">
  98 + @endif
  99 + <span>@if (!empty($Q->name)) {{ $Q->name }} @endif</span>
93 100 </div>
94 101 <div class="main__employer-page-two-item-text">
95 102 <div class="main__employer-page-two-item-text-name">Судоходная компания ведет набор
96 103 специалистов на следующие должности:</div>
97 104 <div class="main__employer-page-two-item-text-links">
98   - <a href="#">“Капитан” – з/п от 277 000 рублей (на руки)</a>
99   - <a href="#">“Старший помощник капитана” – з/п от 216 000 рублей (на руки)</a>
100   - <a href="#">“Второй помощник капитана”– з/п от 135 000 рублей (на руки)</a>
101   - </div>
  105 + @if (isset($Q->jobs))
  106 + @foreach ($Q->jobs as $key => $j)
  107 + <a>“{{ $j->name }}” – з/п от @if (isset($Q->jobs_code[$key]->min_salary)) {{ $Q->jobs_code[$key]->min_salary }} @endif - @if (isset($Q->jobs_code[$key]->max_salary)) {{ $Q->jobs_code[$key]->max_salary }} @endif рублей (на руки)</a>
  108 + @endforeach
  109 + @endif
  110 + </div>
102 111 </div>
103 112 <div class="main__employer-page-two-item-text">
104 113 <div class="main__employer-page-two-item-text-name">Мы предлагаем:</div>
105 114 <div class="main__employer-page-two-item-text-body">
106   - <ul>
107   - <li><span>трудоустройство по ТК РФ;</span></li>
108   - <li><span>достойный уровень оплаты труда (оклад + отпускные и премиальные + бонус в
109   - размере оклада (за первый месяц работы) + оплата дней обучения и прохождения
110   - мед. осмотра);</span></li>
111   - <li><span>оплату проезда до судна и с судна до дома;</span></li>
112   - <li><span>оплату проживания на время ожидания судна;</span></li>
113   - <li><span>обучение и продление документов за счет компании;</span></li>
114   - <li><span>компенсацию медицинской комиссии;</span></li>
115   - <li><span>обеспечение спецодеждой;</span></li>
116   - <li><span>коллективное питание;</span></li>
117   - <li><span>пакет социальных льгот и гарантий:– расширенный ДМС со стоматологией;–
118   - компенсация курортно-санаторного лечения;– компенсация путевок в детские
119   - оздоровительные лагеря для детей сотрудников;</span></li>
120   - <li><span>возможности профессионального развития с помощью корпоративных программ
121   - обучения;</span></li>
122   - <li><span>яркие корпоративные мероприятия и регулярные круглые столы с
123   - представителями руководства компании.</span></li>
124   - </ul>
  115 + {!! $Q->text !!}
125 116 </div>
126 117 </div>
127 118 <div class="main__employer-page-two-item-text">
128 119 <div class="main__employer-page-two-item-text-name">Наши ожидания:</div>
129 120 <div class="main__employer-page-two-item-text-body">
130   - <ul>
131   - <li><span>наличие действующих дипломов, соответствующих должности;</span></li>
132   - <li><span>опыт работы в должности;</span></li>
133   - <li><span>наличие речных документов (желательно);</span></li>
134   - <li><span>знание английского языка.</span></li>
135   - </ul>
  121 + {!! $Q->description !!}
136 122 </div>
137 123 </div>
138 124 <div class="main__employer-page-two-item-text">
139 125 <div class="main__employer-page-two-item-text-name">Резюме направляйте на почту:</div>
140 126 <div class="main__employer-page-two-item-text-body">
141   - <ul>
142   - <li><a href="#">hr@volgaflot.com</a></li>
143   - <li><a href="#">D.Kornilova@volgaflot.com</a></li>
144   - <li><a href="#">A.Ryabova@volgaflot.com</a></li>
145   - </ul>
  127 + {!! $Q->contacts_emails !!}
146 128 </div>
147 129 </div>
148 130 <div class="main__employer-page-two-item-text">
149 131 <div class="main__employer-page-two-item-text-name">Или звоните:</div>
150 132 <div class="main__employer-page-two-item-text-body">
151   - <ul>
152   - <li><a href="#">+7 (987) 548-38-31 Дарья</a></li>
153   - <li><a href="#">+7 (986) 742-23-04 Александра</a></li>
154   - </ul>
  133 + {!! $Q->contacts_telephones !!}
155 134 </div>
156 135 </div>
157 136 <div class="main__employer-page-two-item-tags">
158   - <span class="main__employer-page-two-item-tag">#второй_механик</span>
159   - <span class="main__employer-page-two-item-tag">#моторист</span>
  137 + @if (isset($Q->jobs))
  138 + @foreach ($Q->jobs as $key => $j)
  139 + <span class="main__employer-page-two-item-tag">#{{ $j->name }}</span>
  140 + @endforeach
  141 + @endif
160 142 </div>
161 143 <div class="main__employer-page-two-item-buttons">
162 144 <button type="button"
163 145 class="button main__employer-page-two-item-button">Откликнуться</button>
164   - <a href="#" class="button button_light main__employer-page-two-item-button">Подробнее</a>
  146 + <a href="{{ route('vacancie', ['vacancy' => $Q->id]) }}" class="button button_light main__employer-page-two-item-button">Подробнее</a>
165 147 </div>
166 148 <div class="main__employer-page-two-item-bottom">
167   - <div class="main__employer-page-two-item-bottom-date">07.09.23 - 15:39</div>
  149 + <div class="main__employer-page-two-item-bottom-date">{{ $Q->created_at }}</div>
168 150 <button type="button" class="like main__employer-page-two-item-bottom-like js-toggle">
169 151 <svg>
170   - <use xlink:href="images/sprite.svg#heart"></use>
  152 + <use xlink:href="{{ asset('images/sprite.svg#heart') }}"></use>
171 153 </svg>
172 154 </button>
173 155 </div>
174 156 </div>
175   - <div class="main__vacancies-thing">
176   - <img src="images/13.jpg" alt="" class="main__vacancies-thing-pic">
177   - <div class="main__vacancies-thing-body">
178   - <h2>ООО «Флот Эксперт»</h2>
179   - <p><b>Приветствуем Вас коллеги!</b></p>
180   - <p>Уведомления о новых вакансиях можно получать подписавшись на наш телеграм канал!
181   - <br>Ссылка: <a href="#">https://t.me/rekamore_su</a></p>
182   - <p>А еще это добавляет + 50 к карме, но это не точно)</p>
183   - <a href="#" class="button">Узнать больше</a>
  157 + @endforeach
  158 + <div style="margin-top: 20px">
  159 + {{ $Query->appends($_GET)->links('paginate') }}
184 160 </div>
185   - </div>
186   - <div class="main__vacancies-item main__employer-page-two-item">
187   - <a href="#" class="back main__employer-page-two-item-back">
188   - <svg>
189   - <use xlink:href="images/sprite.svg#back"></use>
190   - </svg>
191   - <span>
192   - Вернуться к списку вакансий
193   - </span>
194   - </a>
195   - <div class="main__employer-page-two-item-toper">
196   - <img src="images/12.jpg" alt="">
197   - <span>Наяда</span>
198   - </div>
199   - <div class="main__employer-page-two-item-text">
200   - <div class="main__employer-page-two-item-text-name">Судоходная компания ведет набор
201   - специалистов на следующие должности:</div>
202   - <div class="main__employer-page-two-item-text-links">
203   - <a href="#">“Капитан” – з/п от 277 000 рублей (на руки)</a>
204   - <a href="#">“Старший помощник капитана” – з/п от 216 000 рублей (на руки)</a>
205   - <a href="#">“Второй помощник капитана”– з/п от 135 000 рублей (на руки)</a>
206   - </div>
207   - </div>
208   - <div class="main__employer-page-two-item-text">
209   - <div class="main__employer-page-two-item-text-name">Мы предлагаем:</div>
210   - <div class="main__employer-page-two-item-text-body">
211   - <ul>
212   - <li><span>трудоустройство по ТК РФ;</span></li>
213   - <li><span>достойный уровень оплаты труда (оклад + отпускные и премиальные + бонус в
214   - размере оклада (за первый месяц работы) + оплата дней обучения и прохождения
215   - мед. осмотра);</span></li>
216   - <li><span>оплату проезда до судна и с судна до дома;</span></li>
217   - <li><span>оплату проживания на время ожидания судна;</span></li>
218   - <li><span>обучение и продление документов за счет компании;</span></li>
219   - <li><span>компенсацию медицинской комиссии;</span></li>
220   - <li><span>обеспечение спецодеждой;</span></li>
221   - <li><span>коллективное питание;</span></li>
222   - <li><span>пакет социальных льгот и гарантий:– расширенный ДМС со стоматологией;–
223   - компенсация курортно-санаторного лечения;– компенсация путевок в детские
224   - оздоровительные лагеря для детей сотрудников;</span></li>
225   - <li><span>возможности профессионального развития с помощью корпоративных программ
226   - обучения;</span></li>
227   - <li><span>яркие корпоративные мероприятия и регулярные круглые столы с
228   - представителями руководства компании.</span></li>
229   - </ul>
230   - </div>
231   - </div>
232   - <div class="main__employer-page-two-item-text">
233   - <div class="main__employer-page-two-item-text-name">Наши ожидания:</div>
234   - <div class="main__employer-page-two-item-text-body">
235   - <ul>
236   - <li><span>наличие действующих дипломов, соответствующих должности;</span></li>
237   - <li><span>опыт работы в должности;</span></li>
238   - <li><span>наличие речных документов (желательно);</span></li>
239   - <li><span>знание английского языка.</span></li>
240   - </ul>
241   - </div>
242   - </div>
243   - <div class="main__employer-page-two-item-text">
244   - <div class="main__employer-page-two-item-text-name">Резюме направляйте на почту:</div>
245   - <div class="main__employer-page-two-item-text-body">
246   - <ul>
247   - <li><a href="#">hr@volgaflot.com</a></li>
248   - <li><a href="#">D.Kornilova@volgaflot.com</a></li>
249   - <li><a href="#">A.Ryabova@volgaflot.com</a></li>
250   - </ul>
251   - </div>
252   - </div>
253   - <div class="main__employer-page-two-item-text">
254   - <div class="main__employer-page-two-item-text-name">Или звоните:</div>
255   - <div class="main__employer-page-two-item-text-body">
256   - <ul>
257   - <li><a href="#">+7 (987) 548-38-31 Дарья</a></li>
258   - <li><a href="#">+7 (986) 742-23-04 Александра</a></li>
259   - </ul>
260   - </div>
261   - </div>
262   - <div class="main__employer-page-two-item-tags">
263   - <span class="main__employer-page-two-item-tag">#второй_механик</span>
264   - <span class="main__employer-page-two-item-tag">#моторист</span>
265   - </div>
266   - <div class="main__employer-page-two-item-buttons">
267   - <button type="button"
268   - class="button main__employer-page-two-item-button">Откликнуться</button>
269   - <a href="#" class="button button_light main__employer-page-two-item-button">Подробнее</a>
270   - </div>
271   - <div class="main__employer-page-two-item-bottom">
272   - <div class="main__employer-page-two-item-bottom-date">07.09.23 - 15:39</div>
273   - <button type="button" class="like main__employer-page-two-item-bottom-like js-toggle">
274   - <svg>
275   - <use xlink:href="images/sprite.svg#heart"></use>
276   - </svg>
277   - </button>
278   - </div>
279   - </div>
280   - <div class="main__vacancies-item main__employer-page-two-item">
281   - <a href="#" class="back main__employer-page-two-item-back">
282   - <svg>
283   - <use xlink:href="images/sprite.svg#back"></use>
284   - </svg>
285   - <span>
286   - Вернуться к списку вакансий
287   - </span>
288   - </a>
289   - <div class="main__employer-page-two-item-toper">
290   - <img src="images/12.jpg" alt="">
291   - <span>Наяда</span>
292   - </div>
293   - <div class="main__employer-page-two-item-text">
294   - <div class="main__employer-page-two-item-text-name">Судоходная компания ведет набор
295   - специалистов на следующие должности:</div>
296   - <div class="main__employer-page-two-item-text-links">
297   - <a href="#">“Капитан” – з/п от 277 000 рублей (на руки)</a>
298   - <a href="#">“Старший помощник капитана” – з/п от 216 000 рублей (на руки)</a>
299   - <a href="#">“Второй помощник капитана”– з/п от 135 000 рублей (на руки)</a>
300   - </div>
301   - </div>
302   - <div class="main__employer-page-two-item-text">
303   - <div class="main__employer-page-two-item-text-name">Мы предлагаем:</div>
304   - <div class="main__employer-page-two-item-text-body">
305   - <ul>
306   - <li><span>трудоустройство по ТК РФ;</span></li>
307   - <li><span>достойный уровень оплаты труда (оклад + отпускные и премиальные + бонус в
308   - размере оклада (за первый месяц работы) + оплата дней обучения и прохождения
309   - мед. осмотра);</span></li>
310   - <li><span>оплату проезда до судна и с судна до дома;</span></li>
311   - <li><span>оплату проживания на время ожидания судна;</span></li>
312   - <li><span>обучение и продление документов за счет компании;</span></li>
313   - <li><span>компенсацию медицинской комиссии;</span></li>
314   - <li><span>обеспечение спецодеждой;</span></li>
315   - <li><span>коллективное питание;</span></li>
316   - <li><span>пакет социальных льгот и гарантий:– расширенный ДМС со стоматологией;–
317   - компенсация курортно-санаторного лечения;– компенсация путевок в детские
318   - оздоровительные лагеря для детей сотрудников;</span></li>
319   - <li><span>возможности профессионального развития с помощью корпоративных программ
320   - обучения;</span></li>
321   - <li><span>яркие корпоративные мероприятия и регулярные круглые столы с
322   - представителями руководства компании.</span></li>
323   - </ul>
324   - </div>
325   - </div>
326   - <div class="main__employer-page-two-item-text">
327   - <div class="main__employer-page-two-item-text-name">Наши ожидания:</div>
328   - <div class="main__employer-page-two-item-text-body">
329   - <ul>
330   - <li><span>наличие действующих дипломов, соответствующих должности;</span></li>
331   - <li><span>опыт работы в должности;</span></li>
332   - <li><span>наличие речных документов (желательно);</span></li>
333   - <li><span>знание английского языка.</span></li>
334   - </ul>
335   - </div>
336   - </div>
337   - <div class="main__employer-page-two-item-text">
338   - <div class="main__employer-page-two-item-text-name">Резюме направляйте на почту:</div>
339   - <div class="main__employer-page-two-item-text-body">
340   - <ul>
341   - <li><a href="#">hr@volgaflot.com</a></li>
342   - <li><a href="#">D.Kornilova@volgaflot.com</a></li>
343   - <li><a href="#">A.Ryabova@volgaflot.com</a></li>
344   - </ul>
345   - </div>
346   - </div>
347   - <div class="main__employer-page-two-item-text">
348   - <div class="main__employer-page-two-item-text-name">Или звоните:</div>
349   - <div class="main__employer-page-two-item-text-body">
350   - <ul>
351   - <li><a href="#">+7 (987) 548-38-31 Дарья</a></li>
352   - <li><a href="#">+7 (986) 742-23-04 Александра</a></li>
353   - </ul>
354   - </div>
355   - </div>
356   - <div class="main__employer-page-two-item-tags">
357   - <span class="main__employer-page-two-item-tag">#второй_механик</span>
358   - <span class="main__employer-page-two-item-tag">#моторист</span>
359   - </div>
360   - <div class="main__employer-page-two-item-buttons">
361   - <button type="button"
362   - class="button main__employer-page-two-item-button">Откликнуться</button>
363   - <a href="#" class="button button_light main__employer-page-two-item-button">Подробнее</a>
364   - </div>
365   - <div class="main__employer-page-two-item-bottom">
366   - <div class="main__employer-page-two-item-bottom-date">07.09.23 - 15:39</div>
367   - <button type="button" class="like main__employer-page-two-item-bottom-like js-toggle">
368   - <svg>
369   - <use xlink:href="images/sprite.svg#heart"></use>
370   - </svg>
371   - </button>
372   - </div>
373   - </div>
374   - <div class="pagination">
375   - <a href="#" class="pagination__nav pagination__nav_prev">
376   - <svg>
377   - <use xlink:href="images/sprite.svg#arrow-bold"></use>
378   - </svg>
379   - </a>
380   - <span class="pagination__item active">1</span>
381   - <a href="#" class="pagination__item">2</a>
382   - <a href="#" class="pagination__item">3</a>
383   - <a href="#" class="pagination__item">4</a>
384   - <a href="#" class="pagination__item">5</a>
385   - <span class="pagination__dots">
386   - <svg>
387   - <use xlink:href="images/sprite.svg#dots"></use>
388   - </svg>
389   - </span>
390   - <a href="#" class="pagination__item">25</a>
391   - <a href="#" class="pagination__nav pagination__nav_next">
392   - <svg>
393   - <use xlink:href="images/sprite.svg#arrow-bold"></use>
394   - </svg>
395   - </a>
396   - </div>
  161 + </div><!-- конец -->
397 162 </div>
398 163 </div>
399 164 </main>
resources/views/pages.blade.php
... ... @@ -0,0 +1,32 @@
  1 +@extends('layout.frontend', ['title' => $page->name.'- РекаМоре'])
  2 +
  3 +@section('scripts')
  4 +@endsection
  5 +
  6 +@section('content')
  7 + <section class="thing">
  8 + <div class="container">
  9 + <div class="thing__body">
  10 + <ul class="breadcrumbs thing__breadcrumbs">
  11 + <li><a href="{{ route('index') }}">Главная</a></li>
  12 + <li><b>{{ $page->name }}</b></li>
  13 + </ul>
  14 + @isset($page->image)
  15 + <img src=" {{ asset(Storage::url($page->image)) }}" alt="" class="thing__pic thing__pic_two">
  16 + @endif
  17 + <h1 class="thing__title">{{ $page->name }}</h1>
  18 + <p class="thing__text">{!! $page->anons !!}</p>
  19 + </div>
  20 + </div>
  21 + </section>
  22 + <main class="main">
  23 + <div class="container">
  24 + <div class="main__content">
  25 + <div class="main__content-item">
  26 + {!! $page->text !!}
  27 + </div>
  28 + </div>
  29 + </div>
  30 + </main>
  31 + </div>
  32 +@endsection
resources/views/paginate.blade.php
... ... @@ -0,0 +1,52 @@
  1 +@if ($paginator->hasPages())
  2 +<div class="pagination">
  3 + @if ($paginator->onFirstPage())
  4 +
  5 + @else
  6 + <a href="{{ $paginator->previousPageUrl() }}" class="pagination__nav pagination__nav_prev">
  7 + <svg>
  8 + <use xlink:href="{{ asset('images/sprite.svg#arrow-bold') }}"></use>
  9 + </svg>
  10 + </a>
  11 + @endif
  12 +
  13 + @foreach ($elements as $element)
  14 + @if (is_string($element))
  15 + <span>{{ $element }}</span>
  16 + @endif
  17 +
  18 + @if (is_array($element))
  19 + @php $count_element = count($element);
  20 + $i = 0;
  21 + @endphp
  22 + @foreach ($element as $page => $url)
  23 + @if ($page == $paginator->currentPage())
  24 + <span class="pagination__item active">{{ $page }}</span>
  25 + @else
  26 + @if (($i == $count_element - 1) && ($count_element > 5))
  27 + <span class="pagination__dots">
  28 + <svg>
  29 + <use xlink:href="{{ asset('images/sprite.svg#dots') }}"></use>
  30 + </svg>
  31 + </span>
  32 + @endif
  33 +
  34 + <a href="{{ $url }}" class="pagination__item">{{ $page }}</a>
  35 + @endif
  36 + @php $i++; @endphp
  37 + @endforeach
  38 + @endif
  39 + @endforeach
  40 +
  41 + @if ($paginator->hasMorePages())
  42 + <a href="{{ $paginator->nextPageUrl() }}" class="pagination__nav pagination__nav_next">
  43 + <svg>
  44 + <use xlink:href="{{ asset('images/sprite.svg#arrow-bold') }}"></use>
  45 + </svg>
  46 + </a>
  47 + @else
  48 +
  49 + @endif
  50 +</div>
  51 +@endif
  52 +
resources/views/vacance-item.blade.php
... ... @@ -0,0 +1,131 @@
  1 +@extends('layout.frontend', ['title' => $title])
  2 +
  3 +@section('scripts')
  4 +
  5 +@endsection
  6 +
  7 +@section('content')
  8 + <main class="main">
  9 + <div class="container">
  10 + <ul class="breadcrumbs main__breadcrumbs">
  11 + <li><a href="{{ route('index') }}">Главная</a></li>
  12 + <li><a href="{{ route('vacancies') }}">Вакансии</a></li>
  13 + <li><b>{{ $title }}</b></li>
  14 + </ul>
  15 + <div class="main__employer-page">
  16 +
  17 + @if (isset($Query[0]->employer))
  18 + <h2 class="main__employer-page-title">О компании</h2>
  19 + <div class="main__employer-page-two-item-toper">
  20 + <img src="{{ asset(Storage::url($Query[0]->employer->logo)) }}" alt="{{ $Query[0]->employer->name }}">
  21 + <span>{{ $Query[0]->employer->name_company }}</span>
  22 + </div>
  23 +
  24 + <div class="main__employer-page-info">
  25 + <div class="main__employer-page-item">
  26 + <b> Адрес компании</b>
  27 + <span>
  28 + {{ $Query[0]->employer->address }}
  29 + </span>
  30 + </div>
  31 + <div class="main__employer-page-item">
  32 + <b>Сайт</b>
  33 + <span>
  34 + <a href="{{ $Query[0]->employer->site }}">{{ $Query[0]->employer->site }}</a>
  35 + </span>
  36 + </div>
  37 + <div class="main__employer-page-item">
  38 + <b>Почта</b>
  39 + <span>
  40 + <a href="{{ $Query[0]->employer->email }}">{{ $Query[0]->employer->email }}</a>
  41 + </span>
  42 + </div>
  43 + <div class="main__employer-page-item">
  44 + <b>Телефон</b>
  45 + <span>
  46 + <a href="tel:{{ $Query[0]->employer->telephone }}">{{ $Query[0]->employer->telephone }}</a>
  47 + </span>
  48 + </div>
  49 + </div>
  50 + @else
  51 + <div class="main__employer-page-info">
  52 + <div class="main__employer-page-item">
  53 + <b>Ничего не найдено</b>
  54 + <span>
  55 + Нет данных о компании
  56 + </span>
  57 + </div>
  58 + </div>
  59 + @endif
  60 + <h2 class="main__employer-page-title">Описание вакансии</h2>
  61 + </div>
  62 +
  63 + @foreach ($Query as $Q)
  64 + <div class="main__vacancies-item-page main__employer-page-two-item">
  65 + <div class="main__employer-page-two-item-text">
  66 + <div class="main__employer-page-two-item-text-name">Судоходная компания ведет набор
  67 + специалистов на следующие должности:</div>
  68 + <div class="main__employer-page-two-item-text-links">
  69 + @if (isset($Q->jobs))
  70 + @foreach ($Q->jobs as $key => $j)
  71 + <a>“{{ $j->name }}” – з/п от @if (isset($Q->jobs_code[$key]->min_salary)) {{ $Q->jobs_code[$key]->min_salary }} @endif - @if (isset($Q->jobs_code[$key]->max_salary)) {{ $Q->jobs_code[$key]->max_salary }} @endif рублей (на руки)</a>
  72 + @endforeach
  73 + @endif
  74 + </div>
  75 + </div>
  76 + <div class="main__employer-page-two-item-text">
  77 + <div class="main__employer-page-two-item-text-name">Мы предлагаем:</div>
  78 + <div class="main__employer-page-two-item-text-body">
  79 + {!! $Q->text !!}
  80 + </div>
  81 + </div>
  82 + <div class="main__employer-page-two-item-text">
  83 + <div class="main__employer-page-two-item-text-name">Наши ожидания:</div>
  84 + <div class="main__employer-page-two-item-text-body">
  85 + {!! $Q->description !!}
  86 + </div>
  87 + </div>
  88 + <div class="main__employer-page-two-item-text">
  89 + <div class="main__employer-page-two-item-text-name">Резюме направляйте на почту:</div>
  90 + <div class="main__employer-page-two-item-text-body">
  91 + {!! $Q->contacts_emails !!}
  92 + </div>
  93 + <div class="main__employer-page-two-item-text">
  94 + <div class="main__employer-page-two-item-text-name">Или звоните:</div>
  95 + <div class="main__employer-page-two-item-text-body">
  96 + {!! $Q->contacts_telephones !!}
  97 + </div>
  98 + </div>
  99 + <div class="main__employer-page-two-item-tags">
  100 + @if (isset($Q->jobs))
  101 + @foreach ($Q->jobs as $key => $j)
  102 + <span class="main__employer-page-two-item-tag">#{{ $j->name }}</span>
  103 + @endforeach
  104 + @endif
  105 + </div>
  106 + <div class="main__employer-page-two-item-buttons">
  107 + <button type="button" class="button main__employer-page-two-item-button">Откликнуться</button>
  108 + </div>
  109 + <div class="main__employer-page-two-item-bottom">
  110 + <div class="main__employer-page-two-item-bottom-date">{{ $Q->created_at }}</div>
  111 + <button type="button" class="like main__employer-page-two-item-bottom-like js-toggle">
  112 + <svg>
  113 + <use xlink:href="{{ asset('images/sprite.svg#heart') }}"></use>
  114 + </svg>
  115 + </button>
  116 + </div>
  117 + </div>
  118 +
  119 + @endforeach
  120 +
  121 + </div> <a href="{{ redirect()->back()->getTargetUrl() }}" class="back">
  122 + <svg>
  123 + <use xlink:href="{{ asset('images/sprite.svg#back') }}"></use>
  124 + </svg>
  125 + <span>
  126 + Вернуться к списку вакансий
  127 + </span>
  128 + </a>
  129 + </main>
  130 + </div>
  131 +@endsection
resources/views/vacancies.blade.php
... ... @@ -72,7 +72,7 @@
72 72 @endphp
73 73 @if ($categories->count())
74 74 @foreach ($categories as $cat)
75   - <a href="{{ route('') }}" class="vacancies__item">
  75 + <a href="{{ route('list-vacancies', ['categories' => $cat->id]) }}" class="vacancies__item">
76 76 <span style="border-color:{{$colors[$i]}}">
77 77 <b>{{ $cat->name }}</b>
78 78 <u>{{ $cat->min_salary }} &mdash; {{ $cat->max_salary }} ₽</u>
... ... @@ -6,6 +6,7 @@ use App\Http\Controllers\Admin\CategoryController;
6 6 use App\Http\Controllers\Admin\CategoryEmpController;
7 7 use App\Http\Controllers\Admin\EducationController;
8 8 use App\Http\Controllers\Admin\EmployersController;
  9 +use App\Http\Controllers\EmployerController as FrontEmployersController;
9 10 use App\Http\Controllers\Admin\InfoBloksController;
10 11 use App\Http\Controllers\Admin\JobTitlesController;
11 12 use App\Http\Controllers\Admin\UsersController;
... ... @@ -27,6 +28,7 @@ use App\Http\Controllers\Admin\GroupsController;
27 28 use App\Http\Controllers\PagesController;
28 29 use Illuminate\Support\Facades\Storage;
29 30 use App\Http\Controllers\EmployerController;
  31 +use App\Http\Controllers\CompanyController as FrontCompanyController;
30 32  
31 33  
32 34 /*
... ... @@ -194,6 +196,12 @@ Route::group([
194 196  
195 197 Route::get('employers/comment/{employer}', [EmployersController::class, 'comment_read'])->name('comment-employer');
196 198  
  199 + Route::get('flot/add/{employer}', [EmployersController::class, 'add_flot'])->name('flot_add');
  200 + Route::post('flot/add', [EmployersController::class, 'save_add_flot'])->name('flot_add_save');
  201 + Route::get('flot/{flot}/{employer}', [EmployersController::class, 'edit_flot'])->name('flot');
  202 + Route::put('flot/{flot}', [EmployersController::class, 'edit_save_flot'])->name('flot_edit');
  203 + Route::get('flot/{flot}/{employer_id}/delete', [EmployersController::class, 'delete_flot'])->name('flot_delete');
  204 +
197 205 // кабинет - соискатели
198 206 Route::get('workers', [WorkersController::class, 'index'])->name('workers');
199 207  
... ... @@ -214,6 +222,11 @@ Route::group([
214 222 Route::post('ad-employers/edit/{ad_employer}', [Ad_EmployersController::class, 'update'])->name('update-ad-employers');
215 223 Route::delete('ad-employers/delete/{ad_employer}', [Ad_EmployersController::class, 'destroy'])->name('delete-ad-employer');
216 224  
  225 + // Редактирование должности в вакансии
  226 + Route::put('update-jobs/{ad_jobs}', [Ad_EmployersController::class, 'update_ad_jobs'])->name('update_jobs');
  227 + Route::get('edit-jobs/{ad_jobs}', [Ad_EmployersController::class, 'edit_jobs'])->name('edit_jobs');
  228 +
  229 +
217 230 // кабинет - категории
218 231 //Route::get('categories', [AdminController::class, 'index'])->name('categories');
219 232 /*
... ... @@ -385,43 +398,25 @@ Route::get(&#39;employer/ad/{ad_employer}&#39;, [AdEmployerController::class, &#39;ad_employ
385 398 Route::get('vacancies', [MainController::class, 'vacancies'])->name('vacancies');
386 399  
387 400 //Вакансии категория детальная
388   -Route::get('list-vacancies/{categories}/{job_titles?}', [MainController::class, 'list_vacancies'])->name('list-vacancies');
  401 +Route::get('list-vacancies/{categories}', [MainController::class, 'list_vacancies'])->name('list-vacancies');
  402 +
  403 +//Детальная страница вакансии - работодателя
  404 +Route::get('vacancie/{vacancy}', [FrontEmployersController::class, 'vacancie'])->name('vacancie');
389 405  
390 406 //Судоходные компании
391   -Route::get('shipping-companies', [MainController::class, 'shipping_companies'])->name('shipping_companies');
  407 +Route::get('shipping-companies', [FrontCompanyController::class, 'shipping_companies'])->name('shipping_companies');
  408 +
  409 +//Детальная инфа о компании
  410 +Route::get('info-company/{company}', [FrontCompanyController::class, 'info_company'])->name('info_company');
392 411  
393 412 //Образование
394 413 Route::get('education', [MainController::class, 'education'])->name('education');
395 414  
396   -//Условия размещения для соискателей
397   -Route::get('if-public', [MainController::class, 'if_public'])->name('if_public');
398   -
399 415 //Новости
400 416 Route::get('news', [MainController::class, 'news'])->name('news');
401 417  
402 418 //Контакты
403 419 Route::get('contacts', [MainController::class, 'contacts'])->name('contacts');
404 420  
405   -//Публичная оферта
406   -Route::get('public-offer', [WorkerController::class, 'public_offer'])->name('public_offer');
407   -
408 421 //База резюме
409 422 Route::get('bd-resume', [MainController::class, 'bd_resume'])->name('bd_resume');
410   -
411   -//Стоимость размещения для работодателей
412   -Route::get('cost-public-employer', [EmployerController::class, 'cost_public_employer'])->name('cost_public_employer');
413   -
414   -//Политика конфиденциальности
415   -Route::get('privacy-policy', [PagesController::class, 'private_policy'])->name('private_policy');
416   -
417   -//Пользовательское соглашение
418   -Route::get('terms-of-use', [PagesController::class, 'terms_of_use'])->name('terms_of_use');
419   -
420   -//Инструкции
421   -Route::get('instruction', [EmployersController::class, 'instruction'])->name('instruction');
422   -
423   -//Эффективность объявления
424   -Route::get('effective-note', [EmployersController::class, 'effective_note'])->name('effective_note');
425   -
426   -//Публичная оферта
427   -Route::get('public-offer-emp', [EmployersController::class, 'public_offer_emp'])->name('public_offer_emp');