Commit a9dfa8c954400fe8212908cda8f39fbc6143f32b

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

Обновление на 7 марта

Showing 29 changed files with 839 additions and 271 deletions Side-by-side Diff

app/Classes/StatusUser.php
... ... @@ -0,0 +1,17 @@
  1 +<?php
  2 +
  3 +
  4 +namespace App\Classes;
  5 +
  6 +
  7 +class StatusUser
  8 +{
  9 + public static function Status() {
  10 + if (isset(Auth()->user()->id)) {
  11 + $is_worker = Auth()->user()->is_worker;
  12 + return $is_worker;
  13 + } else {
  14 + return false;
  15 + }
  16 + }
  17 +}
app/Http/Controllers/CompanyController.php
... ... @@ -9,7 +9,7 @@ class CompanyController extends Controller
9 9 {
10 10 public function shipping_companies(Request $request) {
11 11 $emps = Employer::query()->with('ads');
12   - if ($request->get('search')) {
  12 + if (($request->has('search')) && (!empty($request->get('search')))) {
13 13 $search = $request->get('search');
14 14 $emps = $emps->where('name_company', 'LIKE', "%$search%");
15 15 }
... ... @@ -41,9 +41,10 @@ class CompanyController extends Controller
41 41 }
42 42  
43 43 public function info_company(Employer $company) {
44   - $company = Employer::with('ads')->with('flots')
  44 + $user_id = Auth()->user()->id;
  45 + $company = Employer::with('ads')->with('flots')->with('users')
45 46 ->where('id', '=', $company->id)->get();
46 47 $title = $company[0]->name_company;
47   - return view('info_company', compact('company', 'title'));
  48 + return view('info_company', compact('company', 'user_id', 'title'));
48 49 }
49 50 }
app/Http/Controllers/MainController.php
... ... @@ -12,6 +12,7 @@ use App\Models\reclame;
12 12 use Illuminate\Http\Request;
13 13 use Illuminate\Support\Facades\Auth;
14 14 use Illuminate\Support\Facades\Validator;
  15 +use App\Classes\StatusUser;
15 16  
16 17 class MainController extends Controller
17 18 {
... ... @@ -70,24 +71,42 @@ class MainController extends Controller
70 71  
71 72 //Вакансии категория детальная
72 73 public function list_vacancies(Category $categories, Request $request) {
  74 + if (isset(Auth()->user()->id))
  75 + $uid = Auth()->user()->id;
  76 + else
  77 + $uid = 0;
73 78  
74 79 $Query = Ad_employer::with('jobs')->
75 80 with('cat')->
76 81 with('employer')->
77 82 whereHas('jobs_code', function ($query) use ($request) {
78 83 if ($request->ajax()) {
79   - if (null !== ($request->get('job'))) {
  84 + if (null !== ($request->get('job')) && ($request->get('job') !== 0)) {
80 85 $query->where('job_title_id', $request->get('job'));
81 86 }
82 87 }
83 88 })
84 89 ->select('ad_employers.*');
85 90  
  91 +
  92 +
86 93 if ($categories->id > 0) {
87 94 $Query = $Query->where('category_id', '=', $categories->id);
88 95 $Name_categori = Category::query()->where('id', '=', $categories->id)->get();
89 96 }
90 97  
  98 + if ($request->get('sort')) {
  99 + $sort = $request->get('sort');
  100 + switch ($sort) {
  101 + case 'name_up': $Query = $Query->orderBy('name')->orderBy('id'); break;
  102 + case 'name_down': $Query = $Query->orderByDesc('name')->orderby('id'); break;
  103 + case 'created_at_up': $Query = $Query->OrderBy('created_at')->orderBy('id'); break;
  104 + case 'created_at_down': $Query = $Query->orderByDesc('created_at')->orderBy('id'); break;
  105 + case 'default': $Query = $Query->orderBy('id')->orderby('updated_at'); break;
  106 + default: $Query = $Query->orderBy('id')->orderby('updated_at'); break;
  107 + }
  108 + }
  109 +
91 110 $Job_title = Job_title::query()->OrderBy('name')->get();
92 111  
93 112 $Query_count = $Query->count();
... ... @@ -99,7 +118,12 @@ class MainController extends Controller
99 118  
100 119  
101 120 if ($request->ajax()) {
102   - return view('ajax.list_vacancies', compact('Query', 'Query_count', 'Name_categori', 'Reclama', 'categories'));
  121 + return view('ajax.list_vacancies', compact('Query',
  122 + 'Query_count',
  123 + 'Name_categori',
  124 + 'Reclama',
  125 + 'categories',
  126 + 'uid'));
103 127 } else {
104 128 //Вернуть все
105 129 return view('list_vacancies', compact('Query',
... ... @@ -107,20 +131,38 @@ class MainController extends Controller
107 131 'Reclama',
108 132 'Name_categori',
109 133 'categories',
110   - 'Job_title'));
  134 + 'Job_title',
  135 + 'uid'));
111 136 }
112 137 }
113 138  
114 139 // Образование
115 140 public function education(Request $request) {
116 141 $educations = Education::query();
117   - if ($request->has('search')) {
118   - $search = trim($request->has('search'));
  142 + if (($request->has('search')) && (!empty($request->get('search')))) {
  143 + $search = trim($request->get('search'));
119 144 $educations = $educations->where('name', 'LIKE', "%$search%");
120 145 }
  146 +
  147 + if ($request->get('sort')) {
  148 + $sort = $request->get('sort');
  149 + switch ($sort) {
  150 + case 'name_up': $educations = $educations->orderBy('name')->orderBy('id'); break;
  151 + case 'name_down': $educations = $educations->orderByDesc('name')->orderby('id'); break;
  152 + case 'created_at_up': $educations = $educations->OrderBy('created_at')->orderBy('id'); break;
  153 + case 'created_at_down': $educations = $educations->orderByDesc('created_at')->orderBy('id'); break;
  154 + case 'default': $educations = $educations->orderBy('id')->orderby('updated_at'); break;
  155 + default: $educations = $educations->orderBy('id')->orderby('updated_at'); break;
  156 + }
  157 + }
  158 +
121 159 $count_edu = $educations->count();
122 160 $educations = $educations->paginate(6);
123   - return view('education', compact('educations', 'count_edu'));
  161 + if ($request->ajax()) {
  162 + return view('ajax.education', compact('educations'));
  163 + } else {
  164 + return view('education', compact('educations', 'count_edu'));
  165 + }
124 166 }
125 167  
126 168 // Контакты
app/Http/Controllers/WorkerController.php
... ... @@ -3,13 +3,16 @@
3 3 namespace App\Http\Controllers;
4 4  
5 5 use App\Classes\RusDate;
  6 +use App\Http\Requests\DocumentsRequest;
6 7 use App\Models\Ad_employer;
  8 +use App\Models\ad_response;
7 9 use App\Models\Category;
8 10 use App\Models\Dop_info;
9 11 use App\Models\Employer;
10 12 use App\Models\infobloks;
11 13 use App\Models\Job_title;
12 14 use App\Models\Message;
  15 +use App\Models\place_works;
13 16 use App\Models\reclame;
14 17 use App\Models\sertification;
15 18 use App\Models\Static_worker;
... ... @@ -492,5 +495,60 @@ class WorkerController extends Controller
492 495 if ($count == 0) $dop_info = Dop_info::create($params);
493 496 return redirect()->route('worker.cabinet');
494 497 }
  498 +
  499 + // Добавление стандартного документа
  500 + public function add_document(Worker $worker) {
  501 + return view('workers.docs', compact('worker'));
  502 + }
  503 +
  504 + //Сохранение стандартого документа
  505 + public function add_document_save(DocumentsRequest $request) {
  506 + $params = $request->all();
  507 + $place_work = place_works::create($params);
  508 + return redirect()->route('worker.cabinet')->with('success', 'Вы успешно добавили запись!');
  509 + }
  510 +
  511 + // Редактирование документа
  512 + public function edit_document(place_works $doc, Worker $worker) {
  513 + return view('workers.docs-edit', compact('doc', 'worker'));
  514 + }
  515 +
  516 + //Сохранение отредактированного документа
  517 + public function edit_document_save(DocumentsRequest $request, place_works $doc) {
  518 + $params = $request->all();
  519 + $doc->update($params);
  520 +
  521 + return redirect()->route('worker.cabinet')->with('success', 'Вы успешно отредактировали запись!');
  522 + }
  523 +
  524 + // Удаление документа
  525 + public function delete_document(place_works $doc) {
  526 + $doc->delete();
  527 + return redirect()->route('worker.cabinet')->with('success', 'Вы успешно удалили запись!');
  528 + }
  529 +
  530 + //Отправка нового сообщения
  531 + public function new_message(Request $request) {
  532 + $params = $request->all();
  533 +
  534 + $id = $params['send_user_id'];
  535 + $message = new Message();
  536 + $message->user_id = $params['send_user_id'];
  537 + $message->to_user_id = $params['send_to_user_id'];
  538 + $message->title = $params['send_title'];
  539 + $message->text = $params['send_text'];
  540 + if ($request->has('send_file')) {
  541 + $message->file = $request->file('send_file')->store("worker/$id", 'public');
  542 + }
  543 + $message->flag_new = 1;
  544 + $id_message = $message->save();
  545 +
  546 + $data['message_id'] = $id_message;
  547 + $data['ad_employer_id'] = $params['send_vacancy'];
  548 + $data['job_title_id'] = $params['send_job_title_id'];
  549 + $data['flag'] = 1;
  550 + $ad_responce = ad_response::create($data);
  551 + return redirect()->route('worker.messages', ['type_message' => 'output']);
  552 + }
495 553 }
496 554  
app/Http/Requests/DocumentsRequest.php
... ... @@ -0,0 +1,47 @@
  1 +<?php
  2 +
  3 +namespace App\Http\Requests;
  4 +
  5 +use Illuminate\Foundation\Http\FormRequest;
  6 +
  7 +class DocumentsRequest extends FormRequest
  8 +{
  9 + /**
  10 + * Determine if the user is authorized to make this request.
  11 + *
  12 + * @return bool
  13 + */
  14 + public function authorize()
  15 + {
  16 + return true;
  17 + }
  18 +
  19 + /**
  20 + * Get the validation rules that apply to the request.
  21 + *
  22 + * @return array<string, mixed>
  23 + */
  24 + public function rules()
  25 + {
  26 + return [
  27 + 'job_title' => ['required', 'string', 'max:255'],
  28 + 'teplohod' => ['required', 'string', 'max:255'],
  29 + 'name_company' => ['required', 'string', 'max:255'],
  30 + ];
  31 + }
  32 +
  33 + public function messages() {
  34 + return [
  35 + 'required' => 'Укажите обязательное поле «:attribute»',
  36 + 'min' => [
  37 + 'string' => 'Поле «:attribute» должно быть не меньше :min символов',
  38 + 'integer' => 'Поле «:attribute» должно быть :min или больше',
  39 + 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт'
  40 + ],
  41 + 'max' => [
  42 + 'string' => 'Поле «:attribute» должно быть не больше :max символов',
  43 + 'integer' => 'Поле «:attribute» должно быть :max или меньше',
  44 + 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт'
  45 + ]];
  46 + }
  47 +}
