Commit a13ce86708e3f545245c9eca56f27dee628c7588

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

Обновление проекта рекаморе 22 февраля

Showing 19 changed files with 1521 additions and 34 deletions Inline Diff

app/Http/Controllers/EmployerController.php
1 <?php 1 <?php
2 2
3 namespace App\Http\Controllers; 3 namespace App\Http\Controllers;
4 4
5 use App\Models\Ad_employer; 5 use App\Models\Ad_employer;
6 use App\Models\Category; 6 use App\Models\Category;
7 use Illuminate\Http\Request; 7 use Illuminate\Http\Request;
8 use Illuminate\Support\Facades\Auth;
8 9
9 class EmployerController extends Controller 10 class EmployerController extends Controller
10 { 11 {
11 public function vacancie($vacancy, Request $request) { 12 public function vacancie($vacancy, Request $request) {
12 $title = 'Заголовок вакансии'; 13 $title = 'Заголовок вакансии';
13 14
14 $Query = Ad_employer::with('jobs')-> 15 $Query = Ad_employer::with('jobs')->
15 with('cat')-> 16 with('cat')->
16 with('employer')-> 17 with('employer')->
17 with('jobs_code')-> 18 with('jobs_code')->
18 select('ad_employers.*')-> 19 select('ad_employers.*')->
19 where('id', '=', $vacancy)->get(); 20 where('id', '=', $vacancy)->get();
20 21
21 $title = $Query[0]->name; 22 $title = $Query[0]->name;
22 if ($request->ajax()) { 23 if ($request->ajax()) {
23 return view('ajax.vacance-item', compact('Query')); 24 return view('ajax.vacance-item', compact('Query'));
24 } else { 25 } else {
25 return view('vacance-item', compact('title', 'Query')); 26 return view('vacance-item', compact('title', 'Query'));
26 } 27 }
27 } 28 }
29
30 public function logout() {
31 Auth::logout();
32 return redirect()->route('index')
33 ->with('success', 'Вы вышли из личного кабинета');
34 }
28 } 35 }
29 36
app/Http/Controllers/MainController.php
1 <?php 1 <?php
2 2
3 namespace App\Http\Controllers; 3 namespace App\Http\Controllers;
4 4
5 use App\Models\Ad_employer; 5 use App\Models\Ad_employer;
6 use App\Models\Category; 6 use App\Models\Category;
7 use App\Models\Education; 7 use App\Models\Education;
8 use App\Models\Employer; 8 use App\Models\Employer;
9 use App\Models\Job_title; 9 use App\Models\Job_title;
10 use App\Models\News; 10 use App\Models\News;
11 use App\Models\reclame; 11 use App\Models\reclame;
12 use Illuminate\Http\Request; 12 use Illuminate\Http\Request;
13 use Illuminate\Support\Facades\Auth;
14 use Illuminate\Support\Facades\Validator;
13 15
14 class MainController extends Controller 16 class MainController extends Controller
15 { 17 {
16 // Главная страница публичной части 18 // Главная страница публичной части
17 public function index() { 19 public function index() {
18 $news = News::query()->orderBy('id')->limit(6)->get(); 20 $news = News::query()->orderBy('id')->limit(6)->get();
19 21
20 $categories = Category::query()->selectRaw('count(ad_employers.id) as cnt, categories.*') 22 $categories = Category::query()->selectRaw('count(ad_employers.id) as cnt, categories.*')
21 ->join('ad_employers', 'ad_employers.category_id', '=', 'categories.id') 23 ->join('ad_employers', 'ad_employers.category_id', '=', 'categories.id')
22 ->OrderByDesc('created_at') 24 ->OrderByDesc('created_at')
23 ->GroupBy('categories.id') 25 ->GroupBy('categories.id')
24 ->get(); 26 ->get();
25 27
26 $employers = Employer::query()->orderBy('id')->limit(20)->get(); 28 $employers = Employer::query()->orderBy('id')->limit(20)->get();
27 29
28 return view('index', compact('news', 'categories', 'employers')); 30 return view('index', compact('news', 'categories', 'employers'));
29 } 31 }
30 32
33 public function search_vacancies(Request $request) {
34 if ($request->has('search')) {
35 $search = $request->get('search');
36 $job_titles = Job_title::query()->where('name', 'LIKE', "%$search%")->first();
37 if (isset($job_titles->id))
38 if ($job_titles->id > 0)
39 return redirect()->route('vacancies', ['job' => $job_titles->id]);
40 }
41 }
42
31 public function vacancies(Request $request) { 43 public function vacancies(Request $request) {
32 //должности 44 //должности
33 $Job_title = Job_title::query()->orderBy('name')->get(); 45 $Job_title = Job_title::query()->orderBy('name')->get();
34 46
35 $categories = Category::query()->selectRaw('count(ad_employers.id) as cnt, categories.*') 47 $categories = Category::query()->selectRaw('count(ad_employers.id) as cnt, categories.*')
36 ->selectRaw('min(ad_employers.salary) as min_salary, max(ad_employers.salary) as max_salary') 48 ->selectRaw('min(ad_employers.salary) as min_salary, max(ad_employers.salary) as max_salary')
37 ->join('ad_employers', 'ad_employers.category_id', '=', 'categories.id') 49 ->join('ad_employers', 'ad_employers.category_id', '=', 'categories.id')
38 ->join('ad_jobs', 'ad_jobs.ad_employer_id', '=', 'ad_employers.id'); 50 ->join('ad_jobs', 'ad_jobs.ad_employer_id', '=', 'ad_employers.id');
39 51
40 //категории и вакансии 52 //категории и вакансии
41 if ($request->ajax()) { 53 if (($request->has('job')) && ($request->get('job') > 0)) {
42 $categories = $categories->Where('job_title_id', '=', $request->get('job')) 54 $categories = $categories->Where('job_title_id', '=', $request->get('job'))
43 ->OrderByDesc('created_at') 55 ->OrderByDesc('created_at')
44 ->GroupBy('categories.id') 56 ->GroupBy('categories.id')
45 ->get(); 57 ->get();
46 } else { 58 } else {
47 $categories = $categories->OrderByDesc('created_at') 59 $categories = $categories->OrderByDesc('created_at')
48 ->GroupBy('categories.id') 60 ->GroupBy('categories.id')
49 ->get(); 61 ->get();
50 } 62 }
51 63
52 if ($request->ajax()) { 64 if ($request->ajax()) {
53 return view('ajax.vacancies', compact('categories')); 65 return view('ajax.vacancies', compact('categories'));
54 } else { 66 } else {
55 return view('vacancies', compact('Job_title', 'categories')); 67 return view('vacancies', compact('Job_title', 'categories'));
56 } 68 }
57 } 69 }
58 70
59 //Вакансии категория детальная 71 //Вакансии категория детальная
60 public function list_vacancies(Category $categories, Request $request) { 72 public function list_vacancies(Category $categories, Request $request) {
61 73
62 $Query = Ad_employer::with('jobs')-> 74 $Query = Ad_employer::with('jobs')->
63 with('cat')-> 75 with('cat')->
64 with('employer')-> 76 with('employer')->
65 whereHas('jobs_code', function ($query) use ($request) { 77 whereHas('jobs_code', function ($query) use ($request) {
66 if ($request->ajax()) { 78 if ($request->ajax()) {
67 if (null !== ($request->get('job'))) { 79 if (null !== ($request->get('job'))) {
68 $query->where('job_title_id', $request->get('job')); 80 $query->where('job_title_id', $request->get('job'));
69 } 81 }
70 } 82 }
71 }) 83 })
72 ->select('ad_employers.*'); 84 ->select('ad_employers.*');
73 85
74 if ($categories->id > 0) { 86 if ($categories->id > 0) {
75 $Query = $Query->where('category_id', '=', $categories->id); 87 $Query = $Query->where('category_id', '=', $categories->id);
76 $Name_categori = Category::query()->where('id', '=', $categories->id)->get(); 88 $Name_categori = Category::query()->where('id', '=', $categories->id)->get();
77 } 89 }
78 90
79 $Job_title = Job_title::query()->OrderBy('name')->get(); 91 $Job_title = Job_title::query()->OrderBy('name')->get();
80 92
81 $Query_count = $Query->count(); 93 $Query_count = $Query->count();
82 94
83 $Query = $Query->OrderBy('updated_at')->paginate(3); 95 $Query = $Query->OrderBy('updated_at')->paginate(3);
84 96
85 $Reclama = reclame::query()->limit(3)->get(); 97 $Reclama = reclame::query()->limit(3)->get();
86 98
87 99
88 100
89 if ($request->ajax()) { 101 if ($request->ajax()) {
90 return view('ajax.list_vacancies', compact('Query', 'Query_count', 'Name_categori', 'Reclama', 'categories')); 102 return view('ajax.list_vacancies', compact('Query', 'Query_count', 'Name_categori', 'Reclama', 'categories'));
91 } else { 103 } else {
92 //Вернуть все 104 //Вернуть все
93 return view('list_vacancies', compact('Query', 105 return view('list_vacancies', compact('Query',
94 'Query_count', 106 'Query_count',
95 'Reclama', 107 'Reclama',
96 'Name_categori', 108 'Name_categori',
97 'categories', 109 'categories',
98 'Job_title')); 110 'Job_title'));
99 } 111 }
100 } 112 }
101 113
102 // Образование 114 // Образование
103 public function education(Request $request) { 115 public function education(Request $request) {
104 $educations = Education::query(); 116 $educations = Education::query();
105 if ($request->has('search')) { 117 if ($request->has('search')) {
106 $search = trim($request->has('search')); 118 $search = trim($request->has('search'));
107 $educations = $educations->where('name', 'LIKE', "%$search%"); 119 $educations = $educations->where('name', 'LIKE', "%$search%");
108 } 120 }
109 $count_edu = $educations->count(); 121 $count_edu = $educations->count();
110 $educations = $educations->paginate(6); 122 $educations = $educations->paginate(6);
111 return view('education', compact('educations', 'count_edu')); 123 return view('education', compact('educations', 'count_edu'));
112 } 124 }
113 125
114 // Контакты 126 // Контакты
115 public function contacts() { 127 public function contacts() {
116 return view('contacts'); 128 return view('contacts');
117 } 129 }
130
131 // Вход в личный кабинет
132 public function input_login(Request $request)
133 {
134 $rules = [
135 'email' => 'required|string|email',
136 'password' => 'required|string',
137 ];
138
139 $messages = [
140 'required' => 'Укажите обязательное поле «:attribute»',
141 'email' => 'Введите корректный email',
142 'min' => [
143 'string' => 'Поле «:attribute» должно быть не меньше :min символов',
144 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт'
145 ],
146 'max' => [
147 'string' => 'Поле «:attribute» должно быть не больше :max символов',
148 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт'
149 ],
150 ];
151
152 $validator = Validator::make($request->all(), $rules, $messages);
153
154 if ($validator->fails()) {
155 return Array("ERROR" => "Емайл невалидный");//$validator; //back()->withErrors($validator)->withInput();
156 } else {
157 $credentials = $request->only('email', 'password');
158
159 if (Auth::attempt($credentials, $request->has('remember'))) {
160
161 if (is_null(Auth::user()->email_verified_at)) {
162 Auth::logout();
163 return Array("ERROR" => "Адрес почты не подтвержден");
164
165 }
166
167 if (Auth::user()->is_worker) {
168 return Array("REDIRECT" => redirect()->route('worker.cabinet')->getTargetUrl());
169 } else {
170 return Array("REDIRECT" => redirect()->route('employer.cabinet')->getTargetUrl());
171 }
172
173 return Array("SUCCESS" => "Вы успешно вошли в личный кабинет");
174 //->route('index')
175 //->with('success', 'Вы вошли в личный кабинет.');
176 } else {
177 return Array("ERROR" => "Неверный логин или пароль!");
178 }
179 }
180 }
118 } 181 }
119 182
app/Http/Controllers/WorkerController.php
1 <?php 1 <?php
2 2
3 namespace App\Http\Controllers; 3 namespace App\Http\Controllers;
4 4
5 use App\Models\Static_worker; 5 use App\Models\Static_worker;
6 use App\Models\Worker; 6 use App\Models\Worker;
7 use Illuminate\Http\Request; 7 use Illuminate\Http\Request;
8 8
9 class WorkerController extends Controller 9 class WorkerController extends Controller
10 { 10 {
11 //главная 11 public $status_work = Array(0 => 'Ищу работу', 1=> 'Не указано', 2=>'Не ищу работу');
12 public function index() {
13 return;
14 }
15
16 //профиль 12 //профиль
17 public function profile(Worker $worker) { 13 public function profile(Worker $worker) {
18 $get_date = date('Y.m'); 14 $get_date = date('Y.m');
19 15
20 $c = Static_worker::query()->where('year_month', '=', $get_date) 16 $c = Static_worker::query()->where('year_month', '=', $get_date)
21 ->where('user_id', '=', $worker->users->id) 17 ->where('user_id', '=', $worker->users->id)
22 ->get(); 18 ->get();
23 19
24 if ($c->count() > 0) { 20 if ($c->count() > 0) {
25 $upd = Static_worker::find($c[0]->id); 21 $upd = Static_worker::find($c[0]->id);
26 $upd->lookin = $upd->lookin + 1; 22 $upd->lookin = $upd->lookin + 1;
27 $upd->save(); 23 $upd->save();
28 } else { 24 } else {
29 $crt = new Static_worker(); 25 $crt = new Static_worker();
30 $crt->lookin = 1; 26 $crt->lookin = 1;
31 $crt->year_month = $get_date; 27 $crt->year_month = $get_date;
32 $crt->user_id = $worker->user_id; 28 $crt->user_id = $worker->user_id;
33 $crt->save(); 29 $crt->save();
34 } 30 }
35 31
36 $stat = Static_worker::query()->where('year_month', '=', $get_date) 32 $stat = Static_worker::query()->where('year_month', '=', $get_date)
37 ->where('user_id', '=', $worker->users->id) 33 ->where('user_id', '=', $worker->users->id)
38 ->get(); 34 ->get();
39 35
40 return view('public.workers.profile', compact('worker', 'stat')); 36 return view('public.workers.profile', compact('worker', 'stat'));
41 } 37 }
42 38
43 //публичная оферта 39 // лист база резюме
44 public function public_offer() { 40 public function bd_resume() {
45 return; 41 $status_work = $this->status_work;
42 $resumes = Worker::query()->with('users')->with('job_titles');
43
44 $res_count = $resumes->count();
45 $resumes = $resumes->paginate(5);
46
47 return view('resume', compact('resumes', 'status_work', 'res_count'));
48 }
49
50 // анкета соискателя
51 public function resume_profile(Worker $worker) {
52 $status_work = $this->status_work;
53 $Query = Worker::query()->with('users')->with('job_titles')
54 ->with('place_worker')->with('sertificate')->with('prev_company')
55 ->with('infobloks');
56 $Query = $Query->where('id', '=', $worker->id);
57 $Query = $Query->get();
58 return view('worker', compact('Query', 'status_work'));
59 }
60
61 // скачать анкету соискателя
62 public function resume_download(Worker $worker) {
app/Models/PrevCompany.php
File was created 1 <?php
2
3 namespace App\Models;
4
5 use Illuminate\Database\Eloquent\Factories\HasFactory;
6 use Illuminate\Database\Eloquent\Model;
7
8 class PrevCompany extends Model
9 {
10 use HasFactory;
11
12 protected $table = 'prev_company';
13 }
14
app/Models/Worker.php
1 <?php 1 <?php
2 2
3 namespace App\Models; 3 namespace App\Models;
4 4
5 use Illuminate\Database\Eloquent\Factories\HasFactory; 5 use Illuminate\Database\Eloquent\Factories\HasFactory;
6 use Illuminate\Database\Eloquent\Model; 6 use Illuminate\Database\Eloquent\Model;
7 7
8 class Worker extends Model 8 class Worker extends Model
9 { 9 {
10 use HasFactory; 10 use HasFactory;
11 11
12 protected $table = 'Workers'; 12 protected $table = 'Workers';
13 13
14 protected $fillable = [ 14 protected $fillable = [
15 'user_id', 15 'user_id',
16 'status_work', 16 'status_work',
17 'position_work', 17 'position_work',
18 'telephone', 18 'telephone',
19 'telephone2', 19 'telephone2',
20 'persent_anketa', 20 'persent_anketa',
21 'photo', 21 'photo',
22 'email_data', 22 'email_data',
23 'status_profile', 23 'status_profile',
24 'old_year', 24 'old_year',
25 'experience', 25 'experience',
26 'en_is', 26 'en_is',
27 'education', 27 'education',
28 'email', 28 'email',
29 'interpassport', 29 'interpassport',
30 'mk', 30 'mk',
31 'vvp', 31 'vvp',
32 'vlm', 32 'vlm',
33 'reka_diplom', 33 'reka_diplom',
34 'more_diplom', 34 'more_diplom',
35 'mpss', 35 'mpss',
36 'tanker', 36 'tanker',
37 'gmssb', 37 'gmssb',
38 'resume', 38 'resume',
39 'sort', 39 'sort',
40 'updated_at', 40 'updated_at',
41 'text', 41 'text',
42 'address', 42 'address',
43 'city', 43 'city',
44 'coord', 44 'coord',
45 'file', 45 'file',
46 'is_remove', 46 'is_remove',
47 'favorite_user', 47 'favorite_user',
48 'sroch_user' 48 'sroch_user'
49 ]; 49 ];
50 50
51 /* 51 /*
52 * Связь таблицы users с таблицей workers 52 * Связь таблицы users с таблицей workers
53 */ 53 */
54 public function users() { 54 public function users() {
55 return $this->belongsTo(User::class, 'user_id'); 55 return $this->belongsTo(User::class, 'user_id');
56 } 56 }
57 57
58 // Связь Работника с сертификами (0-0 - 1)
59 public function sertificate() {
60 return $this->hasMany(sertification::class);
61 }
62
63 // Связь Работника с должностями (0-0 - 1)
64 public function job_titles() {
65 return $this->hasMany(Job_title::class, 'id');
66 }
67
68 //Связь Работника с опытом работы (1 - 0-0)
69 public function place_worker() {
70 return $this->hasMany(place_works::class);
71 }
72
58 public function scopeActive($query) { 73 public function scopeActive($query) {
59 return $query->where('is_remove', '=', '0'); 74 return $query->where('is_remove', '=', '0');
60 } 75 }
76
77 //Связь Работника с предыдущими компаниями
78 public function prev_company() {
79 return $this->hasMany(PrevCompany::class);
80 }
81
82 //Связь Работника с инфоблоками (0-0 - 0-0)
83 public function infobloks() {
84 return $this->belongsToMany(infobloks::class,'dop_info', 'worker_id', 'infoblok_id');
85 }
61 } 86 }
62 87
database/migrations/2024_02_22_080113_alter_table_sertification.php
File was created 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('sertifications', function (Blueprint $table) {
17 $table->string('name', 255)->nullable(false);
18 $table->string('education', 255)->nullable(false);
19 });
20 }
21
22 /**
23 * Reverse the migrations.
24 *
25 * @return void
26 */
27 public function down()
28 {
29 Schema::table('sertifications', function (Blueprint $table) {
30 $table->dropColumn('name');
31 $table->dropColumn('education');
32 });
33 }
34 };
35
database/migrations/2024_02_22_092030_create_table_prev_company.php
File was created 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::create('prev_company', function (Blueprint $table) {
17 $table->id();
18 $table->bigInteger('worker_id')->nullable(false);
19 $table->string('name_company', 255)->nullable(true);
20 $table->string('direct', 255)->nullable(true);
21 $table->string('telephone', 255)->nullable(false);
22 $table->string('telephone2', 255)->nullable(false);
23 $table->timestamps();
24 });
25 }
26
27 /**
28 * Reverse the migrations.
29 *
30 * @return void
31 */
32 public function down()
33 {
34 Schema::dropIfExists('prev_company');
35 }
36 };
37
public/images/default_man.jpg

