Commit a13ce86708e3f545245c9eca56f27dee628c7588
1 parent
d152a3a68e
Exists in
master
and in
1 other branch
Обновление проекта рекаморе 22 февраля
Showing 19 changed files with 1521 additions and 34 deletions Side-by-side Diff
- app/Http/Controllers/EmployerController.php
- app/Http/Controllers/MainController.php
- app/Http/Controllers/WorkerController.php
- app/Models/PrevCompany.php
- app/Models/Worker.php
- database/migrations/2024_02_22_080113_alter_table_sertification.php
- database/migrations/2024_02_22_092030_create_table_prev_company.php
- public/images/default_man.jpg
- public/js/script.js
- resources/views/index.blade.php
- resources/views/layout/frontend.blade.php
- resources/views/modals/send_admin.blade.php
- resources/views/modals/send_employer.blade.php
- resources/views/modals/send_login.blade.php
- resources/views/modals/send_worker.blade.php
- resources/views/resume.blade.php
- resources/views/vacancies.blade.php
- resources/views/worker.blade.php
- routes/web.php
app/Http/Controllers/EmployerController.php
... | ... | @@ -5,6 +5,7 @@ namespace App\Http\Controllers; |
5 | 5 | use App\Models\Ad_employer; |
6 | 6 | use App\Models\Category; |
7 | 7 | use Illuminate\Http\Request; |
8 | +use Illuminate\Support\Facades\Auth; | |
8 | 9 | |
9 | 10 | class EmployerController extends Controller |
10 | 11 | { |
... | ... | @@ -25,4 +26,10 @@ class EmployerController extends Controller |
25 | 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 | } |
app/Http/Controllers/MainController.php
... | ... | @@ -10,6 +10,8 @@ use App\Models\Job_title; |
10 | 10 | use App\Models\News; |
11 | 11 | use App\Models\reclame; |
12 | 12 | use Illuminate\Http\Request; |
13 | +use Illuminate\Support\Facades\Auth; | |
14 | +use Illuminate\Support\Facades\Validator; | |
13 | 15 | |
14 | 16 | class MainController extends Controller |
15 | 17 | { |
... | ... | @@ -28,6 +30,16 @@ class MainController extends Controller |
28 | 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 | 43 | public function vacancies(Request $request) { |
32 | 44 | //должности |
33 | 45 | $Job_title = Job_title::query()->orderBy('name')->get(); |
... | ... | @@ -38,7 +50,7 @@ class MainController extends Controller |
38 | 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 | 54 | $categories = $categories->Where('job_title_id', '=', $request->get('job')) |
43 | 55 | ->OrderByDesc('created_at') |
44 | 56 | ->GroupBy('categories.id') |
... | ... | @@ -115,4 +127,55 @@ class MainController extends Controller |
115 | 127 | public function contacts() { |
116 | 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 | } |
app/Http/Controllers/WorkerController.php
... | ... | @@ -8,11 +8,7 @@ use Illuminate\Http\Request; |
8 | 8 | |
9 | 9 | class WorkerController extends Controller |
10 | 10 | { |
11 | - //главная | |
12 | - public function index() { | |
13 | - return; | |
14 | - } | |
15 | - | |
11 | + public $status_work = Array(0 => 'Ищу работу', 1=> 'Не указано', 2=>'Не ищу работу'); | |
16 | 12 | //профиль |
17 | 13 | public function profile(Worker $worker) { |
18 | 14 | $get_date = date('Y.m'); |
... | ... | @@ -40,8 +36,30 @@ class WorkerController extends Controller |
40 | 36 | return view('public.workers.profile', compact('worker', 'stat')); |
41 | 37 | } |
42 | 38 | |
43 | - //публичная оферта | |
44 | - public function public_offer() { | |
45 | - return; | |
39 | + // лист база резюме | |
40 | + public function bd_resume() { | |
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) { | |
63 | + print_r('Резюме для скачивания'); | |
46 | 64 | } |
47 | 65 | } |
app/Models/PrevCompany.php
app/Models/Worker.php
... | ... | @@ -55,7 +55,32 @@ class Worker extends Model |
55 | 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 | 73 | public function scopeActive($query) { |
59 | 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 | } |
database/migrations/2024_02_22_080113_alter_table_sertification.php
... | ... | @@ -0,0 +1,34 @@ |
1 | +<?php | |
2 | + | |
3 | +use Illuminate\Database\Migrations\Migration; | |
4 | +use Illuminate\Database\Schema\Blueprint; | |
5 | +use Illuminate\Support\Facades\Schema; | |
6 | + | |
7 | +return new class extends Migration | |
8 | +{ | |
9 | + /** | |
10 | + * Run the migrations. | |
11 | + * | |
12 | + * @return void | |
13 | + */ | |
14 | + public function up() | |
15 | + { | |
16 | + Schema::table('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 | +}; |
database/migrations/2024_02_22_092030_create_table_prev_company.php
... | ... | @@ -0,0 +1,36 @@ |
1 | +<?php | |
2 | + | |
3 | +use Illuminate\Database\Migrations\Migration; | |
4 | +use Illuminate\Database\Schema\Blueprint; | |
5 | +use Illuminate\Support\Facades\Schema; | |
6 | + | |
7 | +return new class extends Migration | |
8 | +{ | |
9 | + /** | |
10 | + * Run the migrations. | |
11 | + * | |
12 | + * @return void | |
13 | + */ | |
14 | + public function up() | |
15 | + { | |
16 | + Schema::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 | +}; |
public/images/default_man.jpg
25.8 KB
public/js/script.js
... | ... | @@ -6,6 +6,22 @@ let scripts = function () { |
6 | 6 | $('.js-parent-toggle').on('click', function () { |
7 | 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 | 26 | $('[data-tab]').on('click',function(){ |
11 | 27 | $('[data-tab]').removeClass('active'); |
... | ... | @@ -15,6 +31,16 @@ let scripts = function () { |
15 | 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 | 44 | let checkScrollTop = function () { |
19 | 45 | if ($(document).scrollTop() == 0) { |
20 | 46 | $('#body').removeClass('begin'); |
... | ... | @@ -30,6 +56,8 @@ let scripts = function () { |
30 | 56 | let closeAll = function () { |
31 | 57 | $('.js-toggle').removeClass('active'); |
32 | 58 | $('.js-parent-toggle').parent().removeClass('active'); |
59 | + $('#body').removeClass('menu-is-actived'); | |
60 | + $('#body').removeClass('cookies-is-actived'); | |
33 | 61 | } |
34 | 62 | |
35 | 63 | $(document).keyup(function (e) { |
resources/views/index.blade.php
1 | 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 | 35 | @section('content') |
4 | 36 | <section class="work"> |
5 | 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 | 39 | <div class="work__body"> |
8 | 40 | <div class="work__title"> |
9 | 41 | Работа в море / |
... | ... | @@ -16,23 +48,23 @@ |
16 | 48 | <div>Тысячи соискателей увидят Ваше объявление</div> |
17 | 49 | <div>Десятки компаний выкладывают объявления каждый день</div> |
18 | 50 | </div> |
19 | - <form class="search work__form"> | |
20 | - <input type="search" class="input" placeholder="Желаемая должность" required> | |
51 | + <form class="search work__form" action="{{ route('search_vacancies') }}" method="GET"> | |
52 | + <input type="search" id="search" name="search" class="input" placeholder="Желаемая должность" required> | |
21 | 53 | <button type="submit" class="button button_light">Посмотреть вакансии</button> |
22 | 54 | <span> |
23 | - <svg> | |
24 | - <use xlink:href="images/sprite.svg#search"></use> | |
25 | - </svg> | |
26 | - </span> | |
55 | + <svg> | |
56 | + <use xlink:href="{{ asset('images/sprite.svg#search') }}"></use> | |
57 | + </svg> | |
58 | + </span> | |
27 | 59 | </form> |
28 | - <button class="button work__search">Я ищу сотрудника</button> | |
60 | + <a href="{{ route('bd_resume') }}" class="button work__search">Я ищу сотрудника</a> | |
29 | 61 | <div class="work__get"> |
30 | 62 | <b>Скачать приложение</b> |
31 | - <a href="#"> | |
32 | - <img src="images/google.svg" alt=""> | |
63 | + <a href=""> | |
64 | + <img src="{{ asset('images/google.svg') }}" alt=""> | |
33 | 65 | </a> |
34 | - <a href="#"> | |
35 | - <img src="images/apple.svg" alt=""> | |
66 | + <a href=""> | |
67 | + <img src="{{ asset('images/apple.svg') }}" alt=""> | |
36 | 68 | </a> |
37 | 69 | </div> |
38 | 70 | </div> |
... | ... | @@ -66,7 +98,7 @@ |
66 | 98 | <div class="container"> |
67 | 99 | <div class="title">Новые вакансии</div> |
68 | 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 | 102 | <div class="vacancies__list"> |
71 | 103 | @if ($categories->count()) |
72 | 104 | @foreach ($categories as $cat) |
... | ... | @@ -115,7 +147,7 @@ |
115 | 147 | </div> |
116 | 148 | <div class="swiper-pagination"></div> |
117 | 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 | 151 | </div> |
120 | 152 | </section> |
121 | 153 | <section class="about"> |
... | ... | @@ -127,14 +159,14 @@ |
127 | 159 | <div class="about__item"> |
128 | 160 | <b>Для работодателей</b> |
129 | 161 | <span>Наш ресурс позволит Вам за демократичную цену найти нужных специалистов в кратчайшие |
130 | - сроки, подробнее об условиях можно узнать <a href="#">здесь</a>.</span> | |
131 | - <button class="about__button button button_whited">Поиск сотрудников</button> | |
162 | + сроки, подробнее об условиях можно узнать <a href="{{ route('page', ['pages' => 'Stoimost-razmescheniya']) }}">здесь</a>.</span> | |
163 | + <a class="about__button button button_whited" href="{{ route('bd_resume') }}">Поиск сотрудников</a> | |
132 | 164 | </div> |
133 | 165 | <div class="about__item"> |
134 | 166 | <b>Для сотрудников</b> |
135 | 167 | <span>Наше преимущество — это большой объем вакансий, более 70 судоходных компаний России и |
136 | 168 | СНГ ищут сотрудников через наши ресурсы</span> |
137 | - <button class="about__button button button_whited">Посмотреть вакансии</button> | |
169 | + <a class="about__button button button_whited" href="{{ route('vacancies') }}">Посмотреть вакансии</a> | |
138 | 170 | </div> |
139 | 171 | </div> |
140 | 172 | </div> |
... | ... | @@ -147,12 +179,12 @@ |
147 | 179 | <div class="navs"> |
148 | 180 | <button class="js-news-swiper-button-prev"> |
149 | 181 | <svg class="rotate180"> |
150 | - <use xlink:href="images/sprite.svg#arrow"></use> | |
182 | + <use xlink:href="{{ asset('images/sprite.svg#arrow') }}"></use> | |
151 | 183 | </svg> |
152 | 184 | </button> |
153 | 185 | <button class="js-news-swiper-button-next"> |
154 | 186 | <svg> |
155 | - <use xlink:href="images/sprite.svg#arrow"></use> | |
187 | + <use xlink:href="{{ asset('images/sprite.svg#arrow') }}"></use> | |
156 | 188 | </svg> |
157 | 189 | </button> |
158 | 190 | </div> |
resources/views/layout/frontend.blade.php
... | ... | @@ -33,12 +33,16 @@ |
33 | 33 | </nav> |
34 | 34 | </div> |
35 | 35 | <div class="header__right"> |
36 | + @guest | |
37 | + | |
38 | + @else | |
36 | 39 | <button class="header__notifs header__notifs_actived"> |
37 | 40 | <svg> |
38 | 41 | <use xlink:href="{{ asset('images/sprite.svg#ring') }}"></use> |
39 | 42 | </svg> |
40 | 43 | <span>Уведомления</span> |
41 | 44 | </button> |
45 | + @endguest | |
42 | 46 | <div class="header__right-line"></div> |
43 | 47 | <button class="header__burger"> |
44 | 48 | <svg> |
... | ... | @@ -46,7 +50,7 @@ |
46 | 50 | </svg> |
47 | 51 | </button> |
48 | 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 | 54 | @else |
51 | 55 | <a class="button header__sign" href="{{ route('logout') }}">Выйти</a> |
52 | 56 | @endguest |
... | ... | @@ -216,11 +220,260 @@ |
216 | 220 | </div> <!-- END BOTTOM WRAPPER --> |
217 | 221 | |
218 | 222 | <div hidden> <!-- BEGIN MODALS WRAPPER --> |
219 | - <div class="modal"> | |
220 | - modal | |
223 | + @include('modals.send_worker') | |
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 | + | |
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 | + | |
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 | 473 | </div> |
222 | 474 | </div> <!-- END MODALS WRAPPER --> |
223 | 475 | |
476 | + | |
224 | 477 | <script src="{{ asset('js/jquery.js') }}"></script> |
225 | 478 | <script src="{{ asset('js/jquery.maskedinput.js') }}"></script> |
226 | 479 | <script src="{{ asset('js/jquery.fancybox.js') }}"></script> |
resources/views/modals/send_admin.blade.php
... | ... | @@ -0,0 +1,60 @@ |
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="Укажите по какому поводу вы пишите работодателю, уточните название вакансии или прикрепите ссылку на вакансию, дайте как можно больше информации. ВАЖНО не стоит писать работодателю короткий текст цитирую «Какая зарплата?, работодатель не поймет о чем речь, опишите вопрос максимально подробно»." 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> |
resources/views/modals/send_employer.blade.php
... | ... | @@ -0,0 +1,60 @@ |
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="Укажите по какому поводу вы пишите работодателю, уточните название вакансии или прикрепите ссылку на вакансию, дайте как можно больше информации. ВАЖНО не стоит писать работодателю короткий текст цитирую «Какая зарплата?, работодатель не поймет о чем речь, опишите вопрос максимально подробно»." 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> |
resources/views/modals/send_login.blade.php
... | ... | @@ -0,0 +1,51 @@ |
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 | + | |
48 | + <a href="">Создать аккаунт</a> | |
49 | + </div> | |
50 | + </div> | |
51 | +</div> |
resources/views/modals/send_worker.blade.php
... | ... | @@ -0,0 +1,48 @@ |
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> |
resources/views/resume.blade.php
... | ... | @@ -0,0 +1,454 @@ |
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 |
resources/views/vacancies.blade.php
... | ... | @@ -46,10 +46,10 @@ |
46 | 46 | </svg> |
47 | 47 | </div> |
48 | 48 | <select class="js-select2 jobs" id="jobs" name="jobs"> |
49 | - <option value="0" disabled selected>Выберите должность</option> | |
49 | + <option value="0">Выберите должность</option> | |
50 | 50 | @if ($Job_title->count()) |
51 | 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 | 53 | @endforeach |
54 | 54 | @endif |
55 | 55 | </select> |
resources/views/worker.blade.php
... | ... | @@ -0,0 +1,272 @@ |
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="Текст отзыва…" required></textarea> | |
265 | + <button type="submit" class="button">Оставить отзыв</button> | |
266 | + </div> | |
267 | + </div> | |
268 | + </div> | |
269 | + </div> | |
270 | + </main> | |
271 | + </div> | |
272 | +@endsection |
routes/web.php
... | ... | @@ -397,6 +397,9 @@ Route::get('employer/ad/{ad_employer}', [AdEmployerController::class, 'ad_employ |
397 | 397 | //Вакансии |
398 | 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 | 404 | Route::get('list-vacancies/{categories}', [MainController::class, 'list_vacancies'])->name('list-vacancies'); |
402 | 405 | |
... | ... | @@ -419,4 +422,34 @@ Route::get('news', [MainController::class, 'news'])->name('news'); |
419 | 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 | +}); |