app/Models/place_works.php
... ... @@ -8,4 +8,16 @@ use Illuminate\Database\Eloquent\Model;
8 8 class place_works extends Model
9 9 {
10 10 use HasFactory;
  11 +
  12 + public $fillable = [
  13 + 'job_title',
  14 + 'tanker',
  15 + 'teplohod',
  16 + 'GWT',
  17 + 'KBT',
  18 + 'Begin_work',
  19 + 'End_work',
  20 + 'name_company',
  21 + 'worker_id'
  22 + ];
11 23 }
app/Providers/MyServiceProvider.php
... ... @@ -76,14 +76,14 @@ class MyServiceProvider extends ServiceProvider
76 76 }
77 77 );
78 78  
79   - $views3 = ['layout.frontend'];
  79 + $views3 = ['layout.frontend', 'index'];
80 80  
81 81 View::composer($views3,
82 82 function($view){
83 83 $id = Auth::user();
84 84 $companies = Company::query()->limit(1)->get();
85   -
86   - $view->with(['UserId' => $id, 'companies' => $companies]);
  85 + $jobs = Job_title::query()->get();
  86 + $view->with(['UserId' => $id, 'companies' => $companies, 'jobs' => $jobs]);
87 87 }
88 88 );
89 89  
resources/views/ajax/companies.blade.php
... ... @@ -3,8 +3,12 @@
3 3 @foreach($emps as $emp)
4 4 <div class="main__employers-item">
5 5 <span class="main__employers-item-inner">
6   - <img src="{{ asset(Storage::url($emp->logo)) }}" alt="{{ $emp->name_company }}" class="main__employers-item-pic">
7   - <span class="main__employers-item-body">
  6 + @if (!empty($emp->logo))
  7 + <img src="{{ asset(Storage::url($emp->logo)) }}" alt="{{ $emp->name_company }}" class="main__employers-item-pic">
  8 + @else
  9 + <img src="{{ asset('images/default_ship.jpg') }}" alt="{{ $emp->name_company }}" class="main__employers-item-pic">
  10 + @endif
  11 + <span class="main__employers-item-body">
8 12 <b>{{ $emp->name_company }}</b>
9 13 <i>{{ $emp->ads->count() }} вакансия(ий)</i>
10 14 </span>
resources/views/ajax/companies2.blade.php
... ... @@ -3,7 +3,11 @@
3 3 @foreach($emps as $emp)
4 4 <div class="main__employers-item">
5 5 <span class="main__employers-item-inner">
6   - <img src="{{ asset(Storage::url($emp->logo)) }}" alt="{{ $emp->name_company }}" class="main__employers-item-pic">
  6 + @if (!empty($emp->logo))
  7 + <img src="{{ asset(Storage::url($emp->logo)) }}" alt="{{ $emp->name_company }}" class="main__employers-item-pic">
  8 + @else
  9 + <img src="{{ asset('images/default_ship.jpg') }}" alt="{{ $emp->name_company }}" class="main__employers-item-pic">
  10 + @endif
7 11 <span class="main__employers-item-body">
8 12 <b>{{ $emp->name_company }}</b>
9 13 <i>{{ $emp->ads->count() }} вакансия(ий)</i>
resources/views/ajax/education.blade.php
... ... @@ -0,0 +1,25 @@
  1 +<div class="main__ads" id="block" name="block">
  2 + @if ($educations->count())
  3 + @foreach($educations as $edu)
  4 + <div class="main__ads-item">
  5 + <div class="main__ads-item-pic">
  6 + <img src="@if (!empty($edu->image)) {{ asset(Storage::url($edu->image)) }} @else {{ asset('images/education.jpg') }} @endif" alt="{{ $edu->name }}">
  7 + <span>
  8 + <svg>
  9 + <use xlink:href="{{ asset('images/sprite.svg#v') }}"></use>
  10 + </svg>
  11 + </span>
  12 + </div>
  13 + <div class="main__ads-item-body">
  14 + <b>{{ $edu->name }}</b>
  15 + <span>{{ $edu->program_education->count() }} учебных направлений</span>
  16 + <a href="" class="button button_light">Читать далее</a>
  17 + </div>
  18 + </div>
  19 + @endforeach
  20 +
  21 + {{ $educations->appends($_GET)->links('paginate') }}
  22 + @else
  23 + <H2>Нет данных</H2>
  24 + @endif
  25 +</div>
resources/views/companies.blade.php
... ... @@ -78,7 +78,7 @@
78 78 <p class="thing__text">С другой стороны, социально-экономическое развитие не оставляет шанса для
79 79 существующих финансовых и административных условий.</p>
80 80 <div class="search thing__search">
81   - <input type="search" id="search" name="search" class="input" value="{{ (isset($_GET['search'])) ? $_GET['search'] : '' }}" placeholder="Введите наименование работодателя" required>
  81 + <input type="search" id="search" name="search" class="input" value="{{ (isset($_GET['search'])) ? $_GET['search'] : '' }}" placeholder="Введите наименование работодателя">
82 82 <button type="submit" class="button">Найти</button>
83 83 <span>
84 84 <svg>
... ... @@ -122,7 +122,11 @@
122 122 @foreach($emps as $emp)
123 123 <div class="main__employers-item">
124 124 <span class="main__employers-item-inner">
125   - <img src="{{ asset(Storage::url($emp->logo)) }}" alt="{{ $emp->name_company }}" class="main__employers-item-pic">
  125 + @if (!empty($emp->logo))
  126 + <img src="{{ asset(Storage::url($emp->logo)) }}" alt="{{ $emp->name_company }}" class="main__employers-item-pic">
  127 + @else
  128 + <img src="{{ asset('images/default_ship.jpg') }}" alt="{{ $emp->name_company }}" class="main__employers-item-pic">
  129 + @endif