25.8 KB

1 let scripts = function () { 1 let scripts = function () {
2 2
3 $('.js-toggle').on('click', function () { 3 $('.js-toggle').on('click', function () {
4 $(this).toggleClass('active'); 4 $(this).toggleClass('active');
5 }); 5 });
6 $('.js-parent-toggle').on('click', function () { 6 $('.js-parent-toggle').on('click', function () {
7 $(this).parent().toggleClass('active'); 7 $(this).parent().toggleClass('active');
8 }); 8 });
9 $('.js-parent-remove').on('click', function () {
10 $(this).parent().remove();
11 });
12 $('.js-menu-toggle').on('click', function () {
13 window.scrollTo(0,0);
14 $('#body').toggleClass('menu-is-actived');
15 });
16 $('.js-cookies-close').on('click', function () {
17 $('#body').removeClass('cookies-is-actived');
18 });
19 $('.js-works-edit').on('click', function () {
20 $(this).parent().parent().parent().addClass('active');
21 });
22 $('.js-works-remove').on('click', function () {
23 $(this).parent().parent().parent().parent().remove();
24 });
9 25
10 $('[data-tab]').on('click',function(){ 26 $('[data-tab]').on('click',function(){
11 $('[data-tab]').removeClass('active'); 27 $('[data-tab]').removeClass('active');
12 $('[data-body]').removeClass('showed'); 28 $('[data-body]').removeClass('showed');
13 $(this).addClass('active'); 29 $(this).addClass('active');
14 var id = $(this).data('tab'); 30 var id = $(this).data('tab');
15 $('[data-body='+id+']').addClass('showed'); 31 $('[data-body='+id+']').addClass('showed');
16 }); 32 });
17 33
34 $('.js-password-show').on('click',function(){
35 $(this).parent().addClass('active');
36 $(this).parent().parent().find('input').attr('type','text');
37 });
38
39 $('.js-password-hide').on('click',function(){
40 $(this).parent().removeClass('active');
41 $(this).parent().parent().find('input').attr('type','password');
42 });
43
18 let checkScrollTop = function () { 44 let checkScrollTop = function () {
19 if ($(document).scrollTop() == 0) { 45 if ($(document).scrollTop() == 0) {
20 $('#body').removeClass('begin'); 46 $('#body').removeClass('begin');
21 } else { 47 } else {
22 $('#body').addClass('begin'); 48 $('#body').addClass('begin');
23 } 49 }
24 } 50 }
25 checkScrollTop(); 51 checkScrollTop();
26 $(document).on('scroll', function () { 52 $(document).on('scroll', function () {
27 checkScrollTop(); 53 checkScrollTop();
28 }); 54 });
29 55
30 let closeAll = function () { 56 let closeAll = function () {
31 $('.js-toggle').removeClass('active'); 57 $('.js-toggle').removeClass('active');
32 $('.js-parent-toggle').parent().removeClass('active'); 58 $('.js-parent-toggle').parent().removeClass('active');
59 $('#body').removeClass('menu-is-actived');
60 $('#body').removeClass('cookies-is-actived');
33 } 61 }
34 62
35 $(document).keyup(function (e) { 63 $(document).keyup(function (e) {
36 if (e.key === "Escape") { 64 if (e.key === "Escape") {
37 closeAll(); 65 closeAll();
38 } 66 }
39 }); 67 });
40 68
41 $('.js-scroll-to').bind('click', function (e) { 69 $('.js-scroll-to').bind('click', function (e) {
42 let anchor = $(this); 70 let anchor = $(this);
43 $('html,body').stop().animate({ 71 $('html,body').stop().animate({
44 scrollTop: $(anchor.attr('href')).offset().top 72 scrollTop: $(anchor.attr('href')).offset().top
45 }, 300); 73 }, 300);
46 e.preventDefault(); 74 e.preventDefault();
47 }); 75 });
48 76
49 if ($('[type=tel]').is('[type=tel]')){ 77 if ($('[type=tel]').is('[type=tel]')){
50 $('[type=tel]').mask('+7 (999) 999-99-99'); 78 $('[type=tel]').mask('+7 (999) 999-99-99');
51 } 79 }
52 80
53 if ($('.js-select2').is('.js-select2')){ 81 if ($('.js-select2').is('.js-select2')){
54 $('.js-select2').select2(); 82 $('.js-select2').select2();
55 } 83 }
56 84
57 }; 85 };
58 86
59 let swipers = function () { 87 let swipers = function () {
60 88
61 if ($('.js-employer-swiper').is('.js-employer-swiper')) { 89 if ($('.js-employer-swiper').is('.js-employer-swiper')) {
62 let slider = new Swiper('.js-employer-swiper', { 90 let slider = new Swiper('.js-employer-swiper', {
63 autoplay: { 91 autoplay: {
64 delay: 5000, 92 delay: 5000,
65 }, 93 },
66 pagination: { 94 pagination: {
67 el: '.swiper-pagination', 95 el: '.swiper-pagination',
68 clickable: true 96 clickable: true
69 }, 97 },
70 breakpoints: { 98 breakpoints: {
71 768: { 99 768: {
72 slidesPerView: 2, 100 slidesPerView: 2,
73 }, 101 },
74 992: { 102 992: {
75 slidesPerView: 3, 103 slidesPerView: 3,
76 }, 104 },
77 1280: { 105 1280: {
78 slidesPerView: 4, 106 slidesPerView: 4,
79 }, 107 },
80 } 108 }
81 }); 109 });
82 } 110 }
83 111
84 if ($('.js-news-swiper').is('.js-news-swiper')) { 112 if ($('.js-news-swiper').is('.js-news-swiper')) {
85 let slider = new Swiper('.js-news-swiper', { 113 let slider = new Swiper('.js-news-swiper', {
86 spaceBetween: 20, 114 spaceBetween: 20,
87 pagination: { 115 pagination: {
88 el: '.swiper-pagination', 116 el: '.swiper-pagination',
89 clickable: true 117 clickable: true
90 }, 118 },
91 navigation: { 119 navigation: {
92 prevEl: '.js-news-swiper-button-prev', 120 prevEl: '.js-news-swiper-button-prev',
93 nextEl: '.js-news-swiper-button-next', 121 nextEl: '.js-news-swiper-button-next',
94 }, 122 },
95 breakpoints: { 123 breakpoints: {
96 768: { 124 768: {
97 slidesPerView: 2, 125 slidesPerView: 2,
98 }, 126 },
99 992: { 127 992: {
100 slidesPerView: 3, 128 slidesPerView: 3,
101 }, 129 },
102 } 130 }
103 }); 131 });
104 } 132 }
105 133
106 }; 134 };
107 135
108 document.addEventListener("DOMContentLoaded", () => { 136 document.addEventListener("DOMContentLoaded", () => {
109 scripts(); 137 scripts();
110 swipers(); 138 swipers();
111 }); 139 });
112 140
113 $(window).resize(function () { 141 $(window).resize(function () {
114 swipers(); 142 swipers();
115 }); 143 });
116 144
resources/views/index.blade.php
1 @extends('layout.frontend', ['title' => 'Главная страница РекаМоре']) 1 @extends('layout.frontend', ['title' => 'Главная страница РекаМоре'])
2 2
3 @section('scripts')
4 <script>
5 console.log('Test system');
6 $(document).on('click', '#button_send', function() {
7 var field_login = $('#email');
8 var field_pwd = $('#password');
9 var login_val = field_login.val();
10 var pwd_val = field_pwd.val();
11
12 console.log('login: '+login_val+' password: '+pwd_val);
13
14 $.ajax({
15 type: "GET",
16 url: "{{ route('login') }}",
17 data: "email="+login_val+"&password="+pwd_val,
18 success: function (data) {
19 console.log('Вход в систему');
20 console.log(data);
21 //$('#block_1').html(data);
22 },
23 headers: {
24 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
25 },
26 error: function (data) {
27 data = JSON.stringify(data);
28 console.log('Error: ' + data);
29 }
30 });
31 });
32 </script>
33 @endsection
34
3 @section('content') 35 @section('content')
4 <section class="work"> 36 <section class="work">
5 <div class="container"> 37 <div class="container">
6 <img src="images/1.png" alt="" class="work__pic"> 38 <img src="{{ asset('images/1.png') }}" alt="" class="work__pic">
7 <div class="work__body"> 39 <div class="work__body">
8 <div class="work__title"> 40 <div class="work__title">
9 Работа в море / 41 Работа в море /
10 <span class="br">Работа на реке</span> 42 <span class="br">Работа на реке</span>
11 </div> 43 </div>
12 <div class="work__text">Профессиональная сеть морского сообщества «RekaMore.su» приветствует вас — 44 <div class="work__text">Профессиональная сеть морского сообщества «RekaMore.su» приветствует вас —
13 тех, кто не представляет себе жизнь без моря, тех, кто готов связать свою жизнь с работой в 45 тех, кто не представляет себе жизнь без моря, тех, кто готов связать свою жизнь с работой в
14 сложных, но очень интересных условиях. </div> 46 сложных, но очень интересных условиях. </div>
15 <div class="work__list"> 47 <div class="work__list">
16 <div>Тысячи соискателей увидят Ваше объявление</div> 48 <div>Тысячи соискателей увидят Ваше объявление</div>
17 <div>Десятки компаний выкладывают объявления каждый день</div> 49 <div>Десятки компаний выкладывают объявления каждый день</div>
18 </div> 50 </div>
19 <form class="search work__form"> 51 <form class="search work__form" action="{{ route('search_vacancies') }}" method="GET">
20 <input type="search" class="input" placeholder="Желаемая должность" required> 52 <input type="search" id="search" name="search" class="input" placeholder="Желаемая должность" required>
21 <button type="submit" class="button button_light">Посмотреть вакансии</button> 53 <button type="submit" class="button button_light">Посмотреть вакансии</button>
22 <span> 54 <span>
23 <svg> 55 <svg>
24 <use xlink:href="images/sprite.svg#search"></use> 56 <use xlink:href="{{ asset('images/sprite.svg#search') }}"></use>
25 </svg> 57 </svg>
26 </span> 58 </span>
27 </form> 59 </form>
28 <button class="button work__search">Я ищу сотрудника</button> 60 <a href="{{ route('bd_resume') }}" class="button work__search">Я ищу сотрудника</a>
29 <div class="work__get"> 61 <div class="work__get">
30 <b>Скачать приложение</b> 62 <b>Скачать приложение</b>
31 <a href="#"> 63 <a href="">
32 <img src="images/google.svg" alt=""> 64 <img src="{{ asset('images/google.svg') }}" alt="">
33 </a> 65 </a>
34 <a href="#"> 66 <a href="">
35 <img src="images/apple.svg" alt=""> 67 <img src="{{ asset('images/apple.svg') }}" alt="">
36 </a> 68 </a>
37 </div> 69 </div>
38 </div> 70 </div>
39 </div> 71 </div>
40 </section> 72 </section>
41 <section class="numbers"> 73 <section class="numbers">
42 <div class="container"> 74 <div class="container">
43 <div class="numbers__body"> 75 <div class="numbers__body">
44 <div class="numbers__item"> 76 <div class="numbers__item">
45 <b>500+</b> 77 <b>500+</b>
46 <span>Резюме</span> 78 <span>Резюме</span>
47 Банальные, но неопровержимые выводы, а также элементы политического процесса лишь добавляют 79 Банальные, но неопровержимые выводы, а также элементы политического процесса лишь добавляют
48 фракционных разногласий и призваны к ответу. 80 фракционных разногласий и призваны к ответу.
49 </div> 81 </div>
50 <div class="numbers__item"> 82 <div class="numbers__item">
51 <b>1 000+</b> 83 <b>1 000+</b>
52 <span>Вакансий</span> 84 <span>Вакансий</span>
53 В рамках спецификации современных стандартов, диаграммы связей заблокированы в рамках своих 85 В рамках спецификации современных стандартов, диаграммы связей заблокированы в рамках своих
54 собственных рациональных ограничений. 86 собственных рациональных ограничений.
55 </div> 87 </div>
56 <div class="numbers__item"> 88 <div class="numbers__item">
57 <b>265</b> 89 <b>265</b>
58 <span>Компаний</span> 90 <span>Компаний</span>
59 Но сторонники тоталитаризма в науке заблокированы в рамках своих собственных рациональных 91 Но сторонники тоталитаризма в науке заблокированы в рамках своих собственных рациональных
60 ограничений. 92 ограничений.
61 </div> 93 </div>
62 </div> 94 </div>
63 </div> 95 </div>
64 </section> 96 </section>
65 <section class="vacancies"> 97 <section class="vacancies">
66 <div class="container"> 98 <div class="container">
67 <div class="title">Новые вакансии</div> 99 <div class="title">Новые вакансии</div>
68 <div class="vacancies__body"> 100 <div class="vacancies__body">
69 <button class="vacancies__more button button_light js-parent-toggle">Все должности</button> 101 <a class="vacancies__more button button_light js-parent-toggle" href="{{ route('vacancies') }}">Все должности</a>
70 <div class="vacancies__list"> 102 <div class="vacancies__list">
71 @if ($categories->count()) 103 @if ($categories->count())
72 @foreach ($categories as $cat) 104 @foreach ($categories as $cat)
73 <a href="#" class="vacancies__item"> 105 <a href="#" class="vacancies__item">
74 <span style="border-color:#F4C4C2"> 106 <span style="border-color:#F4C4C2">
75 <b>{{ $cat->name }}</b> 107 <b>{{ $cat->name }}</b>
76 <i>Вакансий: <span>{{ $cat->cnt }}</span></i> 108 <i>Вакансий: <span>{{ $cat->cnt }}</span></i>
77 </span> 109 </span>
78 </a> 110 </a>
79 @endforeach 111 @endforeach
80 @else 112 @else
81 Тут пока нет никаких вакансий 113 Тут пока нет никаких вакансий
82 @endif 114 @endif
83 </div> 115 </div>
84 </div> 116 </div>
85 </div> 117 </div>
86 </section> 118 </section>
87 <section class="employer"> 119 <section class="employer">
88 <div class="container"> 120 <div class="container">
89 <div class="title">Работодатели</div> 121 <div class="title">Работодатели</div>
90 <div class="swiper js-employer-swiper"> 122 <div class="swiper js-employer-swiper">
91 <div class="swiper-wrapper"> 123 <div class="swiper-wrapper">
92 124
93 @if ($employers->count()) 125 @if ($employers->count())
94 @php 126 @php
95 $rec = 0; 127 $rec = 0;
96 $count = $employers->count(); 128 $count = $employers->count();
97 @endphp 129 @endphp
98 @foreach($employers as $emp) 130 @foreach($employers as $emp)
99 @php $rec++ @endphp 131 @php $rec++ @endphp
100 @if (($rec==1) || ($rec==5) || ($rec==9) || ($rec==13) || ($rec==17)) 132 @if (($rec==1) || ($rec==5) || ($rec==9) || ($rec==13) || ($rec==17))
101 <div class="swiper-slide"> 133 <div class="swiper-slide">
102 <div class="employer__item"> 134 <div class="employer__item">
103 @endif 135 @endif
104 <a href=""> 136 <a href="">
105 <img src="{{ asset(Storage::url($emp->logo)) }}" alt="{{ $emp->name_company }}"> 137 <img src="{{ asset(Storage::url($emp->logo)) }}" alt="{{ $emp->name_company }}">
106 </a> 138 </a>
107 @if (($rec==4) || ($rec==8) || ($rec==12) || ($rec==16) || ($rec==20) || ($rec == $count)) 139 @if (($rec==4) || ($rec==8) || ($rec==12) || ($rec==16) || ($rec==20) || ($rec == $count))
108 </div> 140 </div>
109 </div> 141 </div>
110 @endif 142 @endif
111 @endforeach 143 @endforeach
112 @else 144 @else
113 <h5>Тут нет никаких записей</h5> 145 <h5>Тут нет никаких записей</h5>
114 @endif 146 @endif
115 </div> 147 </div>
116 <div class="swiper-pagination"></div> 148 <div class="swiper-pagination"></div>
117 </div> 149 </div>
118 <a href="#" class="employer__more button button_light">Все должности</a> 150 <a href="{{ route('shipping_companies') }}" class="employer__more button button_light">Все работодатели</a>
119 </div> 151 </div>
120 </section> 152 </section>
121 <section class="about"> 153 <section class="about">
122 <div class="container"> 154 <div class="container">
123 <div class="about__wrapper"> 155 <div class="about__wrapper">
124 <div class="title about__title">О нас</div> 156 <div class="title about__title">О нас</div>
125 <div class="about__body"> 157 <div class="about__body">
126 <div class="about__line"></div> 158 <div class="about__line"></div>
127 <div class="about__item"> 159 <div class="about__item">
128 <b>Для работодателей</b> 160 <b>Для работодателей</b>
129 <span>Наш ресурс позволит Вам за демократичную цену найти нужных специалистов в кратчайшие 161 <span>Наш ресурс позволит Вам за демократичную цену найти нужных специалистов в кратчайшие
130 сроки, подробнее об условиях можно узнать <a href="#">здесь</a>.</span> 162 сроки, подробнее об условиях можно узнать <a href="{{ route('page', ['pages' => 'Stoimost-razmescheniya']) }}">здесь</a>.</span>
131 <button class="about__button button button_whited">Поиск сотрудников</button> 163 <a class="about__button button button_whited" href="{{ route('bd_resume') }}">Поиск сотрудников</a>
132 </div> 164 </div>
133 <div class="about__item"> 165 <div class="about__item">
134 <b>Для сотрудников</b> 166 <b>Для сотрудников</b>
135 <span>Наше преимущество — это большой объем вакансий, более 70 судоходных компаний России и 167 <span>Наше преимущество — это большой объем вакансий, более 70 судоходных компаний России и
136 СНГ ищут сотрудников через наши ресурсы</span> 168 СНГ ищут сотрудников через наши ресурсы</span>
137 <button class="about__button button button_whited">Посмотреть вакансии</button> 169 <a class="about__button button button_whited" href="{{ route('vacancies') }}">Посмотреть вакансии</a>
138 </div> 170 </div>
139 </div> 171 </div>
140 </div> 172 </div>
141 </div> 173 </div>
142 </section> 174 </section>
143 <section class="news"> 175 <section class="news">
144 <div class="container"> 176 <div class="container">
145 <div class="news__toper"> 177 <div class="news__toper">
146 <div class="title">Новости и статьи</div> 178 <div class="title">Новости и статьи</div>
147 <div class="navs"> 179 <div class="navs">
148 <button class="js-news-swiper-button-prev"> 180 <button class="js-news-swiper-button-prev">
149 <svg class="rotate180"> 181 <svg class="rotate180">
150 <use xlink:href="images/sprite.svg#arrow"></use> 182 <use xlink:href="{{ asset('images/sprite.svg#arrow') }}"></use>
151 </svg> 183 </svg>
152 </button> 184 </button>
153 <button class="js-news-swiper-button-next"> 185 <button class="js-news-swiper-button-next">
154 <svg> 186 <svg>
155 <use xlink:href="images/sprite.svg#arrow"></use> 187 <use xlink:href="{{ asset('images/sprite.svg#arrow') }}"></use>
156 </svg> 188 </svg>
157 </button> 189 </button>
158 </div> 190 </div>
159 </div> 191 </div>
160 <div class="swiper js-news-swiper"> 192 <div class="swiper js-news-swiper">
161 <div class="swiper-wrapper"> 193 <div class="swiper-wrapper">
162 @if ($news->count()) 194 @if ($news->count())
163 @foreach ($news as $new) 195 @foreach ($news as $new)
164 <div class="swiper-slide"> 196 <div class="swiper-slide">
165 <div class="news__item"> 197 <div class="news__item">
166 <img src="{{ asset(Storage::url($new->image)) }}" alt="" class="news__item-pic"> 198 <img src="{{ asset(Storage::url($new->image)) }}" alt="" class="news__item-pic">
167 <div class="news__item-body"> 199 <div class="news__item-body">
168 <time datetime="2023-05-01" class="news__item-date">{{ $new->created_at }}</time> 200 <time datetime="2023-05-01" class="news__item-date">{{ $new->created_at }}</time>
169 <span class="news__item-title">{{ $new->title }}</span> 201 <span class="news__item-title">{{ $new->title }}</span>
170 <span class="news__item-text">{{ mb_strimwidth($new->text, 0, 100) }}</span> 202 <span class="news__item-text">{{ mb_strimwidth($new->text, 0, 100) }}</span>
171 <a href="#" class="news__item-more button button_light">Читать далее</a> 203 <a href="#" class="news__item-more button button_light">Читать далее</a>
172 </div> 204 </div>
173 </div> 205 </div>
174 </div> 206 </div>
175 @endforeach 207 @endforeach
176 @endif 208 @endif
177 </div> 209 </div>
178 <div class="swiper-pagination"></div> 210 <div class="swiper-pagination"></div>
179 </div> 211 </div>
180 <div class="news__all button button_light">Все новости</div> 212 <div class="news__all button button_light">Все новости</div>
181 </div> 213 </div>
182 </section> 214 </section>
183 <section class="info"> 215 <section class="info">
184 <div class="container"> 216 <div class="container">
185 <img src="images/5.png" alt="" class="info__pic"> 217 <img src="images/5.png" alt="" class="info__pic">
186 <div class="info__body"> 218 <div class="info__body">
187 <div class="title info__title">Мы в социальных сетях</div> 219 <div class="title info__title">Мы в социальных сетях</div>
188 <div class="info__item"> 220 <div class="info__item">
189 <div class="info__text">Телеграм — Подпишитесь на наш телеграм канал и получайте уведомления о 221 <div class="info__text">Телеграм — Подпишитесь на наш телеграм канал и получайте уведомления о
190 новых вакансиях прямо на свой смартфон</div> 222 новых вакансиях прямо на свой смартфон</div>
191 <a href="#" class="info__link" style="background:#20A0E1"> 223 <a href="#" class="info__link" style="background:#20A0E1">
192 <svg> 224 <svg>
193 <use xlink:href="images/sprite.svg#tg"></use> 225 <use xlink:href="images/sprite.svg#tg"></use>
194 </svg> 226 </svg>
195 Телеграм 227 Телеграм
196 </a> 228 </a>
197 </div> 229 </div>
198 <div class="info__item"> 230 <div class="info__item">
199 <div class="info__text">ВКонтакте — Лучшие вакансии за неделю выкладываем именно тут, информация 231 <div class="info__text">ВКонтакте — Лучшие вакансии за неделю выкладываем именно тут, информация
200 о судоходных компаниях, инструкции по работе с сайтом, конкурсы и многое другое</div> 232 о судоходных компаниях, инструкции по работе с сайтом, конкурсы и многое другое</div>
201 <a href="#" class="info__link" style="background:#2787F5"> 233 <a href="#" class="info__link" style="background:#2787F5">
202 <svg> 234 <svg>
203 <use xlink:href="images/sprite.svg#vk"></use> 235 <use xlink:href="images/sprite.svg#vk"></use>
204 </svg> 236 </svg>
205 ВКонтакте 237 ВКонтакте
206 </a> 238 </a>
207 </div> 239 </div>
208 </div> 240 </div>
209 </div> 241 </div>
210 </section> 242 </section>
211 @endsection 243 @endsection
212 244
resources/views/layout/frontend.blade.php
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> 2 <html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
3 3
4 <head> 4 <head>
5 <meta charset="utf-8"> 5 <meta charset="utf-8">
6 <title>{{ $title }}</title> 6 <title>{{ $title }}</title>
7 <meta name="viewport" content="width=device-width,initial-scale=1"> 7 <meta name="viewport" content="width=device-width,initial-scale=1">
8 <meta name="theme-color" content="#377D87"> 8 <meta name="theme-color" content="#377D87">
9 <link rel="stylesheet" href="{{ asset('css/news/style.css') }}"> 9 <link rel="stylesheet" href="{{ asset('css/news/style.css') }}">
10 </head> 10 </head>
11 11
12 <body id="body"> 12 <body id="body">
13 <a href="#body" class="to-top js-scroll-to"> 13 <a href="#body" class="to-top js-scroll-to">
14 <svg> 14 <svg>
15 <use xlink:href="{{ asset('images/sprite.svg#arrow-top') }}"></use> 15 <use xlink:href="{{ asset('images/sprite.svg#arrow-top') }}"></use>
16 </svg> 16 </svg>
17 </a> 17 </a>
18 18
19 <div> <!-- BEGIN TOP WRAPPER --> 19 <div> <!-- BEGIN TOP WRAPPER -->
20 <header class="header"> 20 <header class="header">
21 <div class="container"> 21 <div class="container">
22 <div class="header__body"> 22 <div class="header__body">
23 <div class="header__left"> 23 <div class="header__left">
24 <a href="{{ route('index') }}" class="header__logo"> 24 <a href="{{ route('index') }}" class="header__logo">
25 <svg> 25 <svg>
26 <use xlink:href="{{ asset('images/sprite.svg#logo') }}"></use> 26 <use xlink:href="{{ asset('images/sprite.svg#logo') }}"></use>
27 </svg> 27 </svg>
28 </a> 28 </a>
29 <nav class="header__menu"> 29 <nav class="header__menu">
30 <a href="{{ route('vacancies') }}" class="header__menu-item">Вакансии</a> 30 <a href="{{ route('vacancies') }}" class="header__menu-item">Вакансии</a>
31 <a href="{{ route('shipping_companies') }}" 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> 32 <a href="{{ route('education') }}" class="header__menu-item">Образование</a>
33 </nav> 33 </nav>
34 </div> 34 </div>
35 <div class="header__right"> 35 <div class="header__right">
36 @guest
37
38 @else
36 <button class="header__notifs header__notifs_actived"> 39 <button class="header__notifs header__notifs_actived">
37 <svg> 40 <svg>
38 <use xlink:href="{{ asset('images/sprite.svg#ring') }}"></use> 41 <use xlink:href="{{ asset('images/sprite.svg#ring') }}"></use>
39 </svg> 42 </svg>
40 <span>Уведомления</span> 43 <span>Уведомления</span>
41 </button> 44 </button>
45 @endguest
42 <div class="header__right-line"></div> 46 <div class="header__right-line"></div>
43 <button class="header__burger"> 47 <button class="header__burger">
44 <svg> 48 <svg>
45 <use xlink:href="{{ asset('images/sprite.svg#burger') }}"></use> 49 <use xlink:href="{{ asset('images/sprite.svg#burger') }}"></use>
46 </svg> 50 </svg>
47 </button> 51 </button>
48 @guest 52 @guest
49 <a class="button header__sign" href="{{ route('login') }}">Войти</a> 53 <a class="button header__sign" data-fancybox data-src="#sign" data-options='{"touch":false,"autoFocus":false}'>Войти</a>
50 @else 54 @else
51 <a class="button header__sign" href="{{ route('logout') }}">Выйти</a> 55 <a class="button header__sign" href="{{ route('logout') }}">Выйти</a>
52 @endguest 56 @endguest
53 </div> 57 </div>
54 </div> 58 </div>
55 </div> 59 </div>
56 </header> 60 </header>
57 @yield('content') 61 @yield('content')
58 62
59 </div> <!-- END TOP WRAPPER --> 63 </div> <!-- END TOP WRAPPER -->
60 64
61 <div> <!-- BEGIN BOTTOM WRAPPER --> 65 <div> <!-- BEGIN BOTTOM WRAPPER -->
62 <footer class="footer"> 66 <footer class="footer">
63 <div class="container"> 67 <div class="container">
64 <div class="footer__mobile"> 68 <div class="footer__mobile">
65 <button class="footer__mobile-toper js-toggle active"> 69 <button class="footer__mobile-toper js-toggle active">
66 <a href="{{ route('index') }}"> 70 <a href="{{ route('index') }}">
67 <svg> 71 <svg>
68 <use xlink:href="{{ asset('images/sprite.svg#logo') }}"></use> 72 <use xlink:href="{{ asset('images/sprite.svg#logo') }}"></use>
69 </svg> 73 </svg>
70 </a> 74 </a>
71 <span> 75 <span>
72 <svg> 76 <svg>
73 <use xlink:href="{{ asset('images/sprite.svg#arrow-top') }}"></use> 77 <use xlink:href="{{ asset('images/sprite.svg#arrow-top') }}"></use>
74 </svg> 78 </svg>
75 </span> 79 </span>
76 </button> 80 </button>
77 <div class="footer__mobile-menu"> 81 <div class="footer__mobile-menu">
78 <div class="footer__mobile-menu-item"> 82 <div class="footer__mobile-menu-item">
79 <button class="js-toggle"> 83 <button class="js-toggle">
80 <b>Соискателям</b> 84 <b>Соискателям</b>
81 <span><svg> 85 <span><svg>
82 <use xlink:href="{{ asset('images/sprite.svg#arrow-top') }}"></use> 86 <use xlink:href="{{ asset('images/sprite.svg#arrow-top') }}"></use>
83 </svg></span> 87 </svg></span>
84 </button> 88 </button>
85 <div> 89 <div>
86 <a href="{{ route('vacancies') }}">Вакансии</a> 90 <a href="{{ route('vacancies') }}">Вакансии</a>
87 <a href="{{ route('page', ['pages' => "Usloviya-razmescheniya"]) }}">Условия размещения</a> 91 <a href="{{ route('page', ['pages' => "Usloviya-razmescheniya"]) }}">Условия размещения</a>
88 <a href="{{ route('education') }}">Образование</a> 92 <a href="{{ route('education') }}">Образование</a>
89 <a href="{{ route('news') }}">Новости</a> 93 <a href="{{ route('news') }}">Новости</a>
90 <a href="{{ route('contacts') }}">Контакты</a> 94 <a href="{{ route('contacts') }}">Контакты</a>
91 <a href="{{ route('page', ['pages' => "Publichnaya-oferta-soiskatelyam"]) }}">Публичная оферта</a> 95 <a href="{{ route('page', ['pages' => "Publichnaya-oferta-soiskatelyam"]) }}">Публичная оферта</a>
92 </div> 96 </div>
93 </div> 97 </div>
94 <div class="footer__mobile-menu-item"> 98 <div class="footer__mobile-menu-item">
95 <button class="js-toggle"> 99 <button class="js-toggle">
96 <b>Работодателям</b> 100 <b>Работодателям</b>
97 <span><svg> 101 <span><svg>
98 <use xlink:href="{{asset('images/sprite.svg#arrow-top') }}"></use> 102 <use xlink:href="{{asset('images/sprite.svg#arrow-top') }}"></use>
99 </svg></span> 103 </svg></span>
100 </button> 104 </button>
101 <div> 105 <div>
102 <a href="{{ route('register') }}">Регистрация</a> 106 <a href="{{ route('register') }}">Регистрация</a>
103 <a href="{{ route('bd_resume') }}">База резюме</a> 107 <a href="{{ route('bd_resume') }}">База резюме</a>
104 <a href="{{ route('page', ['pages' => "Stoimost-razmescheniya"]) }}">Стоимость размещения</a> 108 <a href="{{ route('page', ['pages' => "Stoimost-razmescheniya"]) }}">Стоимость размещения</a>
105 <a href="{{ route('page', ['pages' => "Instrukcii"]) }}">Инструкции</a> 109 <a href="{{ route('page', ['pages' => "Instrukcii"]) }}">Инструкции</a>
106 <a href="{{ route('page', ['pages' => "Effektivnost-obyavleniya"]) }}">Эффективность объявления</a> 110 <a href="{{ route('page', ['pages' => "Effektivnost-obyavleniya"]) }}">Эффективность объявления</a>
107 <a href="{{ route('page', ['pages' => "Publichnaya-oferta-rabotodatelyam"]) }}">Публичная оферта</a> 111 <a href="{{ route('page', ['pages' => "Publichnaya-oferta-rabotodatelyam"]) }}">Публичная оферта</a>
108 </div> 112 </div>
109 </div> 113 </div>
110 </div> 114 </div>
111 <div class="footer__mobile-contacts"> 115 <div class="footer__mobile-contacts">
112 <b>Контакты</b> 116 <b>Контакты</b>
113 <a href="tel:{{ $companies[0]->telephone }}">{{ $companies[0]->telephone }}</a> 117 <a href="tel:{{ $companies[0]->telephone }}">{{ $companies[0]->telephone }}</a>
114 <a href="mailto:{{ $companies[0]->email }}">{{ $companies[0]->email }}</a> 118 <a href="mailto:{{ $companies[0]->email }}">{{ $companies[0]->email }}</a>
115 </div> 119 </div>
116 <div class="footer__mobile-bottom"> 120 <div class="footer__mobile-bottom">
117 <div class="socials"> 121 <div class="socials">
118 <a href="{{ $companies[0]->vkontact }}" target="_blank"> 122 <a href="{{ $companies[0]->vkontact }}" target="_blank">
119 <svg> 123 <svg>
120 <use xlink:href="{{ asset('images/sprite.svg#vk') }}"></use> 124 <use xlink:href="{{ asset('images/sprite.svg#vk') }}"></use>
121 </svg> 125 </svg>
122 </a> 126 </a>
123 <a href="{{ $companies[0]->telegram }}" target="_blank"> 127 <a href="{{ $companies[0]->telegram }}" target="_blank">
124 <svg> 128 <svg>
125 <use xlink:href="{{ asset('images/sprite.svg#tg') }}"></use> 129 <use xlink:href="{{ asset('images/sprite.svg#tg') }}"></use>
126 </svg> 130 </svg>
127 </a> 131 </a>
128 </div> 132 </div>
129 <nav class="footer__mobile-links"> 133 <nav class="footer__mobile-links">
130 <a href="{{ route('page', ['pages' => "Politika-konfidencialnosti"]) }}">Политика конфиденциальности</a> 134 <a href="{{ route('page', ['pages' => "Politika-konfidencialnosti"]) }}">Политика конфиденциальности</a>
131 <span></span> 135 <span></span>
132 <a href="{{ route('page', ['pages' => "Polzovatelskoe-soglashenie"]) }}">Пользовательское соглашение</a> 136 <a href="{{ route('page', ['pages' => "Polzovatelskoe-soglashenie"]) }}">Пользовательское соглашение</a>
133 </nav> 137 </nav>
134 &copy; 2023 &mdash; RekaMore.su 138 &copy; 2023 &mdash; RekaMore.su
135 <a href="{{ route('index') }}" class="nls" target="_blank"> 139 <a href="{{ route('index') }}" class="nls" target="_blank">
136 <svg> 140 <svg>
137 <use xlink:href="{{ asset('images/sprite.svg#nls') }}"></use> 141 <use xlink:href="{{ asset('images/sprite.svg#nls') }}"></use>
138 </svg> 142 </svg>
139 <span> 143 <span>
140 Дизайн и разработка: 144 Дизайн и разработка:
141 <b>NoLogoStudio.ru</b> 145 <b>NoLogoStudio.ru</b>
142 </span> 146 </span>
143 </a> 147 </a>
144 </div> 148 </div>
145 </div> 149 </div>
146 <div class="footer__main"> 150 <div class="footer__main">
147 <div class="footer__main-body"> 151 <div class="footer__main-body">
148 <a href="" class="footer__main-logo"> 152 <a href="" class="footer__main-logo">
149 <svg> 153 <svg>
150 <use xlink:href="{{ asset('images/sprite.svg#logo') }}"></use> 154 <use xlink:href="{{ asset('images/sprite.svg#logo') }}"></use>
151 </svg> 155 </svg>
152 </a> 156 </a>
153 <div class="footer__main-col"> 157 <div class="footer__main-col">
154 <div class="footer__main-title">Соискателям</div> 158 <div class="footer__main-title">Соискателям</div>
155 <nav> 159 <nav>
156 <a href="{{ route('vacancies') }}">Вакансии</a> 160 <a href="{{ route('vacancies') }}">Вакансии</a>
157 <a href="{{ route('page', ['pages' => "Usloviya-razmescheniya"]) }}">Условия размещения</a> 161 <a href="{{ route('page', ['pages' => "Usloviya-razmescheniya"]) }}">Условия размещения</a>
158 <a href="{{ route('education') }}">Образование</a> 162 <a href="{{ route('education') }}">Образование</a>
159 <a href="{{ route('news') }}">Новости</a> 163 <a href="{{ route('news') }}">Новости</a>
160 <a href="{{ route('contacts') }}">Контакты</a> 164 <a href="{{ route('contacts') }}">Контакты</a>
161 <a href="{{ route('page', ['pages' => "Publichnaya-oferta-soiskatelyam"]) }}">Публичная оферта</a> 165 <a href="{{ route('page', ['pages' => "Publichnaya-oferta-soiskatelyam"]) }}">Публичная оферта</a>
162 </nav> 166 </nav>
163 </div> 167 </div>
164 <div class="footer__main-col"> 168 <div class="footer__main-col">
165 <div class="footer__main-title">Работодателям</div> 169 <div class="footer__main-title">Работодателям</div>
166 <nav> 170 <nav>
167 <a href="{{ route('register') }}">Регистрация</a> 171 <a href="{{ route('register') }}">Регистрация</a>
168 <a href="{{ route('bd_resume') }}">База резюме</a> 172 <a href="{{ route('bd_resume') }}">База резюме</a>
169 <a href="{{ route('page', ['pages' => "Stoimost-razmescheniya"]) }}">Стоимость размещения</a> 173 <a href="{{ route('page', ['pages' => "Stoimost-razmescheniya"]) }}">Стоимость размещения</a>
170 <a href="{{ route('page', ['pages' => "Instrukcii"]) }}">Инструкции</a> 174 <a href="{{ route('page', ['pages' => "Instrukcii"]) }}">Инструкции</a>
171 <a href="{{ route('page', ['pages' => "Effektivnost-obyavleniya"]) }}">Эффективность объявления</a> 175 <a href="{{ route('page', ['pages' => "Effektivnost-obyavleniya"]) }}">Эффективность объявления</a>
172 <a href="{{ route('page', ['pages' => "Publichnaya-oferta-rabotodatelyam"]) }}">Публичная оферта</a> 176 <a href="{{ route('page', ['pages' => "Publichnaya-oferta-rabotodatelyam"]) }}">Публичная оферта</a>
173 </nav> 177 </nav>
174 </div> 178 </div>
175 179
176 <div class="footer__main-col"> 180 <div class="footer__main-col">
177 <div class="footer__main-title">Контакты</div> 181 <div class="footer__main-title">Контакты</div>
178 <div class="footer__main-contacts"> 182 <div class="footer__main-contacts">
179 <a href="tel:{{ $companies[0]->telephone }}">{{ $companies[0]->telephone }}</a> 183 <a href="tel:{{ $companies[0]->telephone }}">{{ $companies[0]->telephone }}</a>
180 <a href="mailto:{{ $companies[0]->email }}">{{ $companies[0]->email }}</a> 184 <a href="mailto:{{ $companies[0]->email }}">{{ $companies[0]->email }}</a>
181 </div> 185 </div>
182 <div class="socials"> 186 <div class="socials">
183 <a href="{{ $companies[0]->vkontact }}" target="_blank"> 187 <a href="{{ $companies[0]->vkontact }}" target="_blank">
184 <svg> 188 <svg>
185 <use xlink:href="{{ asset('images/sprite.svg#vk') }}"></use> 189 <use xlink:href="{{ asset('images/sprite.svg#vk') }}"></use>
186 </svg> 190 </svg>
187 </a> 191 </a>
188 <a href="{{ $companies[0]->telegram }}" target="_blank"> 192 <a href="{{ $companies[0]->telegram }}" target="_blank">
189 <svg> 193 <svg>
190 <use xlink:href="{{ asset('images/sprite.svg#tg') }}"></use> 194 <use xlink:href="{{ asset('images/sprite.svg#tg') }}"></use>
191 </svg> 195 </svg>
192 </a> 196 </a>
193 </div> 197 </div>
194 </div> 198 </div>
195 </div> 199 </div>
196 <div class="footer__main-copy"> 200 <div class="footer__main-copy">
197 <div>&copy; 2023 &mdash; RekaMore.su</div> 201 <div>&copy; 2023 &mdash; RekaMore.su</div>
198 <nav> 202 <nav>
199 <a href="{{ route('page', ['pages' => "Politika-konfidencialnosti"]) }}">Политика конфиденциальности</a> 203 <a href="{{ route('page', ['pages' => "Politika-konfidencialnosti"]) }}">Политика конфиденциальности</a>
200 <span></span> 204 <span></span>
201 <a href="{{ route('page', ['pages' => "Polzovatelskoe-soglashenie"]) }}">Пользовательское соглашение</a> 205 <a href="{{ route('page', ['pages' => "Polzovatelskoe-soglashenie"]) }}">Пользовательское соглашение</a>
202 </nav> 206 </nav>
203 <a href="{{ route('index') }}" class="nls" target="_blank"> 207 <a href="{{ route('index') }}" class="nls" target="_blank">
204 <svg> 208 <svg>
205 <use xlink:href="{{ asset('images/sprite.svg#nls') }}"></use> 209 <use xlink:href="{{ asset('images/sprite.svg#nls') }}"></use>
206 </svg> 210 </svg>
207 <span> 211 <span>
208 Дизайн и разработка: 212 Дизайн и разработка:
209 <b>NoLogoStudio.ru</b> 213 <b>NoLogoStudio.ru</b>
210 </span> 214 </span>
211 </a> 215 </a>
212 </div> 216 </div>
213 </div> 217 </div>
214 </div> 218 </div>
215 </footer> 219 </footer>
216 </div> <!-- END BOTTOM WRAPPER --> 220 </div> <!-- END BOTTOM WRAPPER -->
217 221
218 <div hidden> <!-- BEGIN MODALS WRAPPER --> 222 <div hidden> <!-- BEGIN MODALS WRAPPER -->
219 <div class="modal"> 223 @include('modals.send_worker')
220 modal 224 <div id="question" class="modal modal_bg">
225 <div class="modal__body">
226 <div class="modal__title">Отправить сообщение "Наяда"</div>
227 <div class="modal__text">Вы должны быть авторизованы, чтобы отправить личное сообщение</div>
228 <div class="modal__buttons">
229 <a href="#" class="button">Войти</a>
230 <a href="#" class="button button_light">Зарегистрироваться</a>
231 </div>
232 </div>
233 </div>
234
235 @include('modals.send_login')
236
237 <div id="reset" class="modal">
238 <div class="modal__body">
239 <div class="modal__title left">Сбросить пароль</div>
240 <div class="modal__text left">Пожалуйста, введите имя пользователя или адрес электронной почты</div>
241 <form class="modal__sign">
242 <div class="modal__sign-item">
243 <input type="text" class="input" placeholder="Имя пользователя или email адрес" required>
244 </div>
245 <div class="modal__sign-item">
246 <button type="submit" class="button">Получить новый пароль</button>
247 </div>
248 </form>
249 <div class="modal__text">
250 <span>Вспомнили пароль?</span>
251 &nbsp;
252 <a href="#">Войти</a>
253 </div>
254 </div>
255 </div>
256 <div id="reg" class="modal">
257 <div class="modal__body">
258 <div class="modal__title left">Регистрация</div>
259 <div class="modal__tabs">
260 <button type="button" class="modal__tabs-item button button_light active" data-tab="1">Кандидат</button>
261 <button type="button" class="modal__tabs-item button button_light" data-tab="2">Работодатель</button>
262 </div>
263 <form class="modal__reg showed" data-body="1">
264 <div class="modal__reg-item form-group">
265 <label class="form-group__label">Электронная почта</label>
266 <div class="form-group__item">
267 <input type="email" class="input" placeholder="info@rekamore.su" required>
268 </div>
269 </div>
270 <div class="modal__reg-item form-group">
271 <label class="form-group__label">Пароль</label>
272 <div class="form-group__item">
273 <input type="password" class="input" placeholder="**********" required>
274 <button type="button" class="eye">
275 <svg class="js-password-show">
276 <use xlink:href="images/sprite.svg#eye"></use>
277 </svg>
278 <svg class="js-password-hide">
279 <use xlink:href="images/sprite.svg#eye-2"></use>
280 </svg>
281 </button>
282 </div>
283 </div>
284 <div class="modal__reg-item form-group">
285 <label class="form-group__label">Подтвердить пароль</label>
286 <div class="form-group__item">
287 <input type="password" class="input" placeholder="**********" required>
288 <button type="button" class="eye">
289 <svg class="js-password-show">
290 <use xlink:href="images/sprite.svg#eye"></use>
291 </svg>
292 <svg class="js-password-hide">
293 <use xlink:href="images/sprite.svg#eye-2"></use>
294 </svg>
295 </button>
296 </div>
297 </div>
298 <div class="modal__reg-item form-group">
299 <label class="form-group__label">Статус</label>
300 <div class="form-group__item">
301 <div class="select">
302 <select class="js-select2">
303 <option selected disabled>Не указано</option>
304 <option>Вариант 1</option>
305 <option>Вариант 2</option>
306 <option>Вариант 3</option>
307 <option>Вариант 4</option>
308 <option>Вариант 5</option>
309 <option>Вариант 6</option>
310 </select>
311 </div>
312 </div>
313 </div>
314 <div class="modal__reg-item form-group">
315 <label class="form-group__label">Ф.И.О.</label>
316 <div class="form-group__item">
317 <input type="text" class="input" placeholder="Шестаков Михаил Юрьевич" required>
318 </div>
319 </div>
320 <div class="modal__reg-item form-group">
321 <label class="form-group__label">Должность</label>
322 <div class="form-group__item">
323 <input type="text" class="input" placeholder="Палуба" required>
324 </div>
325 </div>
326 <div class="modal__reg-item form-group">
327 <label class="form-group__label">Номер телефона</label>
328 <div class="form-group__item">
329 <input type="tel" class="input" placeholder="+7 (___) ___-__-__" required>
330 </div>
331 </div>
332 <div class="modal__reg-item">
333 <img src="images/catpcha.jpg" alt="" class="captcha">
334 </div>
335 <div class="modal__reg-item">
336 <label class="checkbox">
337 <input type="checkbox" class="checkbox__input" required>
338 <span class="checkbox__icon">
339 <svg>
340 <use xlink:href="images/sprite.svg#v"></use>
341 </svg>
342 </span>
343 <span class="checkbox__text">
344 <span>
345 Я согласен(на) с <a href="#">Политикой конфиденциальности</a>
346 </span>
347 </span>
348 </label>
349 </div>
350 <button type="submit" class="button">Зарегистрироваться</button>
351 </form>
352 <form class="modal__reg" data-body="2">
353 <div class="modal__reg-item form-group">
354 <label class="form-group__label">Электронная почта</label>
355 <div class="form-group__item">
356 <input type="email" class="input" placeholder="info@rekamore.su" required>
357 </div>
358 </div>
359 <div class="modal__reg-item form-group">
360 <label class="form-group__label">Пароль</label>
361 <div class="form-group__item">
362 <input type="password" class="input" placeholder="**********" required>
363 <button type="button" class="eye">
364 <svg class="js-password-show">
365 <use xlink:href="images/sprite.svg#eye"></use>
366 </svg>
367 <svg class="js-password-hide">
368 <use xlink:href="images/sprite.svg#eye-2"></use>
369 </svg>
370 </button>
371 </div>
372 </div>
373 <div class="modal__reg-item form-group">
374 <label class="form-group__label">Подтвердить пароль</label>
375 <div class="form-group__item">
376 <input type="password" class="input" placeholder="**********" required>
377 <button type="button" class="eye">
378 <svg class="js-password-show">
379 <use xlink:href="images/sprite.svg#eye"></use>
380 </svg>
381 <svg class="js-password-hide">
382 <use xlink:href="images/sprite.svg#eye-2"></use>
383 </svg>
384 </button>
385 </div>
386 </div>
387 <div class="modal__reg-item form-group">
388 <label class="form-group__label">Номер телефона</label>
389 <div class="form-group__item">
390 <input type="tel" class="input" placeholder="+7 (___) ___-__-__" required>
391 </div>
392 </div>
393 <div class="modal__reg-item form-group">
394 <label class="form-group__label">Название судоходной компании</label>
395 <div class="form-group__item">
396 <input type="text" class="input" placeholder="ООО Река Море" required>
397 </div>
398 </div>
399 <div class="modal__reg-item">
400 <img src="images/catpcha.jpg" alt="" class="captcha">
401 </div>
402 <div class="modal__reg-item">
403 <label class="checkbox">
404 <input type="checkbox" class="checkbox__input" required>
405 <span class="checkbox__icon">
406 <svg>
407 <use xlink:href="images/sprite.svg#v"></use>
408 </svg>
409 </span>
410 <span class="checkbox__text">
411 <span>
412 Я согласен(на) с <a href="#">Политикой конфиденциальности</a>
413 </span>
414 </span>
415 </label>
416 </div>
417 <button type="submit" class="button">Зарегистрироваться</button>
418 </form>
419 <div class="modal__text">
420 <span>Вспомнили пароль?</span>
421 &nbsp;
422 <a href="#">Войти</a>
423 </div>
424 </div>
425 </div>
426 <div id="thanks" class="modal modal_bg">
427 <div class="modal__body">
428 <div class="modal__title">Спасибо!</div>
429 <div class="modal__text">Ваша сообщение успешно отправлена работодателю <a href="#">"Наяда"</a></div>
430 <a href="#" class="button button_light modal__button">На главную</a>
431 </div>
432 </div>
433 <div id="thanks-2" class="modal modal_bg">
434 <div class="modal__body">
435 <div class="modal__title">Спасибо!</div>
436 <div class="modal__text">Ваша заявка успешно отправлена</div>
437 <div class="modal__text"><span>В ближайшее время с вами свяжется наш менеджер для уточнения необходимой информации</span></div>
438 <a href="#" class="button button_light modal__button">На главную</a>
439 </div>
440 </div>
441 <div id="thanks-3" class="modal modal_bg">
442 <div class="modal__body">
443 <div class="modal__title">Спасибо!</div>
444 <div class="modal__text">Вы успешно зарегистрировались</div>
445 <div class="modal__text left"><span>Ваш аккаунт требует подтверждение администратора сайта. Администратор сайта должен изменить статус работодателя, чтобы вы смогли авторизоваться в системе.</span></div>
446 <div class="modal__text left"><span>После подтверждения администратором, вам прейдет сообщение на электронную почту, о подтверждении регистрации.</span></div>
447 <a href="#" class="button button_light modal__button">Войти</a>
448 </div>
449 </div>
450 <div id="thanks-4" class="modal modal_bg">
451 <div class="modal__body">
452 <div class="modal__title">Спасибо!</div>
453 <div class="modal__text">Ваше сообщение успешно отправлено администратору сайта на подтверждение.</div>
454 <a href="#" class="button button_light modal__button">На главную</a>
455 </div>
456 </div>
457 <div id="delete" class="modal modal_bg">
458 <div class="modal__body">
459 <div class="modal__title">Удалить профиль?</div>
460 <div class="modal__text">Вы действительно хотите удалить свой профиль?</div>
461 <div class="modal__buttons">
462 <button href="button" class="button">Да</button>
463 <button href="button" class="button button_light">Нет</button>
464 </div>
465 </div>
466 </div>
467 <div id="is-deleted" class="modal modal_bg">
468 <div class="modal__body">
469 <div class="modal__title">Профиль удален</div>
470 <div class="modal__text">Вы успешно удалили свой профиль.</div>
471 <a href="#" class="button button_light modal__button">На главную</a>
472 </div>
221 </div> 473 </div>
222 </div> <!-- END MODALS WRAPPER --> 474 </div> <!-- END MODALS WRAPPER -->
223 475
476
224 <script src="{{ asset('js/jquery.js') }}"></script> 477 <script src="{{ asset('js/jquery.js') }}"></script>
225 <script src="{{ asset('js/jquery.maskedinput.js') }}"></script> 478 <script src="{{ asset('js/jquery.maskedinput.js') }}"></script>
226 <script src="{{ asset('js/jquery.fancybox.js') }}"></script> 479 <script src="{{ asset('js/jquery.fancybox.js') }}"></script>
227 <script src="{{ asset('js/jquery.select2.js') }}"></script> 480 <script src="{{ asset('js/jquery.select2.js') }}"></script>
228 <script src="{{ asset('js/swiper.js') }}"></script> 481 <script src="{{ asset('js/swiper.js') }}"></script>
229 <script src="{{ asset('js/script.js') }}"></script> 482 <script src="{{ asset('js/script.js') }}"></script>
230 <script> 483 <script>
231 var getUrlParameter = function getUrlParameter(sParam) { 484 var getUrlParameter = function getUrlParameter(sParam) {
232 var sPageURL = decodeURIComponent(window.location.search.substring(1)), 485 var sPageURL = decodeURIComponent(window.location.search.substring(1)),
233 sURLVariables = sPageURL.split('&'), 486 sURLVariables = sPageURL.split('&'),
234 sParameterName, 487 sParameterName,
235 i; 488 i;
236 for (i = 0; i < sURLVariables.length; i++) { 489 for (i = 0; i < sURLVariables.length; i++) {
237 sParameterName = sURLVariables[i].split('='); 490 sParameterName = sURLVariables[i].split('=');
238 if (sParameterName[0] === sParam) { 491 if (sParameterName[0] === sParam) {
239 return sParameterName[1] === undefined ? true : sParameterName[1]; 492 return sParameterName[1] === undefined ? true : sParameterName[1];
240 } 493 }
241 } 494 }
242 }; 495 };
243 </script> 496 </script>
244 @yield('scripts') 497 @yield('scripts')
245 </body> 498 </body>
246 </html> 499 </html>
247 500
resources/views/modals/send_admin.blade.php
File was created 1 <div id="send" class="modal">
2 <div class="modal__body">
3 <div class="modal__title">Отправить сообщение "Наяда"</div>
4 <div class="modal__text">Если у вас возникли вопросы насчет вакансии, вы можете задать их работодателю</div>
5 <form class="modal__form">
6 <div class="modal__form-item error">
7 <input id="i1" type="text" class="input" placeholder="Тема" required>
8 <label for="i1">Не заполнено поле</label>
9 </div>
10 <div class="modal__form-item">
11 <textarea id="i2" class="textarea" placeholder="Укажите по какому поводу вы пишите работодателю, уточните название вакансии или прикрепите ссылку на вакансию, дайте как можно больше информации.&#10;&#10;ВАЖНО не стоит писать работодателю короткий текст цитирую «Какая зарплата?, работодатель не поймет о чем речь, опишите вопрос максимально подробно»." required></textarea>
12 <label for="i2">Не заполнено поле</label>
13 </div>
14 <div class="modal__form-item">
15 <div class="file">
16 <label class="file__input">
17 <input type="file">
18 <span class="button button_light">
19 <svg>
20 <use xlink:href="images/sprite.svg#share"></use>
21 </svg>
22 Прикрепить резюме
23 </span>
24 </label>
25 <div class="file__list">
26 <div class="file__list-item">
27 <div class="file__list-item-left">
28 <svg>
29 <use xlink:href="images/sprite.svg#clip"></use>
30 </svg>
31 <span>image1.png</span>
32 </div>
33 <button type="button" class="file__list-item-right js-parent-remove">
34 <svg>
35 <use xlink:href="images/sprite.svg#cross-bold"></use>
36 </svg>
37 </button>
38 </div>
39 <div class="file__list-item">
40 <div class="file__list-item-left">
41 <svg>
42 <use xlink:href="images/sprite.svg#clip"></use>
43 </svg>
44 <span>Резюме капитана корабля</span>
45 </div>
46 <button type="button" class="file__list-item-right js-parent-remove">
47 <svg>
48 <use xlink:href="images/sprite.svg#cross-bold"></use>
49 </svg>
50 </button>
51 </div>
52 </div>
53 </div>
54 </div>
55 <div class="modal__form-item">
56 <button type="submit" class="button">Отправить</button>
57 </div>
58 </form>
59 </div>
60 </div>
61
resources/views/modals/send_employer.blade.php
File was created 1 <div id="send" class="modal">
2 <div class="modal__body">
3 <div class="modal__title">Отправить сообщение "Наяда"</div>
4 <div class="modal__text">Если у вас возникли вопросы насчет вакансии, вы можете задать их работодателю</div>
5 <form class="modal__form">
6 <div class="modal__form-item error">
7 <input id="i1" type="text" class="input" placeholder="Тема" required>
8 <label for="i1">Не заполнено поле</label>
9 </div>
10 <div class="modal__form-item">
11 <textarea id="i2" class="textarea" placeholder="Укажите по какому поводу вы пишите работодателю, уточните название вакансии или прикрепите ссылку на вакансию, дайте как можно больше информации.&#10;&#10;ВАЖНО не стоит писать работодателю короткий текст цитирую «Какая зарплата?, работодатель не поймет о чем речь, опишите вопрос максимально подробно»." required></textarea>
12 <label for="i2">Не заполнено поле</label>
13 </div>
14 <div class="modal__form-item">
15 <div class="file">
16 <label class="file__input">
17 <input type="file">
18 <span class="button button_light">
19 <svg>
20 <use xlink:href="images/sprite.svg#share"></use>
21 </svg>
22 Прикрепить резюме
23 </span>
24 </label>
25 <div class="file__list">
26 <div class="file__list-item">
27 <div class="file__list-item-left">
28 <svg>
29 <use xlink:href="images/sprite.svg#clip"></use>
30 </svg>
31 <span>image1.png</span>
32 </div>
33 <button type="button" class="file__list-item-right js-parent-remove">
34 <svg>
35 <use xlink:href="images/sprite.svg#cross-bold"></use>
36 </svg>
37 </button>
38 </div>
39 <div class="file__list-item">
40 <div class="file__list-item-left">
41 <svg>
42 <use xlink:href="images/sprite.svg#clip"></use>
43 </svg>
44 <span>Резюме капитана корабля</span>
45 </div>
46 <button type="button" class="file__list-item-right js-parent-remove">
47 <svg>
48 <use xlink:href="images/sprite.svg#cross-bold"></use>
49 </svg>
50 </button>
51 </div>
52 </div>
53 </div>
54 </div>
55 <div class="modal__form-item">
56 <button type="submit" class="button">Отправить</button>
57 </div>
58 </form>
59 </div>
60 </div>
61
resources/views/modals/send_login.blade.php
File was created 1 <div id="sign" class="modal">
2 <div class="modal__body">
3 <div class="modal__title left">Войти</div>
4 <form class="modal__sign">
5 <div class="modal__sign-item">
6 <input type="email" class="input" id="email" name="email" placeholder="E-mail" required>
7 </div>
8 <div class="modal__sign-item">
9 <input type="password" class="input" id="password" name="password" placeholder="Пароль" required>
10 <button type="button" class="eye">
11 <svg class="js-password-show">
12 <use xlink:href="{{ asset('images/sprite.svg#eye') }}"></use>
13 </svg>
14 <svg class="js-password-hide">
15 <use xlink:href="{{ asset('images/sprite.svg#eye-2') }}"></use>
16 </svg>
17 </button>
18 </div>
19 <div class="modal__sign-item">
20 <div class="modal__sign-bottom">
21 <div>
22 <label class="checkbox">
23 <input type="checkbox" id="save_me" name="save_me" class="checkbox__input" required>
24 <span class="checkbox__icon">
25 <svg>
26 <use xlink:href="{{ asset('images/sprite.svg#v') }}"></use>
27 </svg>
28 </span>
29 <span class="checkbox__text">
30 <span>
31 Запомнить меня
32 </span>
33 </span>
34 </label>
35 </div>
36 <div>
37 <a href="" class="modal__sign-bottom-link">Забыли пароль?</a>
38 </div>
39 </div>
40 </div>
41 <div class="modal__sign-item">
42 <a id="button_send" name="button_send" class="button">Войти</a>
43 </div>
44 </form>
45 <div class="modal__text">
46 <span>У Вас ещё нет аккаунта?</span>
47 &nbsp;
48 <a href="">Создать аккаунт</a>
49 </div>
50 </div>
51 </div>
52
resources/views/modals/send_worker.blade.php
File was created 1 <div id="send" class="modal">
2 <div class="modal__body">
3 <div class="modal__title">Отправить сообщение соискателю</div>
4 <div class="modal__text">Если у вас есть предложение для данного работника, напишите ему письмо</div>
5 <form class="modal__form" id="form_worker" name="form_worker">
6 <div class="modal__form-item error">
7 <input id="title" name="title" type="text" class="input" placeholder="Тема" required>
8 <label for="title">Не заполнено поле</label>
9 </div>
10 <div class="modal__form-item">
11 <textarea id="i2" class="textarea" id="text" name="text" placeholder="Напишите текст с предложением о работе" required></textarea>
12 <label for="i2">Не заполнено поле</label>
13 </div>
14 <div class="modal__form-item">
15 <div class="file">
16 <label class="file__input">
17 <input type="file" name="file" id="name">
18 <span class="button button_light">
19 <svg>
20 <use xlink:href="{{ asset('images/sprite.svg#share') }}"></use>
21 </svg>
22 Прикрепить файл-документ
23 </span>
24 </label>
25
26 <div class="file__list">
27 <div class="file__list-item">
28 <div class="file__list-item-left">
29 <svg>
30 <use xlink:href="{{ asset('images/sprite.svg#clip') }}"></use>
31 </svg>
32 <span id="name_file" name="name_file">123</span>
33 </div>
34 <button type="button" class="file__list-item-right js-parent-remove">
35 <svg>
36 <use xlink:href="{{ asset('images/sprite.svg#cross-bold') }}"></use>
37 </svg>
38 </button>
39 </div>
40 </div>
41 </div>
42 </div>
43 <div class="modal__form-item">
44 <button type="submit" class="button">Отправить</button>
45 </div>
46 </form>
47 </div>
48 </div>
49
resources/views/resume.blade.php
File was created 1 @extends('layout.frontend', ['title' => 'База резюме - РекаМоре'])
2
3 @section('scripts')
4 <script>
5 console.log('Test system');
6 $(document).on('change', '#jobs', function() {
7 var val = $(this).val();
8 var main_oskar = $('#main_ockar');
9
10 console.log('Code='+val);
11 console.log('Click change...');
12 $.ajax({
13 type: "GET",
14 url: "",
15 data: "job="+val,
16 success: function (data) {
17 console.log('Выбор сделан!');
18 console.log(data);
19 main_oskar.html(data);
20 },
21 headers: {
22 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
23 },
24 error: function (data) {
25 data = JSON.stringify(data);
26 console.log('Error: ' + data);
27 }
28 });
29 });
30 </script>
31 @endsection
32
33 @section('content')
34 <section class="thing">
35 <div class="container">
36 <form class="thing__body" action="{{ url()->current() }}">
37 <ul class="breadcrumbs thing__breadcrumbs">
38 <li><a href="{{ route('index') }}">Главная</a></li>
39 <li><b>База резюме</b></li>
40 </ul>
41 <h1 class="thing__title">База резюме</h1>
42 <p class="thing__text">С другой стороны, социально-экономическое развитие не оставляет шанса для
43 существующих финансовых и административных условий.</p>
44 <div class="search thing__search">
45 <input type="search" class="input" name="search" id="search" placeholder="Введите наименование должности" required>
46 <button type="submit" class="button">Найти</button>
47 <span>
48 <svg>
49 <use xlink:href="{{ asset('images/sprite.svg#search') }}"></use>
50 </svg>
51 </span>
52 </div>
53 <label class="checkbox thing__checkbox">
54 <input type="checkbox" class="checkbox__input" name="experience" id="experience">
55 <span class="checkbox__icon">
56 <svg>
57 <use xlink:href="{{ asset('images/sprite.svg#v') }}"></use>
58 </svg>
59 </span>
60 <span class="checkbox__text">
61 <span>
62 Опыт работы
63 </span>
64 </span>
65 </label>
66 </form>
67 </div>
68 </section>
69
70 <main class="main">
71 <div class="container">
72 <div class="main__resume-base">
73 <h2>Резюме работников</h2>
74 <div class="filters">
75 <div class="filters__label">Показано @if ($res_count > 0) 1 @else 0 @endif – @if($res_count < 5) {{ $res_count }} @else 5 @endif из {{ $res_count }} результатов поиска</div>
76 <div class="filters__body">
77 <div class="select filters__select">
78 <select class="js-select2" id="sort_ajax" name="sort_ajax">
79 <option value="default">Сортировка (по умолчанию)</option>
80 <option value="name (asc)">По имени (возрастание)</option>
81 <option value="name (desc)">По имени (убывание)</option>
82 <option value="created_at (asc)">По дате (возрастание)</option>
83 <option value="created_at (desc)">По дате (убывание)</option>
84 </select>
85 </div>
86 <button type="button" class="filters__item active" data-tab="1">
87 <svg>
88 <use xlink:href="{{ asset('images/sprite.svg#grid-1') }}"></use>
89 </svg>
90 </button>
91 <button type="button" class="filters__item" data-tab="2">
92 <svg>
93 <use xlink:href="{{ asset('images/sprite.svg#grid-2') }}"></use>
94 </svg>
95 </button>
96 </div>
97 </div>
98 <div class="main__resume-base-body showed" data-body="1">
99 <div class="main__resume-base-body-one">
100 @if ($resumes->count())
101 @foreach ($resumes as $res)
102 <div class="main__resume-base-body-item">
103 <div class="main__resume-base-body-item-buttons">
104 <button type="button" class="like js-toggle">
105 <svg>
106 <use xlink:href="{{ asset('images/sprite.svg#heart') }}"></use>
107 </svg>
108 </button>
109 <button type="button" class="chat js-toggle">
110 <svg>
111 <use xlink:href="{{ asset('images/sprite.svg#chat') }}"></use>
112 </svg>
113 </button>
114 </div>
115 <div class="main__resume-base-body-item-wrapper">
116 <img src="@isset ($res->photo) {{ asset(Storage::url($res->photo)) }} @else {{ asset('images/default_man.jpg')}} @endif" alt="" class="main__resume-base-body-item-photo">
117 <div class="main__resume-base-body-item-inner">
118 <div>
119 <b>Статус</b>
120 <span>{{ $status_work[$res->status_work] }}</span>
121 </div>
122 <div>
123 <b>Имя работника</b>
124 <span>@if (isset($res->users)){{ $res->users->surname." ".$res->users->name_man." ".$res->users->surname2 }} @endif</span>
125 </div>
126 <div>
127 <b>Номер телефона</b>
128 <span><a href="tel:{{ $res->telephone }}">{{ $res->telephone }}</a></span>
129 </div>
130 <div>
131 <b>Электронный адрес</b>
132 <span><a href="mailto:{{ $res->email }}">{{ $res->email }}</a></span>
133 </div>
134 <div>
135 <b>Город проживания</b>
136 <span>{{ $res->city }}</span>
137 </div>
138 <div>
139 <b>Опыт работы</b>
140 <span>{{ $res->experience }}</span>
141 </div>
142 </div>
143 </div>
144 <a href="{{ route('resume_profile', ['worker' => $res->id]) }}" class="button button_light main__resume-base-body-item-link">Перейти в резюме</a>
145 </div>
146 @endforeach
147
148 {{ $resumes->appends($_GET)->links('paginate') }}
149 @endif
150 </div>
151 </div>
152 <div class="main__resume-base-body" data-body="2">
153 <div class="main__resume-base-body-two">
154 <div class="main__resume-base-body-item">
155 <div class="main__resume-base-body-item-buttons">
156 <button type="button" class="like js-toggle">
157 <svg>
158 <use xlink:href="images/sprite.svg#heart"></use>
159 </svg>
160 </button>
161 <button type="button" class="chat js-toggle">
162 <svg>
163 <use xlink:href="images/sprite.svg#chat"></use>
164 </svg>
165 </button>
166 </div>
167 <div class="main__resume-base-body-item-wrapper">
168 <img src="images/face.jpg" alt="" class="main__resume-base-body-item-photo">
169 <div class="main__resume-base-body-item-inner">
170 <div>
171 <b>Статус</b>
172 <span>Ищу работу</span>
173 </div>
174 <div>
175 <b>Имя работника</b>
176 <span>Назаров Платон Фёдорович</span>
177 </div>
178 <div>
179 <b>Номер телефона</b>
180 <span><a href="#">+7 (000) 123 45 67</a></span>
181 </div>
182 <div>
183 <b>Электронный адрес</b>
184 <span><a href="#">info@rekamore.su</a></span>
185 </div>
186 <div>
187 <b>Город проживания</b>
188 <span>Новосибирск</span>
189 </div>
190 <div>
191 <b>Опыт работы на танкерах</b>
192 <span>12 лет</span>
193 </div>
194 </div>
195 </div>
196 <a href="#" class="button button_light main__resume-base-body-item-link">Перейти в
197 резюме</a>
198 </div>
199 <div class="main__resume-base-body-item">
200 <div class="main__resume-base-body-item-buttons">
201 <button type="button" class="like js-toggle">
202 <svg>
203 <use xlink:href="images/sprite.svg#heart"></use>
204 </svg>
205 </button>
206 <button type="button" class="chat js-toggle">
207 <svg>
208 <use xlink:href="images/sprite.svg#chat"></use>
209 </svg>
210 </button>
211 </div>
212 <div class="main__resume-base-body-item-wrapper">
213 <img src="images/face.jpg" alt="" class="main__resume-base-body-item-photo">
214 <div class="main__resume-base-body-item-inner">
215 <div>
216 <b>Статус</b>
217 <span>Ищу работу</span>
218 </div>
219 <div>
220 <b>Имя работника</b>
221 <span>Назаров Платон Фёдорович</span>
222 </div>
223 <div>
224 <b>Номер телефона</b>
225 <span><a href="#">+7 (000) 123 45 67</a></span>
226 </div>
227 <div>
228 <b>Электронный адрес</b>
229 <span><a href="#">info@rekamore.su</a></span>
230 </div>
231 <div>
232 <b>Город проживания</b>
233 <span>Новосибирск</span>
234 </div>
235 <div>
236 <b>Опыт работы на танкерах</b>
237 <span>12 лет</span>
238 </div>
239 </div>
240 </div>
241 <a href="#" class="button button_light main__resume-base-body-item-link">Перейти в
242 резюме</a>
243 </div>
244 <div class="main__resume-base-body-item">
245 <div class="main__resume-base-body-item-buttons">
246 <button type="button" class="like js-toggle">
247 <svg>
248 <use xlink:href="images/sprite.svg#heart"></use>
249 </svg>
250 </button>
251 <button type="button" class="chat js-toggle">
252 <svg>
253 <use xlink:href="images/sprite.svg#chat"></use>
254 </svg>
255 </button>
256 </div>
257 <div class="main__resume-base-body-item-wrapper">
258 <img src="images/face.jpg" alt="" class="main__resume-base-body-item-photo">
259 <div class="main__resume-base-body-item-inner">
260 <div>
261 <b>Статус</b>
262 <span>Ищу работу</span>
263 </div>
264 <div>
265 <b>Имя работника</b>
266 <span>Назаров Платон Фёдорович</span>
267 </div>
268 <div>
269 <b>Номер телефона</b>
270 <span><a href="#">+7 (000) 123 45 67</a></span>
271 </div>
272 <div>
273 <b>Электронный адрес</b>
274 <span><a href="#">info@rekamore.su</a></span>
275 </div>
276 <div>
277 <b>Город проживания</b>
278 <span>Новосибирск</span>
279 </div>
280 <div>
281 <b>Опыт работы на танкерах</b>
282 <span>12 лет</span>
283 </div>
284 </div>
285 </div>
286 <a href="#" class="button button_light main__resume-base-body-item-link">Перейти в
287 резюме</a>
288 </div>
289 <div class="main__resume-base-body-item">
290 <div class="main__resume-base-body-item-buttons">
291 <button type="button" class="like js-toggle">
292 <svg>
293 <use xlink:href="images/sprite.svg#heart"></use>
294 </svg>
295 </button>
296 <button type="button" class="chat js-toggle">
297 <svg>
298 <use xlink:href="images/sprite.svg#chat"></use>
299 </svg>
300 </button>
301 </div>
302 <div class="main__resume-base-body-item-wrapper">
303 <img src="images/face.jpg" alt="" class="main__resume-base-body-item-photo">
304 <div class="main__resume-base-body-item-inner">
305 <div>
306 <b>Статус</b>
307 <span>Ищу работу</span>
308 </div>
309 <div>
310 <b>Имя работника</b>
311 <span>Назаров Платон Фёдорович</span>
312 </div>
313 <div>
314 <b>Номер телефона</b>
315 <span><a href="#">+7 (000) 123 45 67</a></span>
316 </div>
317 <div>
318 <b>Электронный адрес</b>
319 <span><a href="#">info@rekamore.su</a></span>
320 </div>
321 <div>
322 <b>Город проживания</b>
323 <span>Новосибирск</span>
324 </div>
325 <div>
326 <b>Опыт работы на танкерах</b>
327 <span>12 лет</span>
328 </div>
329 </div>
330 </div>
331 <a href="#" class="button button_light main__resume-base-body-item-link">Перейти в
332 резюме</a>
333 </div>
334 <div class="main__resume-base-body-item">
335 <div class="main__resume-base-body-item-buttons">
336 <button type="button" class="like js-toggle">
337 <svg>
338 <use xlink:href="images/sprite.svg#heart"></use>
339 </svg>
340 </button>
341 <button type="button" class="chat js-toggle">
342 <svg>
343 <use xlink:href="images/sprite.svg#chat"></use>
344 </svg>
345 </button>
346 </div>
347 <div class="main__resume-base-body-item-wrapper">
348 <img src="images/face.jpg" alt="" class="main__resume-base-body-item-photo">
349 <div class="main__resume-base-body-item-inner">
350 <div>
351 <b>Статус</b>
352 <span>Ищу работу</span>
353 </div>
354 <div>
355 <b>Имя работника</b>
356 <span>Назаров Платон Фёдорович</span>
357 </div>
358 <div>
359 <b>Номер телефона</b>
360 <span><a href="#">+7 (000) 123 45 67</a></span>
361 </div>
362 <div>
363 <b>Электронный адрес</b>
364 <span><a href="#">info@rekamore.su</a></span>
365 </div>
366 <div>
367 <b>Город проживания</b>
368 <span>Новосибирск</span>
369 </div>
370 <div>
371 <b>Опыт работы на танкерах</b>
372 <span>12 лет</span>
373 </div>
374 </div>
375 </div>
376 <a href="#" class="button button_light main__resume-base-body-item-link">Перейти в
377 резюме</a>
378 </div>
379 <div class="main__resume-base-body-item">
380 <div class="main__resume-base-body-item-buttons">
381 <button type="button" class="like js-toggle">
382 <svg>
383 <use xlink:href="images/sprite.svg#heart"></use>
384 </svg>
385 </button>
386 <button type="button" class="chat js-toggle">
387 <svg>
388 <use xlink:href="images/sprite.svg#chat"></use>
389 </svg>
390 </button>
391 </div>
392 <div class="main__resume-base-body-item-wrapper">
393 <img src="images/face.jpg" alt="" class="main__resume-base-body-item-photo">
394 <div class="main__resume-base-body-item-inner">
395 <div>
396 <b>Статус</b>
397 <span>Ищу работу</span>
398 </div>
399 <div>
400 <b>Имя работника</b>
401 <span>Назаров Платон Фёдорович</span>
402 </div>
403 <div>
404 <b>Номер телефона</b>
405 <span><a href="#">+7 (000) 123 45 67</a></span>
406 </div>
407 <div>
408 <b>Электронный адрес</b>
409 <span><a href="#">info@rekamore.su</a></span>
410 </div>
411 <div>
412 <b>Город проживания</b>
413 <span>Новосибирск</span>
414 </div>
415 <div>
416 <b>Опыт работы на танкерах</b>
417 <span>12 лет</span>
418 </div>
419 </div>
420 </div>
421 <a href="#" class="button button_light main__resume-base-body-item-link">Перейти в
422 резюме</a>
423 </div>
424 <div class="pagination">
425 <a href="#" class="pagination__nav pagination__nav_prev">
426 <svg>
427 <use xlink:href="images/sprite.svg#arrow-bold"></use>
428 </svg>
429 </a>
430 <span class="pagination__item active">1</span>
431 <a href="#" class="pagination__item">2</a>
432 <a href="#" class="pagination__item">3</a>
433 <a href="#" class="pagination__item">4</a>
434 <a href="#" class="pagination__item">5</a>
435 <span class="pagination__dots">
436 <svg>
437 <use xlink:href="images/sprite.svg#dots"></use>
438 </svg>
439 </span>
440 <a href="#" class="pagination__item">25</a>
441 <a href="#" class="pagination__nav pagination__nav_next">
442 <svg>
443 <use xlink:href="images/sprite.svg#arrow-bold"></use>
444 </svg>
445 </a>
446 </div>
447 </div>
448 </div>
449 </div>
450 </div>
451 </main>
452 </div>
453 </div>
454 @endsection
455
resources/views/vacancies.blade.php
1 @extends('layout.frontend', ['title' => 'Вакансии РекаМоре']) 1 @extends('layout.frontend', ['title' => 'Вакансии РекаМоре'])
2 2
3 @section('scripts') 3 @section('scripts')
4 <script> 4 <script>
5 console.log('Test system'); 5 console.log('Test system');
6 $(document).on('change', '.jobs', function() { 6 $(document).on('change', '.jobs', function() {
7 var val = $(this).val(); 7 var val = $(this).val();
8 8
9 console.log('Click change...'); 9 console.log('Click change...');
10 $.ajax({ 10 $.ajax({
11 type: "GET", 11 type: "GET",
12 url: "{{ route('vacancies') }}", 12 url: "{{ route('vacancies') }}",
13 data: "job="+val, 13 data: "job="+val,
14 success: function (data) { 14 success: function (data) {
15 console.log('Выбор должности'); 15 console.log('Выбор должности');
16 console.log(data); 16 console.log(data);
17 $('#block_ajax').html(data); 17 $('#block_ajax').html(data);
18 }, 18 },
19 headers: { 19 headers: {
20 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 20 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
21 }, 21 },
22 error: function (data) { 22 error: function (data) {
23 data = JSON.stringify(data); 23 data = JSON.stringify(data);
24 console.log('Error: ' + data); 24 console.log('Error: ' + data);
25 } 25 }
26 }); 26 });
27 }); 27 });
28 </script> 28 </script>
29 @endsection 29 @endsection
30 30
31 @section('content') 31 @section('content')
32 <section class="thing"> 32 <section class="thing">
33 <div class="container"> 33 <div class="container">
34 <form class="thing__body"> 34 <form class="thing__body">
35 <ul class="breadcrumbs thing__breadcrumbs"> 35 <ul class="breadcrumbs thing__breadcrumbs">
36 <li><a href="{{ route('index') }}">Главная</a></li> 36 <li><a href="{{ route('index') }}">Главная</a></li>
37 <li><b>Вакансии</b></li> 37 <li><b>Вакансии</b></li>
38 </ul> 38 </ul>
39 <h1 class="thing__title">Вакансии</h1> 39 <h1 class="thing__title">Вакансии</h1>
40 <p class="thing__text">С другой стороны, социально-экономическое развитие не оставляет шанса для 40 <p class="thing__text">С другой стороны, социально-экономическое развитие не оставляет шанса для
41 существующих финансовых и административных условий.</p> 41 существующих финансовых и административных условий.</p>
42 <div class="select select_search thing__select"> 42 <div class="select select_search thing__select">
43 <div class="select__icon"> 43 <div class="select__icon">
44 <svg> 44 <svg>
45 <use xlink:href="{{ asset('images/sprite.svg#search') }}"></use> 45 <use xlink:href="{{ asset('images/sprite.svg#search') }}"></use>
46 </svg> 46 </svg>
47 </div> 47 </div>
48 <select class="js-select2 jobs" id="jobs" name="jobs"> 48 <select class="js-select2 jobs" id="jobs" name="jobs">
49 <option value="0" disabled selected>Выберите должность</option> 49 <option value="0">Выберите должность</option>
50 @if ($Job_title->count()) 50 @if ($Job_title->count())
51 @foreach($Job_title as $JT) 51 @foreach($Job_title as $JT)
52 <option value="{{ $JT->id }}">{{ $JT->name }}</option> 52 <option value="{{ $JT->id }}" @if ((isset($_GET['job'])) && ($_GET['job'] == $JT->id)) selected @endif>{{ $JT->name }}</option>
53 @endforeach 53 @endforeach
54 @endif 54 @endif
55 </select> 55 </select>
56 </div> 56 </div>
57 </form> 57 </form>
58 </div> 58 </div>
59 </section> 59 </section>
60 <main class="main"> 60 <main class="main">
61 <div class="container"> 61 <div class="container">
62 <div class="main__vacancies"> 62 <div class="main__vacancies">
63 <h2 class="main__vacancies-title">Категории вакансий</h2> 63 <h2 class="main__vacancies-title">Категории вакансий</h2>
64 <div class="vacancies__body"> 64 <div class="vacancies__body">
65 <!--<button class="vacancies__more button button_more button_light js-toggle js-parent-toggle"> 65 <!--<button class="vacancies__more button button_more button_light js-toggle js-parent-toggle">
66 <span>Показать ещё</span> 66 <span>Показать ещё</span>
67 <span>Скрыть</span> 67 <span>Скрыть</span>
68 </button>--> 68 </button>-->
69 <div class="vacancies__list" id="block_ajax" name="block_ajax"> 69 <div class="vacancies__list" id="block_ajax" name="block_ajax">
70 @php $colors = Array('#F4C4C2', '#FBF1C8', '#ECFDEF', '#F3ECF6', '#ECFDEF'); 70 @php $colors = Array('#F4C4C2', '#FBF1C8', '#ECFDEF', '#F3ECF6', '#ECFDEF');
71 $i = 0; 71 $i = 0;
72 @endphp 72 @endphp
73 @if ($categories->count()) 73 @if ($categories->count())
74 @foreach ($categories as $cat) 74 @foreach ($categories as $cat)
75 <a href="{{ route('list-vacancies', ['categories' => $cat->id]) }}" class="vacancies__item"> 75 <a href="{{ route('list-vacancies', ['categories' => $cat->id]) }}" class="vacancies__item">
76 <span style="border-color:{{$colors[$i]}}"> 76 <span style="border-color:{{$colors[$i]}}">
77 <b>{{ $cat->name }}</b> 77 <b>{{ $cat->name }}</b>
78 <u>{{ $cat->min_salary }} &mdash; {{ $cat->max_salary }} ₽</u> 78 <u>{{ $cat->min_salary }} &mdash; {{ $cat->max_salary }} ₽</u>
79 <i>Вакансий: <span>{{ $cat->cnt }}</span></i> 79 <i>Вакансий: <span>{{ $cat->cnt }}</span></i>
80 </span> 80 </span>
81 </a> 81 </a>
82 @php $i++; 82 @php $i++;
83 if ($i > 4) {$i = 0;} 83 if ($i > 4) {$i = 0;}
84 @endphp 84 @endphp
85 @endforeach 85 @endforeach
86 @else 86 @else
87 Тут пока нет никаких вакансий 87 Тут пока нет никаких вакансий
88 @endif 88 @endif
89 </div> 89 </div>
90 </div> 90 </div>
91 </div> 91 </div>
92 </div> 92 </div>
93 </main> 93 </main>
94 </div> 94 </div>
95 @endsection 95 @endsection
96 96
resources/views/worker.blade.php
File was created 1 @extends('layout.frontend', ['title' => 'Карточка соискателя - РекаМоре'])
2
3 @section('scripts')
4 <script>
5 console.log('Test system');
6 $(document).on('change', '#jobs', function() {
7 var val = $(this).val();
8 var main_oskar = $('#main_ockar');
9
10 console.log('Code='+val);
11 console.log('Click change...');
12 $.ajax({
13 type: "GET",
14 url: "",
15 data: "job="+val,
16 success: function (data) {
17 console.log('Выбор сделан!');
18 console.log(data);
19 main_oskar.html(data);
20 },
21 headers: {
22 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
23 },
24 error: function (data) {
25 data = JSON.stringify(data);
26 console.log('Error: ' + data);
27 }
28 });
29 });
30 </script>
31 @endsection
32
33 @section('content')
34 <section class="thing">
35 <div class="container">
36 <ul class="breadcrumbs thing__breadcrumbs">
37 <li><a href="{{ route('index') }}">Главная</a></li>
38 <li><a href="{{ route('bd_resume') }}">База резюме</a></li>
39 <li><b>@if (isset($Query[0]->users)) {{ $Query[0]->users->surname." ".$Query[0]->users->name_man." ".$Query[0]->users->surname2 }} @else Неизвестно @endif</b></li>
40 </ul>
41 <div class="thing__profile">
42 <img src="@isset($Query->photo) {{ asset(Storage::url($Query->photo)) }} @else {{ asset('images/default_man.jpg') }} @endif" alt="" class="thing__profile-photo">
43 <div class="thing__profile-body">
44 <h1 class="thing__title">@if (isset($Query[0]->users)) {{ $Query[0]->users->surname." ".$Query[0]->users->name_man." ".$Query[0]->users->surname2 }} @else Неизвестно @endif</h1>
45 <p class="thing__text">Сложно сказать, почему ключевые особенности структуры проекта рассмотрены
46 исключительно в разрезе маркетинговых и финансовых предпосылок.</p>
47 <div class="thing__bottom">
48 <a class="button" href="{{ route('resume_download', ['worker' => $Query[0]->id]) }}">
49 Скачать резюме
50 <svg>
51 <use xlink:href="{{ asset('images/sprite.svg#download') }}"></use>
52 </svg>
53 </a>
54 <button type="button" class="like js-toggle">
55 <svg>
56 <use xlink:href="{{ asset('images/sprite.svg#heart') }}"></use>
57 </svg>
58 </button>
59 </div>
60 </div>
61 </div>
62 </div>
63 </section>
64 <main class="main">
65 <div class="container">
66 <div class="main__resume-profile">
67 <div class="main__content">
68 <div class="main__spoiler">
69 <button type="button" class="main__spoiler-toper js-toggle active">
70 Основная информация</button>
71
72 <div class="main__spoiler-body">
73 <table class="main__table">
74 <tbody>
75 <tr>
76 <td>Имя:</td>
77 <td><b>{{ $Query[0]->users->name_man }}</b></td>
78 </tr>
79 <tr>
80 <td>Должность:</td>
81 <td><b>@if (isset($Query[0]->job_titles)) {{ $Query[0]->job_titles[0]->name }} @else Не указано @endif</b></td>
82 </tr>
83 <tr>
84 <td>Телефон:</td>
85 <td><b><a href="tel:{{ $Query[0]->telephone }}">{{ $Query[0]->telephone }}</a></b></td>
86 </tr>
87 <tr>
88 <td>E-mail:</td>
89 <td><b><a href="emailto:{{ $Query[0]->email }}">{{ $Query[0]->email }}</a></b></td>
90 </tr>
91 <tr>
92 <td>Возраст:</td>
93 <td><b>{{ $Query[0]->old_year }}</b></td>
94 </tr>
95 <tr>
96 <td>Статус:</td>
97 <td><b>{{ $status_work[$Query[0]->status_work] }}</b></td>
98 </tr>
99 <tr>
100 <td>Город проживания:</td>
101 <td><b>{{ $Query[0]->city }}</b></td>
102 </tr>
103 <tr>
104 <td>Уровень английского:</td>
105 <td><b>{{ $Query[0]->en_is }}</b></td>
106 </tr>
107 <tr>
108 <td>Опыт работы:</td>
109 <td><b>{{ $Query[0]->experience }}</b></td>
110 </tr>
111 </tbody>
112 </table>
113 </div>
114 </div>
115 <div class="main__spoiler">
116 <button type="button" class="main__spoiler-toper js-toggle">Сертификаты / документы</button>
117 <div class="main__spoiler-body">
118
119 @if (isset($Query[0]->sertificate))
120 @if ($Query[0]->sertificate->count())
121 @foreach($Query[0]->sertificate as $it)
122 <table class="main__table">
123 <tbody>
124 <tr>
125 <td>Название сертификата:</td>
126 <td><b>{{ $it->name }}</b></td>
127 </tr>
128 <tr>
129 <td>Организация выдавшая документ:</td>
130 <td><b>{{ $it->education }}</b></td>
131 </tr>
132 <tr>
133 <td>Дата начала обучения:</td>
134 <td><b>{{ $it->date_begin }}</b></td>
135 </tr>
136 <tr>
137 <td>Дата конца обучения:</td>
138 <td><b>{{ $it->end_begin }}</b></td>
139 </tr>
140 </tbody>
141 </table>
142 <br>
143 @endforeach
144 @endif
145 @endif
146 </div>
147 </div>
148
149 <div class="main__spoiler">
150 <button type="button" class="main__spoiler-toper js-toggle">Опыт работы</button>
151 <div class="main__spoiler-body">
152
153 @if (isset($Query[0]->place_worker))
154 @if ($Query[0]->place_worker->count())
155 @foreach($Query[0]->place_worker as $it)
156
157 <table class="main__table">
158 <tbody>
159 <tr>
160 <td>Должность:</td>
161 <td><b>{{ $it->job_title }}</b></td>
162 </tr>
163 <tr>
164 <td>Опыт работы в танкерном флоте:</td>
165 <td><b>@if($it->tanker==1) Есть @else Нет @endif</b></td>
166 </tr>
167 <tr>
168 <td>Дата начала работы:</td>
169 <td><b>{{ $it->begin_work }}</b></td>
170 </tr>
171 <tr>
172 <td>Дата конца работы:</td>
173 <td><b>{{ $it->end_work }}</b></td>
174 </tr>
175 <tr>
176 <td>Название компании:</td>
177 <td><b>{{ $it->name_company }}</b></td>
178 </tr>
179 <tr>
180 <td>GWT тип</td>
181 <td><b>{{ $it->GWT }}</b></td>
182 </tr>
183 <tr>
184 <td>ГД:</td>
185 <td><b>{{ $it->KBT }}</b></td>
186 </tr>
187 </tbody>
188 </table>
189 <br>
190 @endforeach
191 @endif
192 @endif
193 </div>
194 </div>
195
196 <div class="main__spoiler">
197 <button type="button" class="main__spoiler-toper js-toggle">Дополнительные документы</button>
198 <div class="main__spoiler-body">
199
200 @if (isset($Query[0]->infobloks))
201 @if ($Query[0]->infobloks->count())
202 <table class="main__table">
203 <tbody>
204 @foreach($Query[0]->infobloks as $it)
205 <tr>
206 <td>Документ:</td>
207 <td><b>{{ $it->name }}</b></td>
208 </tr>
209 @endforeach
210 </tbody>
211 </table>
212 @endif
213 @endif
214 </div>
215 </div>
216 </div>
217 <div class="main__resume-profile-about">
218 <h2 class="main__resume-profile-about-title">О себе</h2>
219 <p class="main__resume-profile-about-text">{{ $Query[0]->text }}</p>
220 <div class="button main__resume-profile-about-button" data-fancybox data-src="#send" data-options='{"touch":false,"autoFocus":false}'>Написать сообщение</div>
221 </div>
222 <div class="main__resume-profile-info">
223 <h2 class="main__resume-profile-info-title">Данные о прошлых компаниях</h2>
224 <div class="main__resume-profile-info-body">
225
226 @if (isset($Query[0]->prev_company))
227 @if ($Query[0]->prev_company->count())
228 @foreach ($Query[0]->prev_company as $it)
229 <div class="main__resume-profile-info-body-item">
230 <h3 class="main__resume-profile-info-body-subtitle">{{ $it->name_company }}</h3>
231 <ul class="main__resume-profile-info-body-inner">
232 <li>
233 <b>Руководитель</b>
234 <span>{{ $it->direct }}</span>
235 </li>
236 <li>
237 <b>Телефон того, кто может дать рекомендацию</b>
238 <span>
239 @if (!empty($it->telephone))
240 <a href="tel:{{$it->telephone }}">{{ $it->telephone }}</a>
241 @endif
242 @if (!empty($it->telephone2))
243 <a href="tel:{{$it->telephone2 }}">{{ $it->telephone2 }}</a>
244 @endif
245 </span>
246 </li>
247 </ul>
248 </div>
249 @endforeach
250 @endif
251 @endif
252 </div>
253 </div>
254 <div class="main__resume-profile-review">
255 <h2 class="main__resume-profile-review-title">Оставить отзыв о работнике</h2>
256 <div class="rate">
257 <div class="rate__label">Ваша оценка:</div>
258 <div class="rate__stars">
259 <img src="{{ asset('images/stars.svg') }}" alt="">
260 </div>
261 </div>
262 <div class="main__resume-profile-review-body">
263 <h3>Ваш отзыв</h3>
264 <textarea class="textarea" placeholder="Текст отзыва&hellip;" required></textarea>
265 <button type="submit" class="button">Оставить отзыв</button>
266 </div>
267 </div>
268 </div>
269 </div>
270 </main>
271 </div>
272 @endsection
273
1 <?php 1 <?php
2 2
3 use App\Http\Controllers\AdEmployerController; 3 use App\Http\Controllers\AdEmployerController;
4 use App\Http\Controllers\Admin\AdminController; 4 use App\Http\Controllers\Admin\AdminController;
5 use App\Http\Controllers\Admin\CategoryController; 5 use App\Http\Controllers\Admin\CategoryController;
6 use App\Http\Controllers\Admin\CategoryEmpController; 6 use App\Http\Controllers\Admin\CategoryEmpController;
7 use App\Http\Controllers\Admin\EducationController; 7 use App\Http\Controllers\Admin\EducationController;
8 use App\Http\Controllers\Admin\EmployersController; 8 use App\Http\Controllers\Admin\EmployersController;
9 use App\Http\Controllers\EmployerController as FrontEmployersController; 9 use App\Http\Controllers\EmployerController as FrontEmployersController;
10 use App\Http\Controllers\Admin\InfoBloksController; 10 use App\Http\Controllers\Admin\InfoBloksController;
11 use App\Http\Controllers\Admin\JobTitlesController; 11 use App\Http\Controllers\Admin\JobTitlesController;
12 use App\Http\Controllers\Admin\UsersController; 12 use App\Http\Controllers\Admin\UsersController;
13 use App\Http\Controllers\Admin\WorkersController; 13 use App\Http\Controllers\Admin\WorkersController;
14 use App\Http\Controllers\Auth\ForgotPasswordController; 14 use App\Http\Controllers\Auth\ForgotPasswordController;
15 use App\Http\Controllers\Auth\LoginController; 15 use App\Http\Controllers\Auth\LoginController;
16 use App\Http\Controllers\Auth\RegisterController; 16 use App\Http\Controllers\Auth\RegisterController;
17 use App\Http\Controllers\CKEditorController; 17 use App\Http\Controllers\CKEditorController;
18 use App\Http\Controllers\MediaController; 18 use App\Http\Controllers\MediaController;
19 use App\Http\Controllers\WorkerController; 19 use App\Http\Controllers\WorkerController;
20 use App\Models\User; 20 use App\Models\User;
21 use App\Http\Controllers\MainController; 21 use App\Http\Controllers\MainController;
22 use App\Http\Controllers\HomeController; 22 use App\Http\Controllers\HomeController;
23 use Illuminate\Support\Facades\Route; 23 use Illuminate\Support\Facades\Route;
24 use App\Http\Controllers\Admin\CompanyController; 24 use App\Http\Controllers\Admin\CompanyController;
25 use App\Http\Controllers\Admin\Ad_EmployersController; 25 use App\Http\Controllers\Admin\Ad_EmployersController;
26 use App\Http\Controllers\Admin\MsgAnswersController; 26 use App\Http\Controllers\Admin\MsgAnswersController;
27 use App\Http\Controllers\Admin\GroupsController; 27 use App\Http\Controllers\Admin\GroupsController;
28 use App\Http\Controllers\PagesController; 28 use App\Http\Controllers\PagesController;
29 use Illuminate\Support\Facades\Storage; 29 use Illuminate\Support\Facades\Storage;
30 use App\Http\Controllers\EmployerController; 30 use App\Http\Controllers\EmployerController;
31 use App\Http\Controllers\CompanyController as FrontCompanyController; 31 use App\Http\Controllers\CompanyController as FrontCompanyController;
32 32
33 33
34 /* 34 /*
35 |-------------------------------------------------------------------------- 35 |--------------------------------------------------------------------------
36 | Web Routes 36 | Web Routes
37 |-------------------------------------------------------------------------- 37 |--------------------------------------------------------------------------
38 | 38 |
39 | Here is where you can register web routes for your application. These 39 | Here is where you can register web routes for your application. These
40 | routes are loaded by the RouteServiceProvider within a group which 40 | routes are loaded by the RouteServiceProvider within a group which
41 | contains the "web" middleware group. Now create something great! 41 | contains the "web" middleware group. Now create something great!
42 | 42 |
43 */ 43 */
44 /* 44 /*
45 Route::get('/', function () { 45 Route::get('/', function () {
46 return view('welcome'); 46 return view('welcome');
47 })->name('index'); 47 })->name('index');
48 */ 48 */
49 Route::get('/', [MainController::class, 'index'])->name('index'); 49 Route::get('/', [MainController::class, 'index'])->name('index');
50 50
51 //Роуты авторизации, регистрации, восстановления, аутентификации 51 //Роуты авторизации, регистрации, восстановления, аутентификации
52 Auth::routes(['verify' => true]); 52 Auth::routes(['verify' => true]);
53 53
54 // роуты регистрации, авторизации, восстановления пароля, верификации почты 54 // роуты регистрации, авторизации, восстановления пароля, верификации почты
55 /*Route::group([ 55 /*Route::group([
56 'as' => 'auth.', //имя маршрута, например auth.index 56 'as' => 'auth.', //имя маршрута, например auth.index
57 'prefix' => 'auth', // префикс маршрута, например, auth/index 57 'prefix' => 'auth', // префикс маршрута, например, auth/index
58 ], function () { 58 ], function () {
59 //форма регистрации 59 //форма регистрации
60 Route::get('register', [RegisterController::class, 'register'])->name('register'); 60 Route::get('register', [RegisterController::class, 'register'])->name('register');
61 61
62 //создание пользователя 62 //создание пользователя
63 Route::post('register', [RegisterController::class, 'create'])->name('create'); 63 Route::post('register', [RegisterController::class, 'create'])->name('create');
64 64
65 //форма входа авторизации 65 //форма входа авторизации
66 Route::get('login', [LoginController::class, 'login'])->name('login'); 66 Route::get('login', [LoginController::class, 'login'])->name('login');
67 67
68 //аутентификация 68 //аутентификация
69 Route::post('login', [LoginController::class, 'authenticate'])->name('auth'); 69 Route::post('login', [LoginController::class, 'authenticate'])->name('auth');
70 70
71 //выход 71 //выход
72 Route::get('logout', [LoginController::class, 'logout'])->name('logout'); 72 Route::get('logout', [LoginController::class, 'logout'])->name('logout');
73 73
74 //форма ввода адреса почты 74 //форма ввода адреса почты
75 Route::get('forgot-password', [ForgotPasswordController::class, 'form'])->name('forgot-form'); 75 Route::get('forgot-password', [ForgotPasswordController::class, 'form'])->name('forgot-form');
76 76
77 //письмо на почту 77 //письмо на почту
78 Route::post('forgot-password', [ForgotPasswordController::class, 'mail'])->name('forgot-mail'); 78 Route::post('forgot-password', [ForgotPasswordController::class, 'mail'])->name('forgot-mail');
79 79
80 //форма восстановления пароля 80 //форма восстановления пароля
81 Route::get('reset-password/token/{token}/email/{email}', 81 Route::get('reset-password/token/{token}/email/{email}',
82 [ResetPasswordController::class, 'form'] 82 [ResetPasswordController::class, 'form']
83 )->name('reset-form'); 83 )->name('reset-form');
84 84
85 //восстановление пароля 85 //восстановление пароля
86 Route::post('reset-password', 86 Route::post('reset-password',
87 [ResetPasswordController::class, 'reset'] 87 [ResetPasswordController::class, 'reset']
88 )->name('reset-password'); 88 )->name('reset-password');
89 89
90 //сообщение о необходимости проверки адреса почты 90 //сообщение о необходимости проверки адреса почты
91 Route::get('verify-message', [VerifyEmailController::class, 'message'])->name('verify-message'); 91 Route::get('verify-message', [VerifyEmailController::class, 'message'])->name('verify-message');
92 92
93 //подтверждение адреса почты нового пользователя 93 //подтверждение адреса почты нового пользователя
94 Route::get('verify-email/token/{token}/id/{id}', [VerifyEmailController::class, 'verify']) 94 Route::get('verify-email/token/{token}/id/{id}', [VerifyEmailController::class, 'verify'])
95 ->where('token', '[a-f0-9]{32}') 95 ->where('token', '[a-f0-9]{32}')
96 ->where('id', '[0-9]+') 96 ->where('id', '[0-9]+')
97 ->name('verify-email'); 97 ->name('verify-email');
98 });*/ 98 });*/
99 99
100 //Личный кабинет пользователя 100 //Личный кабинет пользователя
101 Route::get('/home', [HomeController::class, 'index'])->name('home'); 101 Route::get('/home', [HomeController::class, 'index'])->name('home');
102 102
103 /* 103 /*
104 Route::post('resend/verification-email', function (\Illuminate\Http\Request $request) { 104 Route::post('resend/verification-email', function (\Illuminate\Http\Request $request) {
105 $user = User::where('email',$request->input('email'))->first(); 105 $user = User::where('email',$request->input('email'))->first();
106 106
107 $user->sendEmailVerificationNotification(); 107 $user->sendEmailVerificationNotification();
108 108
109 return 'your response'; 109 return 'your response';
110 })->middleware('throttle:6,1')->name('verification.resend'); 110 })->middleware('throttle:6,1')->name('verification.resend');
111 */ 111 */
112 112
113 // Авторизация, регистрация в админку 113 // Авторизация, регистрация в админку
114 Route::group([ 114 Route::group([
115 'as' => 'admin.', // имя маршрута, например auth.index 115 'as' => 'admin.', // имя маршрута, например auth.index
116 'prefix' => 'admin', // префикс маршрута, например auth/index 116 'prefix' => 'admin', // префикс маршрута, например auth/index
117 'middleware' => ['guest'], 117 'middleware' => ['guest'],
118 ], function () { 118 ], function () {
119 // Форма регистрации 119 // Форма регистрации
120 Route::get('register', [AdminController::class, 'register'])->name('register'); 120 Route::get('register', [AdminController::class, 'register'])->name('register');
121 // Создание пользователя 121 // Создание пользователя
122 Route::post('register', [AdminController::class, 'create'])->name('create'); 122 Route::post('register', [AdminController::class, 'create'])->name('create');
123 123
124 //Форма входа 124 //Форма входа
125 Route::get('login', [AdminController::class, 'login'])->name('login'); 125 Route::get('login', [AdminController::class, 'login'])->name('login');
126 126
127 // аутентификация 127 // аутентификация
128 Route::post('login', [AdminController::class, 'autenticate'])->name('auth'); 128 Route::post('login', [AdminController::class, 'autenticate'])->name('auth');
129 129
130 }); 130 });
131 131
132 // Личный кабинет админки 132 // Личный кабинет админки
133 Route::group([ 133 Route::group([
134 'as' => 'admin.', // имя маршрута, например auth.index 134 'as' => 'admin.', // имя маршрута, например auth.index
135 'prefix' => 'admin', // префикс маршрута, например auth/index 135 'prefix' => 'admin', // префикс маршрута, например auth/index
136 'middleware' => ['auth'], ['admin'], 136 'middleware' => ['auth'], ['admin'],
137 ], function() { 137 ], function() {
138 138
139 // выход 139 // выход
140 Route::get('logout', [AdminController::class, 'logout'])->name('logout'); 140 Route::get('logout', [AdminController::class, 'logout'])->name('logout');
141 141
142 // кабинет главная страница 142 // кабинет главная страница
143 Route::get('cabinet', [AdminController::class, 'index'])->name('index'); 143 Route::get('cabinet', [AdminController::class, 'index'])->name('index');
144 144
145 // кабинет профиль админа - форма 145 // кабинет профиль админа - форма
146 Route::get('profile', [AdminController::class, 'profile'])->name('profile'); 146 Route::get('profile', [AdminController::class, 'profile'])->name('profile');
147 // кабинет профиль админа - сохранение формы 147 // кабинет профиль админа - сохранение формы
148 Route::post('profile', [AdminController::class, 'store_profile'])->name('store_profile'); 148 Route::post('profile', [AdminController::class, 'store_profile'])->name('store_profile');
149 149
150 //кабинет сообщения админа 150 //кабинет сообщения админа
151 //Route::get('messages', [AdminController::class, 'profile'])->name('profile'); 151 //Route::get('messages', [AdminController::class, 'profile'])->name('profile');
152 152
153 153
154 // кабинет профиль - форма пароли 154 // кабинет профиль - форма пароли
155 Route::get('password', [AdminController::class, 'profile_password'])->name('password'); 155 Route::get('password', [AdminController::class, 'profile_password'])->name('password');
156 // кабинет профиль - сохранение формы пароля 156 // кабинет профиль - сохранение формы пароля
157 Route::post('password', [AdminController::class, 'profile_password_new'])->name('password'); 157 Route::post('password', [AdminController::class, 'profile_password_new'])->name('password');
158 158
159 159
160 // кабинет профиль пользователя - форма 160 // кабинет профиль пользователя - форма
161 Route::get('user-profile/{user}', [AdminController::class, 'profile_user'])->name('user-profile'); 161 Route::get('user-profile/{user}', [AdminController::class, 'profile_user'])->name('user-profile');
162 // кабинет профиль пользователя - сохранение формы 162 // кабинет профиль пользователя - сохранение формы
163 Route::post('user-profile/{user}', [AdminController::class, 'store_profile_user'])->name('user-store_profile'); 163 Route::post('user-profile/{user}', [AdminController::class, 'store_profile_user'])->name('user-store_profile');
164 164
165 // кабинет профиль работодатель - форма 165 // кабинет профиль работодатель - форма
166 Route::get('employer-profile/{employer}', [EmployersController::class, 'form_update_employer'])->name('employer-profile'); 166 Route::get('employer-profile/{employer}', [EmployersController::class, 'form_update_employer'])->name('employer-profile');
167 // кабинет профиль работодатель - сохранение формы 167 // кабинет профиль работодатель - сохранение формы
168 Route::post('employer-profile/{employer}', [EmployersController::class, 'update_employer'])->name('update-employer-profile'); 168 Route::post('employer-profile/{employer}', [EmployersController::class, 'update_employer'])->name('update-employer-profile');
169 // кабинет удаление профиль работодателя и юзера 169 // кабинет удаление профиль работодателя и юзера
170 Route::delete('employers/delete/{employer}/{user}', [EmployersController::class, 'delete_employer'])->name('delete-employer'); 170 Route::delete('employers/delete/{employer}/{user}', [EmployersController::class, 'delete_employer'])->name('delete-employer');
171 171
172 // кабинет профиль работник - форма 172 // кабинет профиль работник - форма
173 Route::get('worker-profile/add/{user}', [WorkersController::class, 'form_add_worker'])->name('worker-profile-add'); 173 Route::get('worker-profile/add/{user}', [WorkersController::class, 'form_add_worker'])->name('worker-profile-add');
174 Route::post('worker-profile/add/{user}', [WorkersController::class, 'form_store_worker'])->name('worker-profile-store'); 174 Route::post('worker-profile/add/{user}', [WorkersController::class, 'form_store_worker'])->name('worker-profile-store');
175 Route::get('worker-profile/{worker}', [WorkersController::class, 'form_edit_worker'])->name('worker-profile-edit'); 175 Route::get('worker-profile/{worker}', [WorkersController::class, 'form_edit_worker'])->name('worker-profile-edit');
176 // кабинет профиль работник - сохранение формы 176 // кабинет профиль работник - сохранение формы
177 Route::post('worker-profile/{worker}', [WorkersController::class, 'form_update_worker'])->name('worker-profile-update'); 177 Route::post('worker-profile/{worker}', [WorkersController::class, 'form_update_worker'])->name('worker-profile-update');
178 178
179 // Медиа 179 // Медиа
180 Route::get('media', [MediaController::class, 'index'])->name('media'); 180 Route::get('media', [MediaController::class, 'index'])->name('media');
181 Route::delete('media/{media}', [MediaController::class, 'delete'])->name('delete-media'); 181 Route::delete('media/{media}', [MediaController::class, 'delete'])->name('delete-media');
182 182
183 // кабинет настройки сайта - форма 183 // кабинет настройки сайта - форма
184 Route::get('config', [AdminController::class, 'config_form'])->name('config'); 184 Route::get('config', [AdminController::class, 'config_form'])->name('config');
185 // кабинет настройки сайта сохранение формы 185 // кабинет настройки сайта сохранение формы
186 Route::post('config', [AdminController::class, 'store_config'])->name('store_config'); 186 Route::post('config', [AdminController::class, 'store_config'])->name('store_config');
187 187
188 // кабинет - пользователи 188 // кабинет - пользователи
189 Route::get('users', [UsersController::class, 'index'])->name('users'); 189 Route::get('users', [UsersController::class, 'index'])->name('users');
190 190
191 // кабинет - пользователи 191 // кабинет - пользователи
192 Route::get('admin-users', [AdminController::class, 'index_admin'])->name('admin-users'); 192 Route::get('admin-users', [AdminController::class, 'index_admin'])->name('admin-users');
193 193
194 // кабинет - работодатели 194 // кабинет - работодатели
195 Route::get('employers', [EmployersController::class, 'index'])->name('employers'); 195 Route::get('employers', [EmployersController::class, 'index'])->name('employers');
196 196
197 Route::get('employers/comment/{employer}', [EmployersController::class, 'comment_read'])->name('comment-employer'); 197 Route::get('employers/comment/{employer}', [EmployersController::class, 'comment_read'])->name('comment-employer');
198 198
199 Route::get('flot/add/{employer}', [EmployersController::class, 'add_flot'])->name('flot_add'); 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'); 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'); 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'); 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'); 203 Route::get('flot/{flot}/{employer_id}/delete', [EmployersController::class, 'delete_flot'])->name('flot_delete');
204 204
205 // кабинет - соискатели 205 // кабинет - соискатели
206 Route::get('workers', [WorkersController::class, 'index'])->name('workers'); 206 Route::get('workers', [WorkersController::class, 'index'])->name('workers');
207 207
208 // кабинет - база данных 208 // кабинет - база данных
209 Route::get('basedata', [UsersController::class, 'index_bd'])->name('basedata'); 209 Route::get('basedata', [UsersController::class, 'index_bd'])->name('basedata');
210 Route::get('basedata/add', [UsersController::class, 'add_bd'])->name('add-basedata'); 210 Route::get('basedata/add', [UsersController::class, 'add_bd'])->name('add-basedata');
211 Route::post('basedata/add', [UsersController::class, 'add_store_bd'])->name('add-store-basedata'); 211 Route::post('basedata/add', [UsersController::class, 'add_store_bd'])->name('add-store-basedata');
212 Route::get('basedata/edit/{user}', [UsersController::class, 'edit_bd'])->name('edit-basedata'); 212 Route::get('basedata/edit/{user}', [UsersController::class, 'edit_bd'])->name('edit-basedata');
213 Route::put('basedata/edit/{user}', [UsersController::class, 'update_bd'])->name('update-basedata'); 213 Route::put('basedata/edit/{user}', [UsersController::class, 'update_bd'])->name('update-basedata');
214 Route::delete('basedata/delete/{user}', [UsersController::class, 'destroy_bd'])->name('delete-basedata'); 214 Route::delete('basedata/delete/{user}', [UsersController::class, 'destroy_bd'])->name('delete-basedata');
215 Route::get('basedata/doc/{user}', [UsersController::class, 'doc_bd'])->name('doc-basedata'); 215 Route::get('basedata/doc/{user}', [UsersController::class, 'doc_bd'])->name('doc-basedata');
216 216
217 // кабинет - вакансии 217 // кабинет - вакансии
218 Route::get('ad-employers', [Ad_EmployersController::class, 'index'])->name('ad-employers'); 218 Route::get('ad-employers', [Ad_EmployersController::class, 'index'])->name('ad-employers');
219 Route::get('ad-employers/add', [Ad_EmployersController::class, 'create'])->name('add-ad-employers'); 219 Route::get('ad-employers/add', [Ad_EmployersController::class, 'create'])->name('add-ad-employers');
220 Route::post('ad-employers/add', [Ad_EmployersController::class, 'store'])->name('store-ad-employers'); 220 Route::post('ad-employers/add', [Ad_EmployersController::class, 'store'])->name('store-ad-employers');
221 Route::get('ad-employers/edit/{ad_employer}', [Ad_EmployersController::class, 'edit'])->name('edit-ad-employers'); 221 Route::get('ad-employers/edit/{ad_employer}', [Ad_EmployersController::class, 'edit'])->name('edit-ad-employers');
222 Route::post('ad-employers/edit/{ad_employer}', [Ad_EmployersController::class, 'update'])->name('update-ad-employers'); 222 Route::post('ad-employers/edit/{ad_employer}', [Ad_EmployersController::class, 'update'])->name('update-ad-employers');
223 Route::delete('ad-employers/delete/{ad_employer}', [Ad_EmployersController::class, 'destroy'])->name('delete-ad-employer'); 223 Route::delete('ad-employers/delete/{ad_employer}', [Ad_EmployersController::class, 'destroy'])->name('delete-ad-employer');
224 224
225 // Редактирование должности в вакансии 225 // Редактирование должности в вакансии
226 Route::put('update-jobs/{ad_jobs}', [Ad_EmployersController::class, 'update_ad_jobs'])->name('update_jobs'); 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'); 227 Route::get('edit-jobs/{ad_jobs}', [Ad_EmployersController::class, 'edit_jobs'])->name('edit_jobs');
228 228
229 229
230 // кабинет - категории 230 // кабинет - категории
231 //Route::get('categories', [AdminController::class, 'index'])->name('categories'); 231 //Route::get('categories', [AdminController::class, 'index'])->name('categories');
232 /* 232 /*
233 * CRUD-операции над Справочником Категории 233 * CRUD-операции над Справочником Категории
234 */ 234 */
235 Route::resource('categories', CategoryController::class, ['except' => ['show']]); 235 Route::resource('categories', CategoryController::class, ['except' => ['show']]);
236 236
237 // CRUD-операции над справочником Категории для работодателей 237 // CRUD-операции над справочником Категории для работодателей
238 Route::resource('category-emp', CategoryEmpController::class, ['except' => ['show']]); 238 Route::resource('category-emp', CategoryEmpController::class, ['except' => ['show']]);
239 239
240 // CRUD-операции над справочником Образование 240 // CRUD-операции над справочником Образование
241 Route::resource('education', EducationController::class, ['except' => ['show']]); 241 Route::resource('education', EducationController::class, ['except' => ['show']]);
242 242
243 Route::get('rename-program-education', [EducationController::class, 'rename_program'])->name('rename-program-education'); 243 Route::get('rename-program-education', [EducationController::class, 'rename_program'])->name('rename-program-education');
244 Route::get('program-education', [EducationController::class, 'add_program'])->name('add-program-education'); 244 Route::get('program-education', [EducationController::class, 'add_program'])->name('add-program-education');
245 Route::post('program-education', [EducationController::class, 'store_program'])->name('store-program-education'); 245 Route::post('program-education', [EducationController::class, 'store_program'])->name('store-program-education');
246 246
247 Route::get('program-education/edit/{program}/{education}', [EducationController::class, 'edit_program'])->name('edit-program-education'); 247 Route::get('program-education/edit/{program}/{education}', [EducationController::class, 'edit_program'])->name('edit-program-education');
248 Route::post('program-education/edit/{program}/{education}', [EducationController::class, 'update_program'])->name('update-program-education'); 248 Route::post('program-education/edit/{program}/{education}', [EducationController::class, 'update_program'])->name('update-program-education');
249 249
250 Route::get('program-education/delete/{program}/{education}', [EducationController::class, 'delete_program'])->name('delete-program-education'); 250 Route::get('program-education/delete/{program}/{education}', [EducationController::class, 'delete_program'])->name('delete-program-education');
251 251
252 //Route::get('job-titles', [AdminController::class, 'index'])->name('job-titles'); 252 //Route::get('job-titles', [AdminController::class, 'index'])->name('job-titles');
253 /* 253 /*
254 * кабинет - CRUD-операции по справочнику должности 254 * кабинет - CRUD-операции по справочнику должности
255 * 255 *
256 */ 256 */
257 Route::resource('job-titles', JobTitlesController::class, ['except' => ['show']]); 257 Route::resource('job-titles', JobTitlesController::class, ['except' => ['show']]);
258 258
259 // кабинет - сообщения (чтение чужих) 259 // кабинет - сообщения (чтение чужих)
260 Route::get('messages', [MsgAnswersController::class, 'messages'])->name('messages'); 260 Route::get('messages', [MsgAnswersController::class, 'messages'])->name('messages');
261 // кабинет - просмотр сообщения чужого (чтение) 261 // кабинет - просмотр сообщения чужого (чтение)
262 Route::get('messages/{message}', [MsgAnswersController::class, 'read_message'])->name('read-message'); 262 Route::get('messages/{message}', [MsgAnswersController::class, 'read_message'])->name('read-message');
263 263
264 // кабинет - сообщения (админские) 264 // кабинет - сообщения (админские)
265 Route::get('admin-messages', [MsgAnswersController::class, 'admin_messages'])->name('admin-messages'); 265 Route::get('admin-messages', [MsgAnswersController::class, 'admin_messages'])->name('admin-messages');
266 // кабинет - сообщения (админские) 266 // кабинет - сообщения (админские)
267 Route::post('admin-messages', [MsgAnswersController::class, 'admin_messages_post'])->name('admin-messages-post'); 267 Route::post('admin-messages', [MsgAnswersController::class, 'admin_messages_post'])->name('admin-messages-post');
268 // кабинет - sql - конструкция запросов 268 // кабинет - sql - конструкция запросов
269 Route::get('messages-sql', [MsgAnswersController::class, 'messages_sql'])->name('messages-sql'); 269 Route::get('messages-sql', [MsgAnswersController::class, 'messages_sql'])->name('messages-sql');
270 270
271 /* 271 /*
272 * Расписанный подход в описании каждой директорий групп пользователей. 272 * Расписанный подход в описании каждой директорий групп пользователей.
273 */ 273 */
274 // кабинет - группы пользователей 274 // кабинет - группы пользователей
275 Route::get('groups', [GroupsController::class, 'index'])->name('groups'); 275 Route::get('groups', [GroupsController::class, 'index'])->name('groups');
276 // кабинет - добавление форма группы пользователей 276 // кабинет - добавление форма группы пользователей
277 Route::get('groups/add', [GroupsController::class, 'add'])->name('add-group'); 277 Route::get('groups/add', [GroupsController::class, 'add'])->name('add-group');
278 // кабинет - сохранение формы группы пользователей 278 // кабинет - сохранение формы группы пользователей
279 Route::post('groups/add', [GroupsController::class, 'store'])->name('add-group-store'); 279 Route::post('groups/add', [GroupsController::class, 'store'])->name('add-group-store');
280 // кабинет - редактирование форма группы пользователей 280 // кабинет - редактирование форма группы пользователей
281 Route::get('groups/edit/{group}', [GroupsController::class, 'edit'])->name('edit-group'); 281 Route::get('groups/edit/{group}', [GroupsController::class, 'edit'])->name('edit-group');
282 // кабинет - сохранение редактированной формы группы пользователей 282 // кабинет - сохранение редактированной формы группы пользователей
283 Route::post('groups/edit/{group}', [GroupsController::class, 'update'])->name('update-group'); 283 Route::post('groups/edit/{group}', [GroupsController::class, 'update'])->name('update-group');
284 // кабинет - удаление группы пользователей 284 // кабинет - удаление группы пользователей
285 Route::delete('groups/delete/{group}', [GroupsController::class, 'destroy'])->name('delete-group'); 285 Route::delete('groups/delete/{group}', [GroupsController::class, 'destroy'])->name('delete-group');
286 286
287 287
288 // кабинет - список админов 288 // кабинет - список админов
289 Route::get('group-admin', [AdminController::class, 'index'])->name('group-admin'); 289 Route::get('group-admin', [AdminController::class, 'index'])->name('group-admin');
290 290
291 291
292 /////редактор////// кабинет - редактор сайта//////////////////////// 292 /////редактор////// кабинет - редактор сайта////////////////////////
293 Route::get('editor-site', function() { 293 Route::get('editor-site', function() {
294 return view('admin.editor.index'); 294 return view('admin.editor.index');
295 })->name('editor-site'); 295 })->name('editor-site');
296 296
297 297
298 // кабинет - редактор шапки-футера сайта 298 // кабинет - редактор шапки-футера сайта
299 Route::get('edit-blocks', [CompanyController::class, 'editblocks'])->name('edit-blocks'); 299 Route::get('edit-blocks', [CompanyController::class, 'editblocks'])->name('edit-blocks');
300 Route::get('edit-bloks/add', [CompanyController::class, 'editblock_add'])->name('add-block'); 300 Route::get('edit-bloks/add', [CompanyController::class, 'editblock_add'])->name('add-block');
301 Route::post('edit-bloks/add', [CompanyController::class, 'editblock_store'])->name('add-block-store'); 301 Route::post('edit-bloks/add', [CompanyController::class, 'editblock_store'])->name('add-block-store');
302 Route::get('edit-bloks/ajax', [CompanyController::class, 'editblock_ajax'])->name('ajax.block'); 302 Route::get('edit-bloks/ajax', [CompanyController::class, 'editblock_ajax'])->name('ajax.block');
303 Route::get('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_edit'])->name('edit-block'); 303 Route::get('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_edit'])->name('edit-block');
304 Route::put('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_update'])->name('update-block'); 304 Route::put('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_update'])->name('update-block');
305 Route::delete('edit-bloks/delete/{block}', [CompanyController::class, 'editblock_destroy'])->name('delete-block'); 305 Route::delete('edit-bloks/delete/{block}', [CompanyController::class, 'editblock_destroy'])->name('delete-block');
306 306
307 307
308 // кабинет - редактор должности на главной 308 // кабинет - редактор должности на главной
309 Route::get('job-titles-main', [CompanyController::class, 'job_titles_main'])->name('job-titles-main'); 309 Route::get('job-titles-main', [CompanyController::class, 'job_titles_main'])->name('job-titles-main');
310 310
311 // кабинет - редактор работодатели на главной 311 // кабинет - редактор работодатели на главной
312 Route::get('employers-main', [CompanyController::class, 'employers_main'])->name('employers-main'); 312 Route::get('employers-main', [CompanyController::class, 'employers_main'])->name('employers-main');
313 313
314 314
315 // кабинет - редактор seo-сайта 315 // кабинет - редактор seo-сайта
316 Route::get('editor-seo', [CompanyController::class, 'editor_seo'])->name('editor-seo'); 316 Route::get('editor-seo', [CompanyController::class, 'editor_seo'])->name('editor-seo');
317 Route::get('editor-seo/add', [CompanyController::class, 'editor_seo_add'])->name('add-seo'); 317 Route::get('editor-seo/add', [CompanyController::class, 'editor_seo_add'])->name('add-seo');
318 Route::post('editor-seo/add', [CompanyController::class, 'editor_seo_store'])->name('add-seo-store'); 318 Route::post('editor-seo/add', [CompanyController::class, 'editor_seo_store'])->name('add-seo-store');
319 Route::get('editor-seo/ajax', [CompanyController::class, 'editor_seo_ajax'])->name('ajax.seo'); 319 Route::get('editor-seo/ajax', [CompanyController::class, 'editor_seo_ajax'])->name('ajax.seo');
320 Route::get('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_edit'])->name('edit-seo'); 320 Route::get('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_edit'])->name('edit-seo');
321 Route::put('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_update'])->name('update-seo'); 321 Route::put('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_update'])->name('update-seo');
322 Route::delete('editor-seo/delete/{page}', [CompanyController::class, 'editor_seo_destroy'])->name('delete-seo'); 322 Route::delete('editor-seo/delete/{page}', [CompanyController::class, 'editor_seo_destroy'])->name('delete-seo');
323 323
324 324
325 // кабинет - редактор страниц 325 // кабинет - редактор страниц
326 Route::get('editor-pages', [CompanyController::class, 'editor_pages'])->name('editor-pages'); 326 Route::get('editor-pages', [CompanyController::class, 'editor_pages'])->name('editor-pages');
327 // кабинет - добавление страницы 327 // кабинет - добавление страницы
328 Route::get('editor-pages/add', [CompanyController::class, 'editor_pages_add'])->name('add-page'); 328 Route::get('editor-pages/add', [CompanyController::class, 'editor_pages_add'])->name('add-page');
329 // кабинет - сохранение формы страницы 329 // кабинет - сохранение формы страницы
330 Route::post('editor-page/add', [CompanyController::class, 'editor_pages_store'])->name('add-page-store'); 330 Route::post('editor-page/add', [CompanyController::class, 'editor_pages_store'])->name('add-page-store');
331 // кабинет - редактирование форма страницы 331 // кабинет - редактирование форма страницы
332 Route::get('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_edit'])->name('edit-page'); 332 Route::get('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_edit'])->name('edit-page');
333 // кабинет - сохранение редактированной формы страницы 333 // кабинет - сохранение редактированной формы страницы
334 Route::put('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_update'])->name('update-page'); 334 Route::put('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_update'])->name('update-page');
335 // кабинет - удаление страницы 335 // кабинет - удаление страницы
336 Route::delete('editor-pages/delete/{page}', [CompanyController::class, 'editor_pages_destroy'])->name('delete-page'); 336 Route::delete('editor-pages/delete/{page}', [CompanyController::class, 'editor_pages_destroy'])->name('delete-page');
337 337
338 338
339 // кабинет - реклама сайта 339 // кабинет - реклама сайта
340 Route::get('reclames', [CompanyController::class, 'reclames'])->name('reclames'); 340 Route::get('reclames', [CompanyController::class, 'reclames'])->name('reclames');
341 Route::get('reclames/add', [CompanyController::class, 'reclames_add'])->name('add-reclames'); 341 Route::get('reclames/add', [CompanyController::class, 'reclames_add'])->name('add-reclames');
342 Route::post('reclames/add', [CompanyController::class, 'reclames_store'])->name('add-reclames-store'); 342 Route::post('reclames/add', [CompanyController::class, 'reclames_store'])->name('add-reclames-store');
343 Route::get('reclames/edit/{reclame}', [CompanyController::class, 'reclames_edit'])->name('edit-reclames'); 343 Route::get('reclames/edit/{reclame}', [CompanyController::class, 'reclames_edit'])->name('edit-reclames');
344 Route::put('reclames/edit/{reclame}', [CompanyController::class, 'reclames_update'])->name('update-reclames'); 344 Route::put('reclames/edit/{reclame}', [CompanyController::class, 'reclames_update'])->name('update-reclames');
345 Route::delete('reclames/delete/{reclame}', [CompanyController::class, 'reclames_destroy'])->name('delete-reclames'); 345 Route::delete('reclames/delete/{reclame}', [CompanyController::class, 'reclames_destroy'])->name('delete-reclames');
346 //////////////////////////////////////////////////////////////////////// 346 ////////////////////////////////////////////////////////////////////////
347 347
348 348
349 // кабинет - отзывы о работодателе для модерации 349 // кабинет - отзывы о работодателе для модерации
350 Route::get('answers', [EmployersController::class, 'answers'])->name('answers'); 350 Route::get('answers', [EmployersController::class, 'answers'])->name('answers');
351 351
352 // Общая страница статистики 352 // Общая страница статистики
353 Route::get('statics', function () { 353 Route::get('statics', function () {
354 return view('admin.static.index'); 354 return view('admin.static.index');
355 })->name('statics'); 355 })->name('statics');
356 356
357 // кабинет - статистика работников 357 // кабинет - статистика работников
358 Route::get('static-workers', [WorkersController::class, 'static_workers'])->name('static-workers'); 358 Route::get('static-workers', [WorkersController::class, 'static_workers'])->name('static-workers');
359 359
360 // кабинет - статистика вакансий работодателя 360 // кабинет - статистика вакансий работодателя
361 Route::get('static-ads', [EmployersController::class, 'static_ads'])->name('static-ads'); 361 Route::get('static-ads', [EmployersController::class, 'static_ads'])->name('static-ads');
362 362
363 // кабинет - справочник - блоки информации (дипломы и документы) для резюме работника 363 // кабинет - справочник - блоки информации (дипломы и документы) для резюме работника
364 /* 364 /*
365 * CRUD-операции над справочником дипломы и документы 365 * CRUD-операции над справочником дипломы и документы
366 */ 366 */
367 //Route::get('infobloks', [WorkersController::class, 'infobloks'])->name('infobloks'); 367 //Route::get('infobloks', [WorkersController::class, 'infobloks'])->name('infobloks');
368 Route::resource('infobloks', InfoBloksController::class, ['except' => ['show']]); 368 Route::resource('infobloks', InfoBloksController::class, ['except' => ['show']]);
369 369
370 // кабинет - роли пользователя 370 // кабинет - роли пользователя
371 Route::get('roles', [UsersController::class, 'roles'])->name('roles'); 371 Route::get('roles', [UsersController::class, 'roles'])->name('roles');
372 372
373 Route::get('admin_roles', [UsersController::class, 'admin_roles'])->name('admin_roles'); 373 Route::get('admin_roles', [UsersController::class, 'admin_roles'])->name('admin_roles');
374 374
375 Route::get('logs', function() { 375 Route::get('logs', function() {
376 $files = Storage::files('logs/laravel.log'); 376 $files = Storage::files('logs/laravel.log');
377 print_r($files); 377 print_r($files);
378 })->name('logs'); 378 })->name('logs');
379 }); 379 });
380 380
381 // Инструментальные страницы 381 // Инструментальные страницы
382 Route::post('ckeditor/upload', [CKEditorController::class, 'upload'])->name('ckeditor.image-upload'); 382 Route::post('ckeditor/upload', [CKEditorController::class, 'upload'])->name('ckeditor.image-upload');
383 383
384 Route::get('redis/', [PagesController::class, 'redis'])->name('redis'); 384 Route::get('redis/', [PagesController::class, 'redis'])->name('redis');
385 385
386 Route::get('excel/', [PagesController::class, 'excel'])->name('excel'); 386 Route::get('excel/', [PagesController::class, 'excel'])->name('excel');
387 387
388 // Страницы с произвольным контентом 388 // Страницы с произвольным контентом
389 Route::get('pages/{pages:slug}', [PagesController::class, 'pages'])->name('page'); 389 Route::get('pages/{pages:slug}', [PagesController::class, 'pages'])->name('page');
390 390
391 // Публичные страницы соискателя 391 // Публичные страницы соискателя
392 Route::get('workers/profile/{worker}', [WorkerController::class, 'profile'])->name('worker_page'); 392 Route::get('workers/profile/{worker}', [WorkerController::class, 'profile'])->name('worker_page');
393 393
394 //Страница вакансии 394 //Страница вакансии
395 Route::get('employer/ad/{ad_employer}', [AdEmployerController::class, 'ad_employer'])->name('ad-employer'); 395 Route::get('employer/ad/{ad_employer}', [AdEmployerController::class, 'ad_employer'])->name('ad-employer');
396 396
397 //Вакансии 397 //Вакансии
398 Route::get('vacancies', [MainController::class, 'vacancies'])->name('vacancies'); 398 Route::get('vacancies', [MainController::class, 'vacancies'])->name('vacancies');
399 399
400 //Вакансии поиск на главной
401 Route::get('search-vacancies', [MainController::class, 'search_vacancies'])->name('search_vacancies');
402
400 //Вакансии категория детальная 403 //Вакансии категория детальная
401 Route::get('list-vacancies/{categories}', [MainController::class, 'list_vacancies'])->name('list-vacancies'); 404 Route::get('list-vacancies/{categories}', [MainController::class, 'list_vacancies'])->name('list-vacancies');
402 405
403 //Детальная страница вакансии - работодателя 406 //Детальная страница вакансии - работодателя
404 Route::get('vacancie/{vacancy}', [FrontEmployersController::class, 'vacancie'])->name('vacancie'); 407 Route::get('vacancie/{vacancy}', [FrontEmployersController::class, 'vacancie'])->name('vacancie');
405 408
406 //Судоходные компании 409 //Судоходные компании
407 Route::get('shipping-companies', [FrontCompanyController::class, 'shipping_companies'])->name('shipping_companies'); 410 Route::get('shipping-companies', [FrontCompanyController::class, 'shipping_companies'])->name('shipping_companies');
408 411
409 //Детальная инфа о компании 412 //Детальная инфа о компании
410 Route::get('info-company/{company}', [FrontCompanyController::class, 'info_company'])->name('info_company'); 413 Route::get('info-company/{company}', [FrontCompanyController::class, 'info_company'])->name('info_company');
411 414
412 //Образование 415 //Образование
413 Route::get('education', [MainController::class, 'education'])->name('education'); 416 Route::get('education', [MainController::class, 'education'])->name('education');
414 417
415 //Новости 418 //Новости
416 Route::get('news', [MainController::class, 'news'])->name('news'); 419 Route::get('news', [MainController::class, 'news'])->name('news');
417 420
418 //Контакты 421 //Контакты
419 Route::get('contacts', [MainController::class, 'contacts'])->name('contacts'); 422 Route::get('contacts', [MainController::class, 'contacts'])->name('contacts');
420 423
421 //База резюме 424 //База резюме
422 Route::get('bd-resume', [MainController::class, 'bd_resume'])->name('bd_resume'); 425 Route::get('bd-resume', [WorkerController::class, 'bd_resume'])->name('bd_resume');
426
427 //Анкета соискателя
428 Route::get('resume-profile/{worker}', [WorkerController::class, 'resume_profile'])->name('resume_profile');
429
430 //Скачать резюме
431 Route::get('resume-download/{worker}', [WorkerController::class, 'resume_download'])->name('resume_download');
432
433 //Вход в кабинет
434 Route::get('login', [MainController::class, 'input_login'])->name('login');
435
436 // Выход из кабинета
437 Route::get('logout', [EmployerController::class, 'logout'])->name('logout');
438
439 // Личный кабинет работника
440 Route::group([
441 'as' => 'worker.', // имя маршрута, например auth.index
442 'prefix' => 'worker', // префикс маршрута, например auth/index
443 'middleware' => ['auth'], ['is_worker'],
444 ], function() {
445 Route::get('cabinet', [])->name('cabinet');
446 });
447
448 // Личный кабинет работодателя
449 Route::group([
450 'as' => 'employer.', // имя маршрута, например auth.index
451 'prefix' => 'employer', // префикс маршрута, например auth/index
452 'middleware' => ['auth'], !['is_worker'],
453 ], function() {
454 Route::get('cabinet', [])->name('cabinet');
455 });
423 456