126 130 <span class="main__employers-item-body">
127 131 <b>{{ $emp->name_company }}</b>
128 132 <i>{{ $emp->ads->count() }} вакансия(ий)</i>
... ... @@ -153,7 +157,11 @@
153 157 @foreach($emps as $emp)
154 158 <div class="main__employers-item">
155 159 <span class="main__employers-item-inner">
156   - <img src="{{ asset(Storage::url($emp->logo)) }}" alt="{{ $emp->name_company }}" class="main__employers-item-pic">
  160 + @if (!empty($emp->logo))
  161 + <img src="{{ asset(Storage::url($emp->logo)) }}" alt="{{ $emp->name_company }}" class="main__employers-item-pic">
  162 + @else
  163 + <img src="{{ asset('images/default_ship.jpg') }}" alt="{{ $emp->name_company }}" class="main__employers-item-pic">
  164 + @endif
157 165 <span class="main__employers-item-body">
158 166 <b>{{ $emp->name_company }}</b>
159 167 <i>{{ $emp->ads->count() }} вакансия(ий)</i>
resources/views/education.blade.php
... ... @@ -10,31 +10,13 @@
10 10  
11 11 $.ajax({
12 12 type: "GET",
13   - url: "{{ route('shipping_companies') }}",
  13 + url: "{{ route('education') }}",
14 14 data: "sort="+val_+"&block=1",
15 15 success: function (data) {
16 16 console.log('Выбор сортировки');
17 17 console.log(data);
18   - $('#block_1').html(data);
19   - },
20   - headers: {
21   - 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
22   - },
23   - error: function (data) {
24   - data = JSON.stringify(data);
25   - console.log('Error: ' + data);
26   - }
27   - });
28   -
29   - $.ajax({
30   - type: "GET",
31   - url: "{{ route('shipping_companies') }}",
32   - data: "sort="+val_+"&block=2",
33   - success: function (data) {
34   - console.log('Выбор сортировки2');
35   - console.log(data);
36   - history.pushState({}, '', "{{ route('shipping_companies') }}?sort="+val_+"@if (isset($_GET['page']))&page={{ $_GET['page'] }}@endif");
37   - $('#block_2').html(data);
  18 + $('#block').html(data);
  19 + history.pushState({}, '', "{{ route('education') }}?sort="+val_+"@if (isset($_GET['page']))&page={{ $_GET['page'] }}@endif");
38 20 },
39 21 headers: {
40 22 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
... ... @@ -49,6 +31,8 @@
49 31 $(document).ready(function(){
50 32 var sel = $('#select2-sort_ajax-container');
51 33 var key = getUrlParameter('sort');
  34 + console.log(sel);
  35 + console.log(key);
52 36  
53 37 if (key !=='') {
54 38 console.log(key);
... ... @@ -103,8 +87,10 @@
103 87 </div>
104 88 </div>
105 89 </div>
106   - @if ($educations->count())
107   - <div class="main__ads">
  90 +
  91 +
  92 + <div class="main__ads" id="block" name="block">
  93 + @if ($educations->count())
108 94 @foreach($educations as $edu)
109 95 <div class="main__ads-item">
110 96 <div class="main__ads-item-pic">
... ... @@ -123,11 +109,12 @@
123 109 </div>
124 110 @endforeach
125 111  
  112 + {{ $educations->appends($_GET)->links('paginate') }}
  113 + @else
  114 + <H2>Нет данных</H2>
  115 + @endif
126 116 </div>
127   - {{ $educations->appends($_GET)->links('paginate') }}
128   - @else
129   - <H2>Нет данных</H2>
130   - @endif
  117 +
131 118 <!--<div class="pagination">
132 119 <a href="#" class="pagination__nav pagination__nav_prev">
133 120 <svg>
resources/views/index.blade.php
1 1 @extends('layout.frontend', ['title' => 'Главная страница РекаМоре'])
2 2  
3 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 4  
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   - let d = JSON.parse(data);
21   - if(typeof d['REDIRECT'] !== "undefined") {
22   - location.href = d['REDIRECT'];
23   - console.log(d['REDIRECT']);
24   - }
25   - if (typeof d['ERROR'] !== "undefined") {
26   - console.log(d['ERROR']);
27   - $('#message_error').html(d['ERROR']);
28   - }
29   - console.log(d['REDIRECT']);
30   - //$('#block_1').html(data);
31   - },
32   - headers: {
33   - 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
34   - },
35   - error: function (data) {
36   - data = JSON.stringify(data);
37   - console.log('Error: ' + data);
38   - }
39   - });
40   - });
41   -
42   - $(document).on('click', '#button_reg_worker', function() {
43   - var field_login = $('#email_worker');
44   - var field_pwd = $('#password_worker');
45   - var field_confirm_pwd = $('#password_confirmation_worker');
46   - var field_politik_worker = $('#politik_worker');
47   - var field_telephone_worker = $('#telephone_worker');
48   - var field_job_titles_worker = $('#job_titles_worker');
49   - var field_surname_worker = $('#surname_worker');
50   - var field_name_man = $('#name_man_worker');
51   - var field_surname2_worker = $('#surname2_worker');
52   -
53   - var login = field_login.val();
54   - var pwd = field_pwd.val();
55   - var confirm_pwd = field_confirm_pwd.val();
56   - var politik = field_politik_worker.val();
57   - var telephone = field_telephone_worker.val();
58   - var job_titles = field_job_titles_worker.val();
59   - var surname = field_surname_worker.val();
60   - var name_man = field_name_man.val();
61   - var surname2 = field_surname2_worker.val();
62   -
63   -
64   - console.log('login: '+login+' password: '+pwd);
65   -
66   - $.ajax({
67   - type: "GET",
68   - url: "{{ route('register_worker') }}",
69   - data: "email="+login+"&password="+pwd+"&confirmed="+confirm_pwd+"&politik="+politik+
70   - "&telephone="+telephone+"&job_titles="+job_titles+"&surname="+surname+"&name_man="+name_man+
71   - "&surname2="+surname2+"&subscribe_email="+login,
72   - success: function (data) {
73   - console.log('Вход в систему');
74   - let d = JSON.parse(data);
75   - if(typeof d['REDIRECT'] !== "undefined") {
76   - console.log(d['REDIRECT']);
77   - location.href = d['REDIRECT'];
78   - }
79   - if (typeof d['ERROR'] !== "undefined") {
80   - console.log(d['ERROR']);
81   - $('#block-info').css({'display': 'block'});
82   - $('#messages_error_reg').html(d['ERROR']);
83   - }
84   - console.log(d['REDIRECT']);
85   -
86   - },
87   - headers: {
88   - 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
89   - },
90   - error: function (data) {
91   - data = JSON.stringify(data);
92   - console.log('Error: ' + data);
93   - }
94   - });
95   -
96   - return false;
97   - });
98   -
99   - $(document).on('click', '#button_reg_employer', function() {
100   - var field_login = $('#email_employer');
101   - var field_pwd = $('#password_employer');
102   - var field_confirm_pwd = $('#password_confirmation_employer');
103   - var field_politik_employer = $('#politik_employer');
104   - var field_telephone_employer = $('#telephone_employer');
105   - var field_company_employer = $('#company_employer');
106   - var field_surname_employer = $('#surname_employer');
107   - var field_name_man_employer = $('#name_man_employer');
108   - var field_surname2_employer = $('#surname2_employer');
109   -
110   - var login = field_login.val();
111   - var pwd = field_pwd.val();
112   - var confirm_pwd = field_confirm_pwd.val();
113   - var politik = field_politik_employer.val();
114   - var telephone = field_telephone_employer.val();
115   - var company_employer = field_company_employer.val();
116   - var surname = field_surname_employer.val();
117   - var name_man = field_name_man_employer.val();
118   - var surname2 = field_surname2_employer.val();
119   -
120   -
121   - console.log('login: '+login+' password: '+pwd);
122   -
123   -
124   - $.ajax({
125   - type: "GET",
126   - url: "{{ route('register_employer') }}",
127   - data: "email="+login+"&password="+pwd+"&confirmed="+confirm_pwd+"&politik="+politik+
128   - "&telephone="+telephone+"&name_company="+company_employer+"&surname="+surname+"&name_man="+name_man+
129   - "&surname2="+surname2+"&subscribe_email="+login,
130   - success: function (data) {
131   - console.log('Вход в систему');
132   - let d = JSON.parse(data);
133   - if(typeof d['REDIRECT'] !== "undefined") {
134   - console.log(d['REDIRECT']);
135   - location.href = d['REDIRECT'];
136   - }
137   - if (typeof d['ERROR'] !== "undefined") {
138   - console.log(d['ERROR']);
139   - $('#block-info').css({'display': 'block'});
140   - $('#messages_error_reg').html(d['ERROR']);
141   - }
142   - console.log(d['REDIRECT']);
143   -
144   - },
145   - headers: {
146   - 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
147   - },
148   - error: function (data) {
149   - data = JSON.stringify(data);
150   - console.log('Error: ' + data);
151   - }
152   - });
153   -
154   - return false;
155   - });
156   - </script>
157 5 @endsection
158 6  
159 7 @section('content')
... ... @@ -350,9 +198,9 @@
350 198 <div class="info__item">
351 199 <div class="info__text">Телеграм — Подпишитесь на наш телеграм канал и получайте уведомления о
352 200 новых вакансиях прямо на свой смартфон</div>
353   - <a href="#" class="info__link" style="background:#20A0E1">
  201 + <a href="{{ $companies[0]->telegram }}" class="info__link" style="background:#20A0E1">
354 202 <svg>
355   - <use xlink:href="images/sprite.svg#tg"></use>
  203 + <use xlink:href="{{ asset('images/sprite.svg#tg') }}"></use>
356 204 </svg>
357 205 Телеграм
358 206 </a>
... ... @@ -360,9 +208,9 @@
360 208 <div class="info__item">
361 209 <div class="info__text">ВКонтакте — Лучшие вакансии за неделю выкладываем именно тут, информация
362 210 о судоходных компаниях, инструкции по работе с сайтом, конкурсы и многое другое</div>
363   - <a href="#" class="info__link" style="background:#2787F5">
  211 + <a href="{{ $companies[0]->vkontact }}" class="info__link" style="background:#2787F5">
364 212 <svg>
365   - <use xlink:href="images/sprite.svg#vk"></use>
  213 + <use xlink:href="{{ asset('images/sprite.svg#vk') }}"></use>
366 214 </svg>
367 215 ВКонтакте
368 216 </a>
resources/views/info_company.blade.php
... ... @@ -62,6 +62,23 @@
62 62  
63 63 }
64 64 });
  65 +
  66 + //end
  67 + $(document).on('click', '.js_send_it_button', function() {
  68 + var this_ = $(this);
  69 + var code_user_id = this_.attr('data-uid');
  70 + var code_to_user_id = this_.attr('data-tuid');
  71 + var code_vacancy = this_.attr('data-vacancy');
  72 + var user_id = $('#send_user_id');
  73 + var to_user_id = $('#send_to_user_id');
  74 + var vacancy = $('#send_vacancy');
  75 +
  76 + console.log('Клик на кнопки...');
  77 +
  78 + user_id.val(code_user_id);
  79 + to_user_id.val(code_to_user_id);
  80 + vacancy.val(code_vacancy);
  81 + });
65 82 </script>
66 83 @endsection
67 84  
... ... @@ -93,7 +110,7 @@
93 110 </svg>
94 111 {{ $company[0]->ads->count() }} вакансии
95 112 </button>
96   - <a href="" class="button">
  113 + <a data-fancybox data-src="#send" data-vacancy="0" data-uid="{{ $user_id }}" data-tuid="{{ $company[0]->users->id }}" data-options='{"touch":false,"autoFocus":false}' class="js_send_it_button button">
97 114 Написать сообщение
98 115 </a>
99 116 </div>
resources/views/js/modals.blade.php
... ... @@ -0,0 +1,154 @@
  1 +<script>
  2 + console.log('Test system');
  3 + $(document).on('click', '#button_send', function() {
  4 + var field_login = $('#email');
  5 + var field_pwd = $('#password');
  6 + var login_val = field_login.val();
  7 + var pwd_val = field_pwd.val();
  8 +
  9 + console.log('login: '+login_val+' password: '+pwd_val);
  10 +
  11 + $.ajax({
  12 + type: "GET",
  13 + url: "{{ route('login') }}",
  14 + data: "email="+login_val+"&password="+pwd_val,
  15 + success: function (data) {
  16 + console.log('Вход в систему');
  17 + let d = JSON.parse(data);
  18 + if(typeof d['REDIRECT'] !== "undefined") {
  19 + location.href = d['REDIRECT'];
  20 + console.log(d['REDIRECT']);
  21 + }
  22 + if (typeof d['ERROR'] !== "undefined") {
  23 + console.log(d['ERROR']);
  24 + $('#message_error').html(d['ERROR']);
  25 + }
  26 + console.log(d['REDIRECT']);
  27 + //$('#block_1').html(data);
  28 + },
  29 + headers: {
  30 + 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  31 + },
  32 + error: function (data) {
  33 + data = JSON.stringify(data);
  34 + console.log('Error: ' + data);
  35 + }
  36 + });
  37 + });
  38 +
  39 + $(document).on('click', '#button_reg_worker', function() {
  40 + var field_login = $('#email_worker');
  41 + var field_pwd = $('#password_worker');
  42 + var field_confirm_pwd = $('#password_confirmation_worker');
  43 + var field_politik_worker = $('#politik_worker');
  44 + var field_telephone_worker = $('#telephone_worker');
  45 + var field_job_titles_worker = $('#job_titles_worker');
  46 + var field_surname_worker = $('#surname_worker');
  47 + var field_name_man = $('#name_man_worker');
  48 + var field_surname2_worker = $('#surname2_worker');
  49 +
  50 + var login = field_login.val();
  51 + var pwd = field_pwd.val();
  52 + var confirm_pwd = field_confirm_pwd.val();
  53 + var politik = field_politik_worker.val();
  54 + var telephone = field_telephone_worker.val();
  55 + var job_titles = field_job_titles_worker.val();
  56 + var surname = field_surname_worker.val();
  57 + var name_man = field_name_man.val();
  58 + var surname2 = field_surname2_worker.val();
  59 +
  60 +
  61 + console.log('login: '+login+' password: '+pwd);
  62 +
  63 + $.ajax({
  64 + type: "GET",
  65 + url: "{{ route('register_worker') }}",
  66 + data: "email="+login+"&password="+pwd+"&confirmed="+confirm_pwd+"&politik="+politik+
  67 + "&telephone="+telephone+"&job_titles="+job_titles+"&surname="+surname+"&name_man="+name_man+
  68 + "&surname2="+surname2+"&subscribe_email="+login,
  69 + success: function (data) {
  70 + console.log('Вход в систему');
  71 + let d = JSON.parse(data);
  72 + if(typeof d['REDIRECT'] !== "undefined") {
  73 + console.log(d['REDIRECT']);
  74 + location.href = d['REDIRECT'];
  75 + }
  76 + if (typeof d['ERROR'] !== "undefined") {
  77 + console.log(d['ERROR']);
  78 + $('#block-info').css({'display': 'block'});
  79 + $('#messages_error_reg').html(d['ERROR']);
  80 + }
  81 + console.log(d['REDIRECT']);
  82 +
  83 + },
  84 + headers: {
  85 + 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  86 + },
  87 + error: function (data) {
  88 + data = JSON.stringify(data);
  89 + console.log('Error: ' + data);
  90 + }
  91 + });
  92 +
  93 + return false;
  94 + });
  95 +
  96 + $(document).on('click', '#button_reg_employer', function() {
  97 + var field_login = $('#email_employer');
  98 + var field_pwd = $('#password_employer');
  99 + var field_confirm_pwd = $('#password_confirmation_employer');
  100 + var field_politik_employer = $('#politik_employer');
  101 + var field_telephone_employer = $('#telephone_employer');
  102 + var field_company_employer = $('#company_employer');
  103 + var field_surname_employer = $('#surname_employer');
  104 + var field_name_man_employer = $('#name_man_employer');
  105 + var field_surname2_employer = $('#surname2_employer');
  106 +
  107 + var login = field_login.val();
  108 + var pwd = field_pwd.val();
  109 + var confirm_pwd = field_confirm_pwd.val();
  110 + var politik = field_politik_employer.val();
  111 + var telephone = field_telephone_employer.val();
  112 + var company_employer = field_company_employer.val();
  113 + var surname = field_surname_employer.val();
  114 + var name_man = field_name_man_employer.val();
  115 + var surname2 = field_surname2_employer.val();
  116 +
  117 +
  118 + console.log('login: '+login+' password: '+pwd);
  119 +
  120 +
  121 + $.ajax({
  122 + type: "GET",
  123 + url: "{{ route('register_employer') }}",
  124 + data: "email="+login+"&password="+pwd+"&confirmed="+confirm_pwd+"&politik="+politik+
  125 + "&telephone="+telephone+"&name_company="+company_employer+"&surname="+surname+"&name_man="+name_man+
  126 + "&surname2="+surname2+"&subscribe_email="+login,
  127 + success: function (data) {
  128 + console.log('Вход в систему');
  129 + let d = JSON.parse(data);
  130 + if(typeof d['REDIRECT'] !== "undefined") {
  131 + console.log(d['REDIRECT']);
  132 + location.href = d['REDIRECT'];
  133 + }
  134 + if (typeof d['ERROR'] !== "undefined") {
  135 + console.log(d['ERROR']);
  136 + $('#block-info').css({'display': 'block'});
  137 + $('#messages_error_reg').html(d['ERROR']);
  138 + }
  139 + console.log(d['REDIRECT']);
  140 +
  141 + },
  142 + headers: {
  143 + 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  144 + },
  145 + error: function (data) {
  146 + data = JSON.stringify(data);
  147 + console.log('Error: ' + data);
  148 + }
  149 + });
  150 +
  151 + return false;
  152 + });
  153 +
  154 +</script>
resources/views/layout/frontend.blade.php
... ... @@ -232,9 +232,12 @@
232 232 </div> <!-- END BOTTOM WRAPPER -->
233 233  
234 234 <div hidden> <!-- BEGIN MODALS WRAPPER -->
235   - <!-- Отправить сообщение соискателю -->
  235 + <!-- Соискатель отправляет сообщение работодателю -->
236 236 @include('modals.send_worker')
237 237  
  238 + <!-- Работодатель отправляет сообщение соискателю -->
  239 + @include('modals.send_employer')
  240 +
238 241 <!-- Сообщение-предупреждение о том, что сообщения только можно отправить авторизованным пользователям -->
239 242 @include('modals.send_message_noaut')
240 243  
... ... @@ -253,41 +256,18 @@
253 256 <!-- Благодарность по отправке сообщения менеджеру -->
254 257 @include('modals.thank_you_send_manager')
255 258  
  259 + <!-- Благодарность после регистрации -->
  260 + @include('modals.thank_you_send_for_employer')
256 261  
257   - <div id="thanks-3" class="modal modal_bg">
258   - <div class="modal__body">
259   - <div class="modal__title">Спасибо!</div>
260   - <div class="modal__text">Вы успешно зарегистрировались</div>
261   - <div class="modal__text left"><span>Ваш аккаунт требует подтверждение администратора сайта. Администратор сайта должен изменить статус работодателя, чтобы вы смогли авторизоваться в системе.</span></div>
262   - <div class="modal__text left"><span>После подтверждения администратором, вам прейдет сообщение на электронную почту, о подтверждении регистрации.</span></div>
263   - <a href="#" class="button button_light modal__button">Войти</a>
264   - </div>
265   - </div>
  262 + <!-- Благодарность после регистрации для работника -->
  263 + @include('modals.thank_you_send_for_worker')
  264 +
  265 + <!-- Подтверждение удаления профиля -->
  266 + @include('modals.delete_profile')
  267 +
  268 + <!-- Подверждение об удалении профиля -->
  269 + @include('modals.success_delete_profile')
266 270  
267   - <div id="thanks-4" class="modal modal_bg">
268   - <div class="modal__body">
269   - <div class="modal__title">Спасибо!</div>
270   - <div class="modal__text">Ваше сообщение успешно отправлено администратору сайта на подтверждение.</div>
271   - <a href="#" class="button button_light modal__button">На главную</a>
272   - </div>
273   - </div>
274   - <div id="delete" class="modal modal_bg">
275   - <div class="modal__body">
276   - <div class="modal__title">Удалить профиль?</div>
277   - <div class="modal__text">Вы действительно хотите удалить свой профиль?</div>
278   - <div class="modal__buttons">
279   - <button href="button" class="button">Да</button>
280   - <button href="button" class="button button_light">Нет</button>
281   - </div>
282   - </div>
283   - </div>
284   - <div id="is-deleted" class="modal modal_bg">
285   - <div class="modal__body">
286   - <div class="modal__title">Профиль удален</div>
287   - <div class="modal__text">Вы успешно удалили свой профиль.</div>
288   - <a href="#" class="button button_light modal__button">На главную</a>
289   - </div>
290   - </div>
291 271 </div> <!-- END MODALS WRAPPER -->
292 272  
293 273  
... ... @@ -311,5 +291,7 @@
311 291 };
312 292 </script>
313 293 @yield('scripts')
  294 +
  295 +@include('js.modals')
314 296 </body>
315 297 </html>
resources/views/list_vacancies.blade.php
  1 +@php
  2 + use App\Classes\StatusUser;
  3 +@endphp
  4 +
1 5 @extends('layout.frontend', ['title' => 'Вакансии РекаМоре'])
2 6  
3 7 @section('scripts')
... ... @@ -17,6 +21,7 @@
17 21 console.log('Выбор сделан!');
18 22 console.log(data);
19 23 main_oskar.html(data);
  24 + history.pushState({}, '', "{{ route('education') }}?sort="+val_+"@if (isset($_GET['page']))&page={{ $_GET['page'] }}@endif");
20 25 },
21 26 headers: {
22 27 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
... ... @@ -27,13 +32,75 @@
27 32 }
28 33 });
29 34 });
  35 +
  36 + $(document).on('click', '.js_send_it_button', function() {
  37 + var this_ = $(this);
  38 + var code_user_id = this_.attr('data-uid');
  39 + var code_to_user_id = this_.attr('data-tuid');
  40 + var code_vacancy = this_.attr('data-vacancy');
  41 + var user_id = $('#send_user_id');
  42 + var to_user_id = $('#send_to_user_id');
  43 + var vacancy = $('#send_vacancy');
  44 +
  45 + console.log('Клик на кнопки...');
  46 +
  47 + user_id.val(code_user_id);
  48 + to_user_id.val(code_to_user_id);
  49 + vacancy.val(code_vacancy);
  50 + });
  51 +
  52 + $(document).on('change', '#sort_ajax', function() {
  53 + var this_ = $(this);
  54 + var val_ = this_.val();
  55 + console.log('sort items '+val_);
  56 +
  57 + $.ajax({
  58 + type: "GET",
  59 + url: "{{ route('list-vacancies', ['categories' => $categories->id]) }}",
  60 + data: "sort="+val_+"&block=1",
  61 + success: function (data) {
  62 + console.log('Выбор сортировки');
  63 + console.log(data);
  64 + $('#main_ockar').html(data);
  65 + history.pushState({}, '', "{{ route('list-vacancies', ['categories' => $categories->id]) }}?sort="+val_+"@if (isset($_GET['page']))&page={{ $_GET['page'] }}@endif");
  66 + },
  67 + headers: {
  68 + 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  69 + },
  70 + error: function (data) {
  71 + data = JSON.stringify(data);
  72 + console.log('Error: ' + data);
  73 + }
  74 + });
  75 + });
  76 +
  77 +
  78 +
  79 + $(document).ready(function(){
  80 + var sel = $('#select2-sort_ajax-container');
  81 + var key = getUrlParameter('sort');
  82 + console.log(sel);
  83 + console.log(key);
  84 +
  85 + if (key !=='') {
  86 + console.log(key);
  87 + switch (key) {
  88 + case "default": sel.html('Сортировка (по умолчанию)'); break;
  89 + case "name_up": sel.html('По имени (возрастание)'); break;
  90 + case "name_down": sel.html('По дате (убывание)'); break;
  91 + case "created_at_up": sel.html('По дате (возрастание)'); break;
  92 + case "created_at_down": sel.html('По дате (убывание)'); break;
  93 + }
  94 +
  95 + }
  96 + });
30 97 </script>
31 98 @include('js.favorite-vacancy')
32 99 @endsection
33 100 @section('content')
34 101 <section class="thing">
35 102 <div class="container">
36   - <form class="thing__body">
  103 + <form class="thing__body" action="{{ route('list-vacancies', ['categories' => $Name_categori[0]->id]) }}" method="POST">
37 104 <ul class="breadcrumbs thing__breadcrumbs">
38 105 <li><a href="{{ route('index') }}">Главная</a></li>
39 106 <li><a href="{{ route('vacancies') }}">Вакансии</a></li>
... ... @@ -49,7 +116,7 @@
49 116 </svg>
50 117 </div>
51 118 <select class="js-select2" id="jobs" name="jobs">
52   - <option value="0" disabled selected>Выберите должность</option>
  119 + <option value="0" selected>Выберите должность</option>
53 120 @if ($Job_title->count())
54 121 @foreach($Job_title as $JT)
55 122 <option value="{{ $JT->id }}">{{ $JT->name }}</option>
... ... @@ -74,14 +141,15 @@
74 141 <div class="select filters__select">
75 142 <select class="js-select2" id="sort_ajax" name="sort_ajax">
76 143 <option value="default">Сортировка (по умолчанию)</option>
77   - <option value="name (asc)">По имени (возрастание)</option>
78   - <option value="name (desc)">По имени (убывание)</option>
79   - <option value="created_at (asc)">По дате (возрастание)</option>
80   - <option value="created_at (desc)">По дате (убывание)</option>
  144 + <option value="name_up">По имени (возрастание)</option>
  145 + <option value="name_down">По имени (убывание)</option>
  146 + <option value="created_at_up">По дате (возрастание)</option>
  147 + <option value="created_at_down">По дате (убывание)</option>
81 148 </select>
82 149 </div>
83 150 </div>
84 151 </div>
  152 +
85 153 <div id="main_ockar" class="main__vacancies" name="main_ockar" style="width:100%;">
86 154 @foreach ($Query as $Q)
87 155 <div class="main__vacancies-item main__employer-page-two-item">
... ... @@ -142,8 +210,18 @@
142 210 @endif
143 211 </div>
144 212 <div class="main__employer-page-two-item-buttons">
145   - <button type="button"
146   - class="button main__employer-page-two-item-button">Откликнуться</button>
  213 + @guest
  214 + <button type="button" data-fancybox data-src="#question" data-options='{"touch":false,"autoFocus":false}'
  215 + class="button main__employer-page-two-item-button">Откликнуться</button>
  216 + @else
  217 + @if (App\Classes\StatusUser::Status()==1)
  218 + <button type="button" data-fancybox data-src="#send" data-vacancy="{{ $Q->id }}" data-uid="{{ $uid }}" data-tuid="{{ $Q->employer->user_id }}" data-options='{"touch":false,"autoFocus":false}'
  219 + class="button main__employer-page-two-item-button js_send_it_button">Откликнуться</button>
  220 + @else
  221 + <button type="button" data-fancybox data-src="#send2" data-vacancy="{{ $Q->id }}" data-uid="{{ $uid }}" data-tuid="{{ $Q->employer->user_id }}" data-options='{"touch":false,"autoFocus":false}'
  222 + class="button main__employer-page-two-item-button js_send_it_button">Откликнуться</button>
  223 + @endif
  224 + @endguest
147 225 <a href="{{ route('vacancie', ['vacancy' => $Q->id]) }}" class="button button_light main__employer-page-two-item-button">Подробнее</a>
148 226 </div>
149 227 <div class="main__employer-page-two-item-bottom">
... ... @@ -159,7 +237,6 @@
159 237 <div style="margin-top: 20px">
160 238 {{ $Query->appends($_GET)->links('paginate') }}
161 239 </div>
162   -
163 240 </div><!-- конец -->
164 241 </div>
165 242 </div>
resources/views/modals/delete_profile.blade.php
... ... @@ -0,0 +1,10 @@
  1 +<div id="delete" class="modal modal_bg">
  2 + <div class="modal__body">
  3 + <div class="modal__title">Удалить профиль?</div>
  4 + <div class="modal__text">Вы действительно хотите удалить свой профиль?</div>
  5 + <div class="modal__buttons">
  6 + <button href="button" class="button">Да</button>
  7 + <button href="button" class="button button_light">Нет</button>
  8 + </div>
  9 + </div>
  10 +</div>
resources/views/modals/send_employer.blade.php
1   -<div id="send" class="modal">
  1 +<div id="send2" class="modal">
2 2 <div class="modal__body">
3   - <div class="modal__title">Отправить сообщение "Наяда"</div>
4   - <div class="modal__text">Если у вас возникли вопросы насчет вакансии, вы можете задать их работодателю</div>
  3 + <div class="modal__title">Отправить сообщение соискателю</div>
  4 + <div class="modal__text">Если у вас есть предложение для соискателя, вы можете сделать предложение</div>
5 5 <form class="modal__form">
6 6 <div class="modal__form-item error">
7 7 <input id="i1" type="text" class="input" placeholder="Тема" required>
resources/views/modals/send_message_noaut.blade.php
... ... @@ -3,8 +3,8 @@
3 3 <div class="modal__title">Отправить сообщение "Наяда"</div>
4 4 <div class="modal__text">Вы должны быть авторизованы, чтобы отправить личное сообщение</div>
5 5 <div class="modal__buttons">
6   - <a href="#" class="button">Войти</a>
7   - <a href="#" class="button button_light">Зарегистрироваться</a>
  6 + <a data-fancybox data-src="#sign" data-options='{"touch":false,"autoFocus":false}' class="button">Войти</a>
  7 + <a data-fancybox data-src="#reg" data-options='{"touch":false,"autoFocus":false}' class="button button_light">Зарегистрироваться</a>
8 8 </div>
9 9 </div>
10 10 </div>
resources/views/modals/send_worker.blade.php
  1 +<script>
  2 + console.log('Сообщение работнику');
  3 + $("#form_worker" ).submit(function(event) {
  4 + var val = $(this).val();
  5 + var send_title = $('#send_title');
  6 + var send_title_val = send_title.val();
  7 +
  8 + console.log('Click form.');
  9 + });
  10 +
  11 + $(document).on('change', '#btn_send_file', function() {
  12 +
  13 + var send_name = $('#send_name');
  14 + var send_name_val = send_name.val();
  15 + var send_name_file = $('#send_name_file');
  16 +
  17 + console.log(send_name_val);
  18 + send_name_file.html(send_name_val);
  19 +
  20 + });
  21 +</script>
1 22 <div id="send" class="modal">
2 23 <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>
  24 + <div class="modal__title">Отправить сообщение работодателю</div>
  25 + <div class="modal__text">Если вы готовы владеете компитентыми навыками, напишите данному работодателю письмо</div>
  26 + <form class="modal__form" id="form_worker" name="form_worker" enctype="multipart/form-data" action="{{ route('worker.new_message') }}" method="POST">
  27 + @csrf
  28 + <div class="modal__form-item">
  29 + Отправитель сообщения:
  30 + <input type="text" id="send_user_id" name="send_user_id" class="input" placeholder="user_id" value="">
  31 + Получатель сообщения:
  32 + <input type="text" id="send_to_user_id" name="send_to_user_id" class="input" placeholder="to_user_id" value="">
  33 + Вакансия:
  34 + <input type="text" id="send_vacancy" name="send_vacancy" class="input" placeholder="vacancy" value="">
  35 + </div>
  36 + <div class="modal__form-item send_title_div error_">
  37 + <input id="send_title" name="send_title" type="text" class="input" placeholder="Тема" required>
8 38 <label for="title">Не заполнено поле</label>
9 39 </div>
10   - <div class="modal__form-item">
11   - <textarea id="i2" class="textarea" id="text" name="text" placeholder="Напишите текст с предложением о работе" required></textarea>
  40 + <div class="modal__form-item send_title_div error_">
  41 + <select class="js-select2" name="send_job_title_id" id="send_job_title_id">
  42 + @if ($jobs->count())
  43 + @foreach($jobs as $j)
  44 + <option value="{{ $j->id }}">{{ $j->name }} ({{ $j->id }})</option>
  45 + @endforeach
  46 + @endif
  47 + </select>
  48 + <label for="title">Не заполнено поле</label>
  49 + </div>
  50 + <div class="modal__form-item send_text_div">
  51 + <textarea id="i2" class="textarea" id="send_text" name="send_text" placeholder="Напишите текст с предложением о работе" required></textarea>
12 52 <label for="i2">Не заполнено поле</label>
13 53 </div>
14 54 <div class="modal__form-item">
15 55 <div class="file">
16   - <label class="file__input">
17   - <input type="file" name="file" id="name">
  56 + <label class="file__input" id="btn_send_file" name="btn_send_file">
  57 + <input type="file" name="send_file" id="send_name">
18 58 <span class="button button_light">
19 59 <svg>
20 60 <use xlink:href="{{ asset('images/sprite.svg#share') }}"></use>
... ... @@ -23,13 +63,13 @@
23 63 </span>
24 64 </label>
25 65  
26   - <div class="file__list">
  66 + <div class="file__list" id="div_file" name="div_file">
27 67 <div class="file__list-item">
28 68 <div class="file__list-item-left">
29 69 <svg>
30 70 <use xlink:href="{{ asset('images/sprite.svg#clip') }}"></use>
31 71 </svg>
32   - <span id="name_file" name="name_file">123</span>
  72 + <span id="send_name_file" name="send_name_file"></span>
33 73 </div>
34 74 <button type="button" class="file__list-item-right js-parent-remove">
35 75 <svg>
... ... @@ -41,7 +81,7 @@
41 81 </div>
42 82 </div>
43 83 <div class="modal__form-item">
44   - <button type="submit" class="button">Отправить</button>
  84 + <button type="submit" id="submit_form_worker" name="submit_form_worker" class="button">Отправить</button>
45 85 </div>
46 86 </form>
47 87 </div>
resources/views/modals/success_delete_profile.blade.php
... ... @@ -0,0 +1,7 @@
  1 +<div id="is-deleted" class="modal modal_bg">
  2 + <div class="modal__body">
  3 + <div class="modal__title">Профиль удален</div>
  4 + <div class="modal__text">Вы успешно удалили свой профиль.</div>
  5 + <a href="#" class="button button_light modal__button">На главную</a>
  6 + </div>
  7 +</div>
resources/views/modals/thank_you_send_for_employer.blade.php
... ... @@ -0,0 +1,9 @@
  1 +<div id="thanks-3" class="modal modal_bg">
  2 + <div class="modal__body">
  3 + <div class="modal__title">Спасибо!</div>
  4 + <div class="modal__text">Вы успешно зарегистрировались</div>
  5 + <div class="modal__text left"><span>Ваш аккаунт требует подтверждение администратора сайта. Администратор сайта должен изменить статус работодателя, чтобы вы смогли авторизоваться в системе.</span></div>
  6 + <div class="modal__text left"><span>После подтверждения администратором, вам прейдет сообщение на электронную почту, о подтверждении регистрации.</span></div>
  7 + <a href="#" class="button button_light modal__button">Войти</a>
  8 + </div>
  9 +</div>
resources/views/modals/thank_you_send_for_worker.blade.php
... ... @@ -0,0 +1,7 @@
  1 +<div id="thanks-4" class="modal modal_bg">
  2 + <div class="modal__body">
  3 + <div class="modal__title">Спасибо!</div>
  4 + <div class="modal__text">Ваше сообщение успешно отправлено администратору сайта на подтверждение.</div>
  5 + <a href="#" class="button button_light modal__button">На главную</a>
  6 + </div>
  7 +</div>
resources/views/workers/cabinet.blade.php
... ... @@ -443,16 +443,16 @@
443 443 <div class="cabinet__works-spoiler active">
444 444 <div class="cabinet__works-spoiler-left">
445 445 <div class="cabinet__works-spoiler-buttons">
446   - <button type="button" class="button button_light js-works-remove">
  446 + <a href="{{ route('worker.delete_document', ['doc' => $company->id]) }}" class="button button_light js-works-remove">
447 447 <svg>
448 448 <use xlink:href="{{ asset('images/sprite.svg#del') }}"></use>
449 449 </svg>
450   - </button>
451   - <button type="button" class="button button_light js-works-edit">
  450 + </a>
  451 + <a href="{{ route('worker.edit_document', ['doc' => $company->id, 'worker' => $Worker[0]->id]) }}" type="button" class="button button_light js-works-edit">
452 452 <svg>
453 453 <use xlink:href="{{ asset('images/sprite.svg#pencil') }}"></use>
454 454 </svg>
455   - </button>
  455 + </a>
456 456 </div>
457 457 <div class="cabinet__works-spoiler-text">Место работы {{ $i }}</div>
458 458 </div>
... ... @@ -519,7 +519,7 @@
519 519 @endforeach
520 520 @endif
521 521  
522   - <div class="cabinet__works-item">
  522 + <!--<div class="cabinet__works-item">
523 523 <div class="cabinet__works-spoiler">
524 524 <div class="cabinet__works-spoiler-left">
525 525 <div class="cabinet__works-spoiler-text">Новая работа</div>
... ... @@ -585,8 +585,8 @@
585 585 </div>
586 586 </div>
587 587 </div>
588   - </div>
589   - <button type="button" id="new_work" name="new_work" class="button button_light cabinet__works-add">Новое место работы</button>
  588 + </div>-->
  589 + <a href="{{ route('worker.add_document', ['worker' => $Worker[0]->id]) }}" id="new_work" name="new_work" class="button button_light cabinet__works-add">Новое место работы</a>
590 590 </div>
591 591 </div>
592 592  
resources/views/workers/docs-edit.blade.php
... ... @@ -0,0 +1,101 @@
  1 +@extends('layout.frontend', ['title' => 'Редактирование стандартного документа - РекаМоре'])
  2 +
  3 +@section('scripts')
  4 +
  5 +@endsection
  6 +
  7 +@section('content')
  8 + <section class="cabinet">
  9 + <div class="container">
  10 + <ul class="breadcrumbs cabinet__breadcrumbs">
  11 + <li><a href="{{ route('index') }}">Главная</a></li>
  12 + <li><b>Личный кабинет</b></li>
  13 + </ul>
  14 + <div class="cabinet__wrapper">
  15 + <div class="cabinet__side">
  16 + <div class="cabinet__side-toper">
  17 + @include('workers.emblema')
  18 +
  19 + </div>
  20 +
  21 + @include('workers.menu', ['item' => 1])
  22 + </div>
  23 +
  24 + <form class="cabinet__body" action="{{ route('worker.edit_document_save', ['doc' => $doc->id]) }}" method="POST">
  25 + @csrf
  26 + <div class="cabinet__works-item">
  27 + @include('messages_error')
  28 + <div class="cabinet__works-spoiler active">
  29 + <div class="cabinet__works-spoiler-left">
  30 + <div class="cabinet__works-spoiler-text">Редактирование работы</div>
  31 + </div>
  32 + <button type="button" class="cabinet__works-spoiler-right js-parent-toggle">
  33 + <svg>
  34 + <use xlink:href="{{ asset('images/sprite.svg#arrow-bold') }}"></use>
  35 + </svg>
  36 + </button>
  37 + </div>
  38 + <div class="cabinet__works-body">
  39 + <div class="cabinet__inputs">
  40 + <input type="hidden" name="worker_id" id="worker_id" value="{{ $worker->id }}"/>
  41 + <div class="cabinet__inputs-item form-group">
  42 + <label class="form-group__label">Должность</label>
  43 + <div class="form-group__item">
  44 + <input type="text" name="job_title" id="job_title" class="input" value="{{ old('job_title') ?? $doc->job_title ?? '' }}">
  45 + </div>
  46 + </div>
  47 + <div class="cabinet__inputs-item form-group">
  48 + <label class="form-group__label">Опыт работы в танкерном флоте</label>
  49 + <div class="form-group__item">
  50 + <select class="js-select2" name="tanker" id="tanker">
  51 + <option value="0" @if ($doc->tanker == 0) seleted @endif>Нет</option>
  52 + <option value="1" @if ($doc->tanker == 1) seleted @endif>Да</option>
  53 + </select>
  54 + </div>
  55 + </div>
  56 + <div class="cabinet__inputs-item form-group">
  57 + <label class="form-group__label">Название теплохода</label>
  58 + <div class="form-group__item">
  59 + <input type="text" name="teplohod" id="teplohod" class="input" value="{{ old('teplohod') ?? $doc->teplohod ?? '' }}">
  60 + </div>
  61 + </div>
  62 + <div class="cabinet__inputs-item form-group">
  63 + <label class="form-group__label">Тип (GWT)</label>
  64 + <div class="form-group__item">
  65 + <input type="text" name="GWT" id="GWT" class="input" value="{{ old('GWT') ?? $doc->GWT ?? '' }}">
  66 + </div>
  67 + </div>
  68 + <div class="cabinet__inputs-item form-group">
  69 + <label class="form-group__label">ГД (кВТ)</label>
  70 + <div class="form-group__item">
  71 + <input type="text" name="KBT" id="KBT" class="input" value="{{ old('KBT') ?? $doc->KBT ?? '' }}">
  72 + </div>
  73 + </div>
  74 + <div class="cabinet__inputs-item form-group">
  75 + <label class="form-group__label">Начало контракта</label>
  76 + <div class="form-group__item">
  77 + <input type="text" name="Begin_work" id="Begin_work" class="input" value="{{ old('begin_work') ?? $doc->begin_work ?? '' }}">
  78 + </div>
  79 + </div>
  80 + <div class="cabinet__inputs-item form-group">
  81 + <label class="form-group__label">Окончание контракта</label>
  82 + <div class="form-group__item">
  83 + <input type="text" name="End_work" id="End_work" class="input" value="{{ old('end_work') ?? $doc->end_work ?? '' }}">
  84 + </div>
  85 + </div>
  86 + <div class="cabinet__inputs-item form-group">
  87 + <label class="form-group__label">Название компании</label>
  88 + <div class="form-group__item">
  89 + <input type="text" name="name_company" id="name_company" class="input" value="{{ old('name_company') ?? $doc->name_company ?? '' }}">
  90 + </div>
  91 + </div>
  92 + <button type="submit" class="button">Сохранить</button>
  93 + </div>
  94 + </div>
  95 + </div>
  96 + </form>
  97 + </div>
  98 + </div>
  99 + </section>
  100 + </div>
  101 +@endsection
resources/views/workers/docs.blade.php
... ... @@ -0,0 +1,102 @@
  1 +@extends('layout.frontend', ['title' => 'Добавление стандартного документа - РекаМоре'])
  2 +
  3 +@section('scripts')
  4 +
  5 +@endsection
  6 +
  7 +@section('content')
  8 + <section class="cabinet">
  9 + <div class="container">
  10 + <ul class="breadcrumbs cabinet__breadcrumbs">
  11 + <li><a href="{{ route('index') }}">Главная</a></li>
  12 + <li><b>Личный кабинет</b></li>
  13 + </ul>
  14 + <div class="cabinet__wrapper">
  15 + <div class="cabinet__side">
  16 + <div class="cabinet__side-toper">
  17 + @include('workers.emblema')
  18 +
  19 + </div>
  20 +
  21 + @include('workers.menu', ['item' => 1])
  22 + </div>
  23 +
  24 + <form class="cabinet__body" action="{{ route('worker.add_document_save') }}" method="POST">
  25 + @csrf
  26 + <div class="cabinet__works-item">
  27 + @include('messages_error')
  28 + <div class="cabinet__works-spoiler active">
  29 + <div class="cabinet__works-spoiler-left">
  30 + <div class="cabinet__works-spoiler-text">Новая работа</div>
  31 + </div>
  32 + <button type="button" class="cabinet__works-spoiler-right js-parent-toggle">
  33 + <svg>
  34 + <use xlink:href="{{ asset('images/sprite.svg#arrow-bold') }}"></use>
  35 + </svg>
  36 + </button>
  37 + </div>
  38 + <div class="cabinet__works-body">
  39 + <div class="cabinet__inputs">
  40 + <input type="hidden" name="worker_id" id="worker_id" value="{{ $worker->id }}"/>
  41 + <div class="cabinet__inputs-item form-group">
  42 + <label class="form-group__label">Должность</label>
  43 + <div class="form-group__item">
  44 + <input type="text" name="job_title" id="job_title" class="input" value="Не указано">
  45 + </div>
  46 + </div>
  47 + <div class="cabinet__inputs-item form-group">
  48 + <label class="form-group__label">Опыт работы в танкерном флоте</label>
  49 + <div class="form-group__item">
  50 + <select class="js-select2" name="tanker" id="tanker">
  51 + <option value="0">Нет</option>
  52 + <option value="1">Да</option>
  53 + </select>
  54 + </div>
  55 + </div>
  56 + <div class="cabinet__inputs-item form-group">
  57 + <label class="form-group__label">Название теплохода</label>
  58 + <div class="form-group__item">
  59 + <input type="text" name="teplohod" id="teplohod" class="input" value="Не указано">
  60 + </div>
  61 + </div>
  62 + <div class="cabinet__inputs-item form-group">
  63 + <label class="form-group__label">Тип (GWT)</label>
  64 + <div class="form-group__item">
  65 + <input type="text" name="GWT" id="GWT" class="input" value="Не указано">
  66 + </div>
  67 + </div>
  68 + <div class="cabinet__inputs-item form-group">
  69 + <label class="form-group__label">ГД (кВТ)</label>
  70 + <div class="form-group__item">
  71 + <input type="text" name="KBT" id="KBT" class="input" value="Не указано">
  72 + </div>
  73 + </div>
  74 + <div class="cabinet__inputs-item form-group">
  75 + <label class="form-group__label">Начало контракта</label>
  76 + <div class="form-group__item">
  77 + <input type="text" name="Begin_work" id="Begin_work" class="input" value="Не указано">
  78 + </div>
  79 + </div>
  80 + <div class="cabinet__inputs-item form-group">
  81 + <label class="form-group__label">Окончание контракта</label>
  82 + <div class="form-group__item">
  83 + <input type="text" name="End_work" id="End_work" class="input" value="Не указано">
  84 + </div>
  85 + </div>
  86 + <div class="cabinet__inputs-item form-group">
  87 + <label class="form-group__label">Название компании</label>
  88 + <div class="form-group__item">
  89 + <input type="text" name="name_company" id="name_company" class="input" value="Не указано">
  90 + </div>
  91 + </div>
  92 + <button type="submit" class="button">Сохранить</button>
  93 + <a href="{{ route('worker.cabinet') }}" class="button">Назад</a>
  94 + </div>
  95 + </div>
  96 + </div>
  97 + </form>
  98 + </div>
  99 + </div>
  100 + </section>
  101 + </div>
  102 +@endsection
resources/views/workers/dop_info.blade.php
... ... @@ -56,5 +56,4 @@
56 56 </div>
57 57 </section>
58 58 </div>
59   -
60 59 @endsection
... ... @@ -438,7 +438,7 @@ Route::get(&#39;logout&#39;, [EmployerController::class, &#39;logout&#39;])-&gt;name(&#39;logout&#39;);
438 438 Route::get( 'register_worker', [WorkerController::class, 'register_worker'])->name('register_worker');
439 439 Route::get('register_employer', [EmployerController::class, 'register_employer'])->name('register_employer');
440 440  
441   -// Борьба против колорадских жуков и их геориевской ленточки
  441 +// Борьба против колорадских жуков
442 442 Route::get('clear_cookie', function() {
443 443 \App\Classes\Cookies_vacancy::clear_vacancy();
444 444 return redirect()->route('index');
... ... @@ -483,6 +483,16 @@ Route::group([
483 483 // Добавление документа-диплома
484 484 Route::get('кабинет/add_diplom/{worker}', [WorkerController::class, 'add_diplom'])->name('add_diplom');
485 485 Route::post('кабинет/add_diplom', [WorkerController::class, 'add_diplom_save'])->name('dop_info_save');
  486 +
  487 + // Добавление стандартного диплома
  488 + Route::get('кабинет/add_document/{worker}', [WorkerController::class, 'add_document'])->name('add_document');
  489 + Route::post('кабинет/add_document/', [WorkerController::class, 'add_document_save'])->name('add_document_save');
  490 + Route::get('кабинет/edit_document/{doc}/{worker}', [WorkerController::class, 'edit_document'])->name('edit_document');
  491 + Route::post('кабинет/edit_document/{doc}', [WorkerController::class, 'edit_document_save'])->name('edit_document_save');
  492 + Route::get('кабинет/delete_document/{doc}', [WorkerController::class, 'delete_document'])->name('delete_document');
  493 +
  494 + // Отправка сообщения работодателю от соискателя
  495 + Route::post('сообщение/', [WorkerController::class, 'new_message'])->name('new_message');
486 496 });
487 497  
488 498 // Личный кабинет работодателя