Commit f46e3cd1e4bc62fadc9ca3dd4b156b61f5ab7314
Exists in
master
Коммит четверг
Showing 37 changed files Side-by-side Diff
- app/Http/Controllers/Admin/Ad_EmployersController.php
- app/Http/Controllers/EmployerController.php
- app/Http/Controllers/MainController.php
- app/Http/Controllers/WorkerController.php
- app/Http/Requests/VacancyRequestEdit.php
- app/Http/Requests/VacansiaRequiest.php
- app/Models/ResponseWork.php
- database/migrations/2024_03_11_141704_create_response_works_table.php
- resources/views/admin/ad_employers/add.blade.php
- resources/views/admin/ad_employers/edit.blade.php
- resources/views/admin/reclames/index.blade.php
- resources/views/ajax/list_category.blade.php
- resources/views/ajax/list_vacancies.blade.php
- resources/views/detail_new.blade.php
- resources/views/employers/add_vacancy.blade.php
- resources/views/employers/edit_vacancy.blade.php
- resources/views/employers/list_vacancy.blade.php
- resources/views/employers/menu.blade.php
- resources/views/errors/404.blade.php
- resources/views/index.blade.php
- resources/views/info_company_new.blade.php
- resources/views/layout/frontend.blade.php
- resources/views/layout/pdf.blade.php
- resources/views/list_vacancies.blade.php
- resources/views/modals/send_admin.blade.php
- resources/views/modals/send_employer_new.blade.php
- resources/views/modals/send_login.blade.php
- resources/views/modals/send_message_noaut.blade.php
- resources/views/modals/send_message_noaut2.blade.php
- resources/views/modals/send_worker_new.blade.php
- resources/views/news-list.blade.php
- resources/views/paginate.blade.php
- resources/views/vacance-item.blade.php
- resources/views/vacancies.blade.php
- resources/views/worker.blade.php
- resources/views/workers/cabinet.blade.php
- routes/web.php
app/Http/Controllers/Admin/Ad_EmployersController.php
... | ... | @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Admin; |
5 | 5 | use App\Http\Controllers\Controller; |
6 | 6 | use App\Models\Ad_employer; |
7 | 7 | use App\Models\Ad_jobs; |
8 | +use App\Models\Category; | |
8 | 9 | use App\Models\Employer; |
9 | 10 | use App\Models\Job_title; |
10 | 11 | use App\Models\User; |
... | ... | @@ -77,14 +78,11 @@ class Ad_EmployersController extends Controller |
77 | 78 | } |
78 | 79 | } |
79 | 80 | |
80 | - /** | |
81 | - * Show the form for creating a new resource | |
82 | - * @return \Illuminate\Http\Response | |
83 | - */ | |
84 | 81 | public function create() |
85 | 82 | { |
86 | 83 | $job_titles = Job_title::query()->active()->get(); |
87 | - return view('admin.ad_employers.add', compact('job_titles')); | |
84 | + $categories = Category::query()->get(); | |
85 | + return view('admin.ad_employers.add', compact('job_titles', 'categories')); | |
88 | 86 | } |
89 | 87 | |
90 | 88 | /** |
... | ... | @@ -143,12 +141,12 @@ class Ad_EmployersController extends Controller |
143 | 141 | { |
144 | 142 | $sel = Array(); |
145 | 143 | $job_titles = Job_title::active()->get(); |
146 | - | |
144 | + $categories = Category::query()->get(); | |
147 | 145 | foreach ($ad_employer->jobs as $j) { |
148 | 146 | $sel[] = $j->id; |
149 | 147 | } |
150 | 148 | |
151 | - return view('admin.ad_employers.edit', compact('ad_employer', 'job_titles', 'sel')); | |
149 | + return view('admin.ad_employers.edit', compact('ad_employer', 'categories', 'job_titles', 'sel')); | |
152 | 150 | } |
153 | 151 | |
154 | 152 | /** |
app/Http/Controllers/EmployerController.php
... | ... | @@ -6,6 +6,7 @@ use App\Classes\RusDate; |
6 | 6 | use App\Classes\Tools; |
7 | 7 | use App\Http\Requests\FlotRequest; |
8 | 8 | use App\Http\Requests\MessagesRequiest; |
9 | +use App\Http\Requests\VacancyRequestEdit; | |
9 | 10 | use App\Http\Requests\VacansiaRequiest; |
10 | 11 | use App\Mail\MailSotrudnichestvo; |
11 | 12 | use App\Mail\SendAllMessages; |
... | ... | @@ -108,17 +109,17 @@ class EmployerController extends Controller |
108 | 109 | public function cabinet_vacancie() { |
109 | 110 | $id = Auth()->user()->id; |
110 | 111 | $jobs = Job_title::query()->OrderBy('name')->get(); |
111 | - | |
112 | + $categories = Category::query()->get(); | |
112 | 113 | $Employer = Employer::query()->with('users')->with('ads')->with('flots')-> |
113 | 114 | WhereHas('users', |
114 | 115 | function (Builder $query) use ($id) {$query->Where('id', $id); |
115 | 116 | })->get(); |
116 | 117 | |
117 | - return view('employers.add_vacancy', compact('Employer', 'jobs')); | |
118 | + return view('employers.add_vacancy', compact('Employer', 'jobs' , 'categories')); | |
118 | 119 | } |
119 | 120 | |
120 | 121 | // Сохранение вакансии |
121 | - public function cabinet_vacancy_save1(VacansiaRequiest $request) { | |
122 | + public function cabinet_vacancy_save1(VacancyRequestEdit $request) { | |
122 | 123 | $params = $request->all(); |
123 | 124 | $jobs['min_salary'] = $params['min_salary']; |
124 | 125 | $jobs['max_salary'] = $params['max_salary']; |
... | ... | @@ -157,9 +158,20 @@ class EmployerController extends Controller |
157 | 158 | public function vacancy_edit(Ad_employer $ad_employer) { |
158 | 159 | $id = Auth()->user()->id; |
159 | 160 | $jobs = Job_title::query()->OrderBy('name')->get(); |
160 | - $Employer = Employer::query()->where('user_id', $id)->first(); | |
161 | + $categories = Category::query()->get(); | |
162 | + $Employer = Employer::query()->with('users')->with('ads')->with('flots')-> | |
163 | + where('user_id', $id)->first(); | |
164 | + | |
165 | + return view('employers.edit_vacancy', compact('ad_employer', 'categories','Employer', 'jobs')); | |
166 | + } | |
161 | 167 | |
162 | - return view('employers.edit_vacancy', compact('ad_employer', 'Employer', 'jobs')); | |
168 | + // Сохранение-редактирование записи | |
169 | + public function vacancy_save_me(VacancyRequestEdit $request, Ad_employer $ad_employer) { | |
170 | + $all = $request->all(); | |
171 | + | |
172 | + $ad_employer->update($all); | |
173 | + | |
174 | + return redirect()->route('employer.vacancy_list'); | |
163 | 175 | } |
164 | 176 | |
165 | 177 | // Сохранение карточки вакансии |
app/Http/Controllers/MainController.php
... | ... | @@ -58,16 +58,11 @@ class MainController extends Controller |
58 | 58 | |
59 | 59 | //категории и вакансии |
60 | 60 | if (($request->has('job')) && ($request->get('job') > 0)) { |
61 | - $categories = $categories->Where('job_title_id', '=', $request->get('job')) | |
62 | - ->OrderByDesc('created_at') | |
63 | - ->GroupBy('categories.id') | |
64 | - ->get(); | |
65 | - } else { | |
66 | - $categories = $categories->OrderByDesc('created_at') | |
67 | - ->GroupBy('categories.id') | |
68 | - ->get(); | |
61 | + $categories = $categories->Where('job_title_id', '=', $request->get('job')); | |
69 | 62 | } |
70 | 63 | |
64 | + $categories = $categories->OrderByDesc('created_at')->GroupBy('categories.id')->get(); | |
65 | + | |
71 | 66 | if ($request->ajax()) { |
72 | 67 | return view('ajax.vacancies', compact('categories')); |
73 | 68 | } else { |
... | ... | @@ -119,17 +114,24 @@ class MainController extends Controller |
119 | 114 | |
120 | 115 | $Query = $Query->OrderBy('updated_at')->paginate(3); |
121 | 116 | |
122 | - $Reclama = reclame::query()->limit(3)->get(); | |
117 | + $Reclama = reclame::query()->get(); | |
123 | 118 | |
124 | 119 | |
125 | 120 | |
126 | 121 | if ($request->ajax()) { |
127 | - return view('ajax.list_vacancies', compact('Query', | |
128 | - 'Query_count', | |
129 | - 'Name_categori', | |
130 | - 'Reclama', | |
131 | - 'categories', | |
132 | - 'uid')); | |
122 | + if ($request->has('title')) { | |
123 | + return view('ajax.list_category', compact( | |
124 | + 'Name_categori' | |
125 | + )); | |
126 | + } else { | |
127 | + return view('ajax.list_vacancies', compact('Query', | |
128 | + 'Query_count', | |
129 | + 'Name_categori', | |
130 | + 'Reclama', | |
131 | + 'categories', | |
132 | + 'Job_title', | |
133 | + 'uid')); | |
134 | + } | |
133 | 135 | } else { |
134 | 136 | //Вернуть все |
135 | 137 | return view('list_vacancies', compact('Query', |
... | ... | @@ -184,7 +186,7 @@ class MainController extends Controller |
184 | 186 | |
185 | 187 | $rules = [ |
186 | 188 | 'email' => 'required|string|email', |
187 | - 'password' => 'required|string', | |
189 | + 'password' => 'required|string|min:3|max:25', | |
188 | 190 | ]; |
189 | 191 | |
190 | 192 | $messages = [ |
app/Http/Controllers/WorkerController.php
... | ... | @@ -14,6 +14,7 @@ use App\Models\Job_title; |
14 | 14 | use App\Models\Message; |
15 | 15 | use App\Models\place_works; |
16 | 16 | use App\Models\reclame; |
17 | +use App\Models\ResponseWork; | |
17 | 18 | use App\Models\sertification; |
18 | 19 | use App\Models\Static_worker; |
19 | 20 | use App\Models\User; |
... | ... | @@ -23,6 +24,7 @@ use Barryvdh\DomPDF\Facade\Pdf; |
23 | 24 | use Carbon\Carbon; |
24 | 25 | use Illuminate\Auth\Events\Registered; |
25 | 26 | use Illuminate\Database\Eloquent\Builder; |
27 | +use Illuminate\Database\Eloquent\Model; | |
26 | 28 | use Illuminate\Http\JsonResponse; |
27 | 29 | use Illuminate\Http\Request; |
28 | 30 | use Illuminate\Support\Facades\Auth; |
... | ... | @@ -123,24 +125,53 @@ class WorkerController extends Controller |
123 | 125 | ->with('infobloks'); |
124 | 126 | $Query = $Query->where('id', '=', $worker->id); |
125 | 127 | $Query = $Query->get(); |
128 | + | |
129 | + $get_date = date('Y.m'); | |
130 | + $c = Static_worker::query()->where('year_month', '=', $get_date) | |
131 | + ->where('user_id', '=', $worker->id) | |
132 | + ->get(); | |
133 | + | |
134 | + if ($c->count() > 0) { | |
135 | + $upd = Static_worker::find($c[0]->id); | |
136 | + $upd->lookin = $upd->lookin + 1; | |
137 | + $upd->save(); | |
138 | + } else { | |
139 | + $crt = new Static_worker(); | |
140 | + $crt->lookin = 1; | |
141 | + $crt->year_month = $get_date; | |
142 | + $crt->user_id = $worker->user_id; | |
143 | + $crt->save(); | |
144 | + } | |
145 | + | |
146 | + $stat = Static_worker::query()->where('year_month', '=', $get_date) | |
147 | + ->where('user_id', '=', $worker->id) | |
148 | + ->get(); | |
149 | + | |
126 | 150 | return view('worker', compact('Query', 'status_work')); |
127 | 151 | } |
128 | 152 | |
129 | 153 | // скачать анкету соискателя |
130 | 154 | public function resume_download(Worker $worker) |
131 | 155 | { |
132 | - $arr_house = ['0' => '$1000000000000000000']; | |
156 | + $status_work = $this->status_work; | |
157 | + $Query = Worker::query()->with('users')->with('job_titles') | |
158 | + ->with('place_worker')->with('sertificate')->with('prev_company') | |
159 | + ->with('infobloks'); | |
160 | + $Query = $Query->where('id', '=', $worker->id); | |
161 | + $Query = $Query->get()->toArray(); | |
133 | 162 | |
134 | - view()->share('house',$arr_house); | |
163 | + view()->share('Query',$Query); | |
135 | 164 | |
136 | - $pdf = PDF::loadView('layout.pdf', $arr_house); //->setPaper('a4', 'landscape'); | |
165 | + $pdf = PDF::loadView('layout.pdf', $Query); //->setPaper('a4', 'landscape'); | |
137 | 166 | |
138 | 167 | return $pdf->stream(); |
139 | 168 | } |
140 | 169 | |
141 | 170 | // Кабинет работника |
142 | - public function cabinet() | |
171 | + public function cabinet(Request $request) | |
143 | 172 | { |
173 | + $get_date = date('Y.m'); | |
174 | + | |
144 | 175 | $id = Auth()->user()->id; |
145 | 176 | $Worker = Worker::query()->with('users')->with('sertificate')->with('prev_company')-> |
146 | 177 | with('infobloks')->with('place_worker')-> |
... | ... | @@ -151,7 +182,39 @@ class WorkerController extends Controller |
151 | 182 | $Job_titles = Job_title::query()->OrderBy('name')->get(); |
152 | 183 | $Infoblocks = infobloks::query()->OrderBy('name')->get(); |
153 | 184 | |
154 | - return view('workers.cabinet', compact('Worker', 'Job_titles', 'Infoblocks')); | |
185 | + $stat = Static_worker::query()->where('year_month', '=', $get_date) | |
186 | + ->where('user_id', '=', $Worker[0]->id) | |
187 | + ->get(); | |
188 | + | |
189 | + $persent = 10; | |
190 | + if ((!empty($Worker[0]->status_work)) && (!empty($Worker[0]->telephone)) && | |
191 | + (!empty($Worker[0]->email)) && (!empty($Worker[0]->experience)) && | |
192 | + (!empty($Worker[0]->city)) && (!empty($Worker[0]->old_year))) { | |
193 | + $persent = $persent + 40; | |
194 | + } | |
195 | + | |
196 | + if ($Worker[0]->sertificate->count() > 0) { | |
197 | + $persent = $persent + 15; | |
198 | + } | |
199 | + | |
200 | + if ($Worker[0]->infobloks->count() > 0) { | |
201 | + $persent = $persent + 20; | |
202 | + } | |
203 | + | |
204 | + if ($Worker[0]->prev_company->count() > 0) { | |
205 | + $persent = $persent + 10; | |
206 | + } | |
207 | + | |
208 | + if (!empty($Worker[0]->photo)) { | |
209 | + // 5% | |
210 | + $persent = $persent + 5; | |
211 | + } | |
212 | + | |
213 | + if ($request->has('print')) { | |
214 | + dd($Worker); | |
215 | + } else { | |
216 | + return view('workers.cabinet', compact('Worker', 'persent', 'Job_titles', 'Infoblocks', 'stat')); | |
217 | + } | |
155 | 218 | } |
156 | 219 | |
157 | 220 | // Сохранение данных |
... | ... | @@ -379,6 +442,31 @@ class WorkerController extends Controller |
379 | 442 | } |
380 | 443 | } |
381 | 444 | |
445 | + | |
446 | + // Звездная оценка и ответ | |
447 | + public function stars_answer(Request $request) { | |
448 | + $params = $request->all(); | |
449 | + $rules = [ | |
450 | + 'message' => ['required', 'string', 'max:255'], | |
451 | + ]; | |
452 | + | |
453 | + $messages = [ | |
454 | + 'required' => 'Укажите обязательное поле', | |
455 | + 'min' => [ | |
456 | + 'string' => 'Поле «:attribute» должно быть не меньше :min символов', | |
457 | + 'integer' => 'Поле «:attribute» должно быть :min или больше', | |
458 | + 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' | |
459 | + ], | |
460 | + 'max' => [ | |
461 | + 'string' => 'Поле «:attribute» должно быть не больше :max символов', | |
462 | + 'integer' => 'Поле «:attribute» должно быть :max или меньше', | |
463 | + 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' | |
464 | + ] | |
465 | + ]; | |
466 | + $response_worker = ResponseWork::create($params); | |
467 | + return redirect()->route('resume_profile', ['worker' => $request->get('worker_id')])->with('success', 'Ваше сообщение было отправлено!'); | |
468 | + } | |
469 | + | |
382 | 470 | // Создание пользователя |
383 | 471 | protected function create(array $data) |
384 | 472 | { |
... | ... | @@ -447,7 +535,7 @@ class WorkerController extends Controller |
447 | 535 | |
448 | 536 | } |
449 | 537 | |
450 | - //Переписка пись-пись-пись | |
538 | + //Переписка | |
451 | 539 | public function dialog(User_Model $user1, User_Model $user2) { |
452 | 540 | if (isset($user2->id)) { |
453 | 541 | $companion = User_Model::query()->with('workers')-> |
... | ... | @@ -597,5 +685,6 @@ class WorkerController extends Controller |
597 | 685 | $ad_responce = ad_response::create($data); |
598 | 686 | return redirect()->route('worker.messages', ['type_message' => 'output']); |
599 | 687 | } |
688 | + | |
600 | 689 | } |
601 | 690 |
app/Http/Requests/VacancyRequestEdit.php
... | ... | @@ -0,0 +1,116 @@ |
1 | +<?php | |
2 | + | |
3 | +namespace App\Http\Requests; | |
4 | + | |
5 | +use Illuminate\Foundation\Http\FormRequest; | |
6 | + | |
7 | +class VacancyRequestEdit extends FormRequest | |
8 | +{ | |
9 | + public function authorize() | |
10 | + { | |
11 | + return true; | |
12 | + } | |
13 | + | |
14 | + /** | |
15 | + * Get the validation rules that apply to the request. | |
16 | + * | |
17 | + * @return array<string, mixed> | |
18 | + */ | |
19 | + | |
20 | + public function rules() | |
21 | + { | |
22 | + $Arr = [ | |
23 | + 'name' => [ | |
24 | + 'required', | |
25 | + 'min:3', | |
26 | + 'max:255', | |
27 | + ], | |
28 | + | |
29 | + 'category_id' => [ | |
30 | + 'numeric', | |
31 | + 'min:0', | |
32 | + 'max:9999999', | |
33 | + ], | |
34 | + | |
35 | + 'telephone' => [ | |
36 | + 'min:3', | |
37 | + 'max:255', | |
38 | + ], | |
39 | + | |
40 | + 'email' => [ | |
41 | + 'min:3', | |
42 | + 'max:255', | |
43 | + ], | |
44 | + | |
45 | + 'salary' => [ | |
46 | + 'numeric', | |
47 | + 'min:3', | |
48 | + 'max:255', | |
49 | + ], | |
50 | + | |
51 | + 'min_salary' => [ | |
52 | + 'numeric', | |
53 | + 'min:0', | |
54 | + 'max:9999999', | |
55 | + ], | |
56 | + | |
57 | + 'max_salary' => [ | |
58 | + 'numeric', | |
59 | + 'min:0', | |
60 | + 'max:9999999', | |
61 | + ], | |
62 | + | |
63 | + 'city' => [ | |
64 | + 'min:3', | |
65 | + 'max:255', | |
66 | + ], | |
67 | + | |
68 | + 'job_title_id' => [ | |
69 | + 'numeric', | |
70 | + 'min:1', | |
71 | + 'max:9999999' | |
72 | + ] | |
73 | + ]; | |
74 | + | |
75 | + return [ | |
76 | + 'name' => [ | |
77 | + 'required', | |
78 | + 'min:3', | |
79 | + 'max:255', | |
80 | + ], | |
81 | + | |
82 | + 'category_id' => [ | |
83 | + 'numeric', | |
84 | + 'min:0', | |
85 | + 'max:9999999', | |
86 | + ], | |
87 | + | |
88 | + 'telephone' => [ | |
89 | + 'min:3', | |
90 | + 'max:255', | |
91 | + ], | |
92 | + | |
93 | + 'email' => [ | |
94 | + 'min:3', | |
95 | + 'max:255', | |
96 | + ],]; | |
97 | + } | |
98 | + | |
99 | + public function messages() { | |
100 | + return [ | |
101 | + 'required' => 'Поле «:attribute» обязательно для заполнения', | |
102 | + 'unique' => 'Такое значение поля «:attribute» уже используется', | |
103 | + 'min' => [ | |
104 | + 'string' => 'Поле «:attribute» должно быть не меньше :min символов', | |
105 | + 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' | |
106 | + ], | |
107 | + 'max' => [ | |
108 | + 'string' => 'Поле «:attribute» должно быть не больше :max символов', | |
109 | + 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' | |
110 | + ], | |
111 | + 'mimes' => 'Файл «:attribute» должен иметь формат :values', | |
112 | + 'numeric' => 'В поле «:attribute» должно быть указано целое число от 0 до 9999999', | |
113 | + ]; | |
114 | + | |
115 | + } | |
116 | +} |
app/Http/Requests/VacansiaRequiest.php
... | ... | @@ -24,7 +24,7 @@ class VacansiaRequiest extends FormRequest |
24 | 24 | |
25 | 25 | public function rules() |
26 | 26 | { |
27 | - return [ | |
27 | + $Arr = [ | |
28 | 28 | 'name' => [ |
29 | 29 | 'required', |
30 | 30 | 'min:3', |
... | ... | @@ -76,6 +76,29 @@ class VacansiaRequiest extends FormRequest |
76 | 76 | 'max:9999999' |
77 | 77 | ] |
78 | 78 | ]; |
79 | + | |
80 | + return [ | |
81 | + 'name' => [ | |
82 | + 'required', | |
83 | + 'min:3', | |
84 | + 'max:255', | |
85 | + ], | |
86 | + | |
87 | + 'category_id' => [ | |
88 | + 'numeric', | |
89 | + 'min:0', | |
90 | + 'max:9999999', | |
91 | + ], | |
92 | + | |
93 | + 'telephone' => [ | |
94 | + 'min:3', | |
95 | + 'max:255', | |
96 | + ], | |
97 | + | |
98 | + 'email' => [ | |
99 | + 'min:3', | |
100 | + 'max:255', | |
101 | + ],]; | |
79 | 102 | } |
80 | 103 | |
81 | 104 | public function messages() { |
app/Models/ResponseWork.php
... | ... | @@ -0,0 +1,17 @@ |
1 | +<?php | |
2 | + | |
3 | +namespace App\Models; | |
4 | + | |
5 | +use Illuminate\Database\Eloquent\Factories\HasFactory; | |
6 | +use Illuminate\Database\Eloquent\Model; | |
7 | + | |
8 | +class ResponseWork extends Model | |
9 | +{ | |
10 | + use HasFactory; | |
11 | + | |
12 | + public $fillable = [ | |
13 | + 'worker_id', | |
14 | + 'stars', | |
15 | + 'message' | |
16 | + ]; | |
17 | +} |
database/migrations/2024_03_11_141704_create_response_works_table.php
... | ... | @@ -0,0 +1,34 @@ |
1 | +<?php | |
2 | + | |
3 | +use Illuminate\Database\Migrations\Migration; | |
4 | +use Illuminate\Database\Schema\Blueprint; | |
5 | +use Illuminate\Support\Facades\Schema; | |
6 | + | |
7 | +return new class extends Migration | |
8 | +{ | |
9 | + /** | |
10 | + * Run the migrations. | |
11 | + * | |
12 | + * @return void | |
13 | + */ | |
14 | + public function up() | |
15 | + { | |
16 | + Schema::create('response_works', function (Blueprint $table) { | |
17 | + $table->id(); | |
18 | + $table->bigInteger('worker_id')->nullable(false); | |
19 | + $table->integer('stars')->nullable(true); | |
20 | + $table->string('message', 255)->default('Без комментариев'); | |
21 | + $table->timestamps(); | |
22 | + }); | |
23 | + } | |
24 | + | |
25 | + /** | |
26 | + * Reverse the migrations. | |
27 | + * | |
28 | + * @return void | |
29 | + */ | |
30 | + public function down() | |
31 | + { | |
32 | + Schema::dropIfExists('response_works'); | |
33 | + } | |
34 | +}; |
resources/views/admin/ad_employers/add.blade.php
... | ... | @@ -18,7 +18,7 @@ |
18 | 18 | placeholder="Название вакансии" value="{{ old('name') ?? '' }}" |
19 | 19 | /> |
20 | 20 | @error('name') |
21 | - <span class="text-xs text-red-600 dark:text-red-400"> | |
21 | + <span class="text-xs text-red-600"> | |
22 | 22 | {{ $message }} |
23 | 23 | </span> |
24 | 24 | @enderror |
... | ... | @@ -41,6 +41,22 @@ |
41 | 41 | </select> |
42 | 42 | </label><br> |
43 | 43 | |
44 | + <label class="block mt-4 text-sm"> | |
45 | + <span class="text-gray-700 dark:text-gray-400"> | |
46 | + Категории локации | |
47 | + </span> | |
48 | + <select | |
49 | + class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-multiselect focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" | |
50 | + name="category_id" id="category_id" | |
51 | + > | |
52 | + @foreach($categories as $it) | |
53 | + <option value="{{$it->id}}" @if (old('category_id') == $it->id) selected @endif > | |
54 | + {{ $it->name }} ({{$it->id}}) | |
55 | + </option> | |
56 | + @endforeach | |
57 | + </select> | |
58 | + </label><br> | |
59 | + | |
44 | 60 | <label class="block text-sm"> |
45 | 61 | <span class="text-gray-700 dark:text-gray-400">Текст-описание вакансии</span> |
46 | 62 | <textarea class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-textarea focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray ckeditor" name="text" placeholder="Описание вакансии (text/html)" |
resources/views/admin/ad_employers/edit.blade.php
... | ... | @@ -41,6 +41,22 @@ |
41 | 41 | </select> |
42 | 42 | </label><br> |
43 | 43 | |
44 | + <label class="block mt-4 text-sm"> | |
45 | + <span class="text-gray-700 dark:text-gray-400"> | |
46 | + Категории локации | |
47 | + </span> | |
48 | + <select | |
49 | + class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-multiselect focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" | |
50 | + name="category_id" id="category_id" | |
51 | + > | |
52 | + @foreach($categories as $it) | |
53 | + <option value="{{$it->id}}" @if (old('category_id') == $it->id) selected @endif > | |
54 | + {{ $it->name }} ({{$it->id}}) | |
55 | + </option> | |
56 | + @endforeach | |
57 | + </select> | |
58 | + </label><br> | |
59 | + | |
44 | 60 | <label class="block text-sm"> |
45 | 61 | <span class="text-gray-700 dark:text-gray-400">Текст-описание вакансии</span> |
46 | 62 | <textarea class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-textarea focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray ckeditor" name="text" placeholder="Описание вакансии (text/html)" |
resources/views/admin/reclames/index.blade.php
... | ... | @@ -37,8 +37,8 @@ |
37 | 37 | console.log('click button'); |
38 | 38 | //let id = e.target.id; |
39 | 39 | let form = document.getElementById("form_modal_del"); |
40 | - form.action = "<?=$_SERVER['APP_URL'];?>admin/reclames/delete/"+e.target.getAttribute('data-reclame'); | |
41 | - //document.getElementById("title_modal").innerHTML = id; | |
40 | + form.action = "{{ env('APP_URL') }}admin/reclames/delete/"+e.target.getAttribute('data-reclame'); | |
41 | + document.getElementById("title_modal").innerHTML = id; | |
42 | 42 | console.log(e.target.getAttribute('data-employer')); |
43 | 43 | console.log(e.target.getAttribute('data-user')); |
44 | 44 | |
... | ... | @@ -61,9 +61,10 @@ |
61 | 61 | Добавить рекламу |
62 | 62 | </a> |
63 | 63 | <br> |
64 | - <pre><? //print_r($_SERVER);?></pre> | |
64 | + | |
65 | 65 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> |
66 | 66 | |
67 | + | |
67 | 68 | <div class="w-full overflow-x-auto"> |
68 | 69 | <table class="w-full whitespace-no-wrap"> |
69 | 70 | <thead> |
resources/views/ajax/list_category.blade.php
... | ... | @@ -0,0 +1 @@ |
1 | +Категория: {{ $Name_categori[0]->name }} |
resources/views/ajax/list_vacancies.blade.php
... | ... | @@ -63,7 +63,7 @@ |
63 | 63 | <a href="{{ route('vacancie', ['vacancy' => $Q->id]) }}" class="button button_light main__employer-page-two-item-button">Подробнее</a> |
64 | 64 | </div> |
65 | 65 | <div class="main__employer-page-two-item-bottom"> |
66 | - <div class="main__employer-page-two-item-bottom-date">{{ $Q->created_at }}</div> | |
66 | + <div class="main__employer-page-two-item-bottom-date">{{ date('d.m.Y H:i:s', strtotime($Q->created_at)) }}</div> | |
67 | 67 | <button type="button" data-val="{{ $Q->id }}" class="like main__employer-page-two-item-bottom-like js-toggle <?=App\Classes\Cookies_vacancy::selected_vacancy($Q->id);?>"> |
68 | 68 | <svg> |
69 | 69 | <use xlink:href="{{ asset('images/sprite.svg#heart') }}"></use> |
resources/views/detail_new.blade.php
... | ... | @@ -57,7 +57,7 @@ |
57 | 57 | <li><b>{{ $title }}</b></li> |
58 | 58 | </ul> |
59 | 59 | <img src="{{ asset(Storage::url($Query[0]->image)) }}" alt="{{ $title }}" class="thing__pic thing__pic_two"> |
60 | - <time class="thing__date">{{ $Query[0]->created_at }}</time> | |
60 | + <time class="thing__date">{{ date('d.m.Y H:i:s', strtotime($Query[0]->created_at)) }}</time> | |
61 | 61 | <h1 class="thing__title">{{ $title }}</h1> |
62 | 62 | <p class="thing__text">{{ mb_strimwidth($Query[0]->text, 0, 100, "...") }}</p> |
63 | 63 | </div> |
... | ... | @@ -74,7 +74,6 @@ |
74 | 74 | </div> |
75 | 75 | </div> |
76 | 76 | </div> |
77 | - | |
78 | 77 | </main> |
79 | 78 | <section class="news"> |
80 | 79 | <div class="container"> |
... | ... | @@ -101,7 +100,7 @@ |
101 | 100 | <div class="news__item"> |
102 | 101 | <img src="{{ asset(Storage::url($Q_item->image)) }}" alt="{{ $Q_item->title }}" class="news__item-pic"> |
103 | 102 | <div class="news__item-body"> |
104 | - <time datetime="2023-05-01" class="news__item-date">{{ $Q_item->created_at }}</time> | |
103 | + <time datetime="{{ date('d.m.Y H:i:s', strtotime($Q_item->created_at)) }}" class="news__item-date">{{ date('d.m.Y H:i:s', strtotime($Q_item->created_at)) }}</time> | |
105 | 104 | <span class="news__item-title">{{ $Q_item->title }}</span> |
106 | 105 | <span class="news__item-text">{!! $Q_item->text !!}</span> |
107 | 106 | <a href="{{ route('detail_new', ['new' => $Q_item->id]) }}" class="news__item-more button button_light">Читать далее</a> |
resources/views/employers/add_vacancy.blade.php
... | ... | @@ -65,6 +65,31 @@ |
65 | 65 | @endforeach |
66 | 66 | @endif |
67 | 67 | </select> |
68 | + @error('job_title_id') | |
69 | + <span class="text-xs text-red-600 dark:text-red-400"> | |
70 | + {{ $message }} | |
71 | + </span> | |
72 | + @enderror | |
73 | + </div> | |
74 | + </div> | |
75 | + </div> | |
76 | + | |
77 | + <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group"> | |
78 | + <label class="form-group__label">Категория (локация)</label> | |
79 | + <div class="form-group__item"> | |
80 | + <div class="select"> | |
81 | + <select class="js-select2" name="category_id" id="category_id"> | |
82 | + @php $i = 1 @endphp | |
83 | + @if ($categories->count()) | |
84 | + @foreach($categories as $j) | |
85 | + @if ($i == 1) <option selected> Выберите категорию из списка</option> | |
86 | + @else | |
87 | + <option value="{{ $j->id }}">{{ $j->name }}</option> | |
88 | + @endif | |
89 | + @php $i++ @endphp | |
90 | + @endforeach | |
91 | + @endif | |
92 | + </select> | |
68 | 93 | @error('category_id') |
69 | 94 | <span class="text-xs text-red-600 dark:text-red-400"> |
70 | 95 | {{ $message }} |
... | ... | @@ -73,6 +98,7 @@ |
73 | 98 | </div> |
74 | 99 | </div> |
75 | 100 | </div> |
101 | + | |
76 | 102 | <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group"> |
77 | 103 | <label class="form-group__label">Телефон</label> |
78 | 104 | <div class="form-group__item"> |
... | ... | @@ -205,7 +231,7 @@ |
205 | 231 | <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group"> |
206 | 232 | <label class="form-group__label">Описание вакансии</label> |
207 | 233 | <div class="form-group__item"> |
208 | - <textarea class="textarea" name="text" id="text">{{ old('text') ?? $Employer[0]->text ?? '' }}</textarea> | |
234 | + <textarea class="textarea" name="text" id="text">{{ $Employer[0]->text ?? '' }}</textarea> | |
209 | 235 | @error('text') |
210 | 236 | <span class="text-xs text-red-600"> |
211 | 237 | {{ $message }} |
... | ... | @@ -218,7 +244,7 @@ |
218 | 244 | <label class="form-group__label">Дополнительная информация</label> |
219 | 245 | <div class="form-group__item"> |
220 | 246 | <textarea class="textarea" name="description" id="description">{{ old('description') ?? '' }}</textarea> |
221 | - @error('text') | |
247 | + @error('description') | |
222 | 248 | <span class="text-xs text-red-600"> |
223 | 249 | {{ $message }} |
224 | 250 | </span> |
resources/views/employers/edit_vacancy.blade.php
... | ... | @@ -27,7 +27,7 @@ |
27 | 27 | |
28 | 28 | </div> |
29 | 29 | |
30 | - <form class="cabinet__body" action="{{ route('employer.vac_save') }}" method="POST"> | |
30 | + <form class="cabinet__body" action="{{ route('employer.vacancy_save_me', ['ad_employer' => $ad_employer]) }}" method="POST"> | |
31 | 31 | @csrf |
32 | 32 | <input type="hidden" name="employer_id" value="{{ $Employer->id }}"/> |
33 | 33 | <div class="cabinet__body-item"> |
... | ... | @@ -74,6 +74,31 @@ |
74 | 74 | </div> |
75 | 75 | |
76 | 76 | <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group"> |
77 | + <label class="form-group__label">Категория (локация)</label> | |
78 | + <div class="form-group__item"> | |
79 | + <div class="select"> | |
80 | + <select class="js-select2" name="category_id" id="category_id"> | |
81 | + @php $i = 1 @endphp | |
82 | + @if ($categories->count()) | |
83 | + @foreach($categories as $j) | |
84 | + @if ($i == 1) <option selected> Выберите категорию из списка</option> | |
85 | + @else | |
86 | + <option value="{{ $j->id }}">{{ $j->name }}</option> | |
87 | + @endif | |
88 | + @php $i++ @endphp | |
89 | + @endforeach | |
90 | + @endif | |
91 | + </select> | |
92 | + @error('category_id') | |
93 | + <span class="text-xs text-red-600 dark:text-red-400"> | |
94 | + {{ $message }} | |
95 | + </span> | |
96 | + @enderror | |
97 | + </div> | |
98 | + </div> | |
99 | + </div> | |
100 | + | |
101 | + <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group"> | |
77 | 102 | <label class="form-group__label">Телефон</label> |
78 | 103 | <div class="form-group__item"> |
79 | 104 | <input type="text" class="input" name="telephone" id="telephone" value="{{ old('telephone') ?? $Employer->telephone ?? '' }}" placeholder="Свой телефон"> |
... | ... | @@ -97,10 +122,10 @@ |
97 | 122 | </div> |
98 | 123 | </div> |
99 | 124 | |
100 | - <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group"> | |
125 | + <!--<div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group"> | |
101 | 126 | <label class="form-group__label">Зарплата среднестатистическая</label> |
102 | 127 | <div class="form-group__item"> |
103 | - <input type="text" class="input" name="salary" id="salary" value="{{ old('salary') ?? '' }}" placeholder="Среднестатистическая зарплата"> | |
128 | + <input type="text" class="input" name="salary" id="salary" value="old('salary') ?? '' }}" placeholder="Среднестатистическая зарплата"> | |
104 | 129 | @error('salary') |
105 | 130 | <span class="text-xs text-red-600"> |
106 | 131 | {{ $message }} |
... | ... | @@ -112,7 +137,7 @@ |
112 | 137 | <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group"> |
113 | 138 | <label class="form-group__label">Минимальная зарплата</label> |
114 | 139 | <div class="form-group__item"> |
115 | - <input type="text" class="input" name="min_salary" id="min_salary" value="{{ old('min_salary') ?? '' }}" placeholder="Минимальная зарплата"> | |
140 | + <input type="text" class="input" name="min_salary" id="min_salary" value=" old('min_salary') ?? '' }}" placeholder="Минимальная зарплата"> | |
116 | 141 | @error('min_salary') |
117 | 142 | <span class="text-xs text-red-600"> |
118 | 143 | {{ $message }} |
... | ... | @@ -124,7 +149,7 @@ |
124 | 149 | <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group"> |
125 | 150 | <label class="form-group__label">Максимальная зарплата</label> |
126 | 151 | <div class="form-group__item"> |
127 | - <input type="text" class="input" name="max_salary" id="max_salary" value="{{ old('max_salary') ?? '' }}" placeholder="Максимальная зарплата"> | |
152 | + <input type="text" class="input" name="max_salary" id="max_salary" value=" old('max_salary') ?? '' }}" placeholder="Максимальная зарплата"> | |
128 | 153 | @error('salary') |
129 | 154 | <span class="text-xs text-red-600 dark:text-red-400"> |
130 | 155 | {{ $message }} |
... | ... | @@ -136,7 +161,7 @@ |
136 | 161 | <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group"> |
137 | 162 | <label class="form-group__label">Город-регион</label> |
138 | 163 | <div class="form-group__item"> |
139 | - <input type="text" class="input" name="city" id="city" value="{{ old('city') ?? $Employer[0]->city ?? '' }}" placeholder="Севастополь"> | |
164 | + <input type="text" class="input" name="city" id="city" value=" old('city') ?? $Employer[0]->city ?? '' }}" placeholder="Севастополь"> | |
140 | 165 | @error('city') |
141 | 166 | <span class="text-xs text-red-600"> |
142 | 167 | {{ $message }} |
... | ... | @@ -148,7 +173,7 @@ |
148 | 173 | <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group"> |
149 | 174 | <label class="form-group__label">Мощность</label> |
150 | 175 | <div class="form-group__item"> |
151 | - <input type="text" class="input" name="power" id="power" value="{{ old('power') ?? '' }}" placeholder="POWER-45"> | |
176 | + <input type="text" class="input" name="power" id="power" value=" old('power') ?? '' }}" placeholder="POWER-45"> | |
152 | 177 | @error('power') |
153 | 178 | <span class="text-xs text-red-600"> |
154 | 179 | {{ $message }} |
... | ... | @@ -160,7 +185,7 @@ |
160 | 185 | <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group"> |
161 | 186 | <label class="form-group__label">Суточные выплаты</label> |
162 | 187 | <div class="form-group__item"> |
163 | - <input type="text" class="input" name="sytki" id="sytki" value="{{ old('sytki') ?? '' }}" placeholder="2000"> | |
188 | + <input type="text" class="input" name="sytki" id="sytki" value=" old('sytki') ?? '' }}" placeholder="2000"> | |
164 | 189 | @error('power') |
165 | 190 | <span class="text-xs text-red-600"> |
166 | 191 | {{ $message }} |
... | ... | @@ -172,21 +197,21 @@ |
172 | 197 | <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group"> |
173 | 198 | <label class="form-group__label">Начало отплытия</label> |
174 | 199 | <div class="form-group__item"> |
175 | - <input type="text" class="input" name="start" id="start" value="{{ old('start') ?? '' }}" placeholder="20 сентября 2024"> | |
200 | + <input type="text" class="input" name="start" id="start" value=" old('start') ?? $Employer->ads->start ?? '' }}" placeholder="20 сентября 2024"> | |
176 | 201 | @error('power') |
177 | 202 | <span class="text-xs text-red-600"> |
178 | 203 | {{ $message }} |
179 | 204 | </span> |
180 | 205 | @enderror |
181 | 206 | </div> |
182 | - </div> | |
207 | + </div>--> | |
183 | 208 | |
184 | 209 | <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group"> |
185 | 210 | <label class="form-group__label">Корабль для посадки</label> |
186 | 211 | <div class="form-group__item"> |
187 | 212 | <div class="select"> |
188 | 213 | <select class="js-select2" name="flot" id="flot"> |
189 | - <option value="" selected> Не указан корабль</option> | |
214 | + | |
190 | 215 | @if ($Employer->flots->count()) |
191 | 216 | @foreach($Employer->flots as $j) |
192 | 217 | <option value="{{ $j->name }}">{{ $j->name }} ({{ $j->id }})</option> |
... | ... | @@ -214,17 +239,17 @@ |
214 | 239 | </div> |
215 | 240 | </div> |
216 | 241 | |
217 | - <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group"> | |
242 | + <!--<div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group"> | |
218 | 243 | <label class="form-group__label">Дополнительная информация</label> |
219 | 244 | <div class="form-group__item"> |
220 | - <textarea class="textarea" name="description" id="description">{{ old('description') ?? '' }}</textarea> | |
221 | - @error('text') | |
245 | + <textarea class="textarea" name="description" id="description"> old('description') ?? '' }}</textarea> | |
246 | + @error('description') | |
222 | 247 | <span class="text-xs text-red-600"> |
223 | 248 | {{ $message }} |
224 | 249 | </span> |
225 | 250 | @enderror |
226 | 251 | </div> |
227 | - </div> | |
252 | + </div>--> | |
228 | 253 | </div> |
229 | 254 | <a class="button cabinet__submit" href="{{ route('employer.vacancy_list') }}">Назад</a> |
230 | 255 | <button type="submit" class="button cabinet__submit">Опубликовать</button> |
resources/views/employers/list_vacancy.blade.php
... | ... | @@ -101,10 +101,10 @@ |
101 | 101 | </div> |
102 | 102 | @if ($vacancy_list->count()) |
103 | 103 | <div class="table table_spoiler"> |
104 | - <button type="button" class="table__button js-toggle js-parent-toggle button button_light button_more"> | |
104 | + <!--<button type="button" class="table__button js-toggle js-parent-toggle button button_light button_more"> | |
105 | 105 | <span>Показать ещё</span> |
106 | 106 | <span>Свернуть</span> |
107 | - </button> | |
107 | + </button>--> | |
108 | 108 | <div class="table__scroll"> |
109 | 109 | <div class="table__body table__body_min-width"> |
110 | 110 | <table> |
resources/views/employers/menu.blade.php
... | ... | @@ -73,7 +73,7 @@ |
73 | 73 | </i> |
74 | 74 | <span>База данных</span> |
75 | 75 | </a> |
76 | - <a href="{{ route('employer.bd-tupe') }}" class="cabinet__menu-item @if ($item==8) active @endif"> | |
76 | + <a href="{{ route('bd_resume') }}" target="_blank" class="cabinet__menu-item @if ($item==8) active @endif"> | |
77 | 77 | <i> |
78 | 78 | <svg> |
79 | 79 | <use xlink:href="{{ asset('images/sprite.svg#cabinet-8') }}"></use> |
resources/views/errors/404.blade.php
... | ... | @@ -0,0 +1,19 @@ |
1 | +@extends('layout.frontend', ['title' => 'Судоходные компании РекаМоре']) | |
2 | + | |
3 | +@section('scripts') | |
4 | + | |
5 | +@endsection | |
6 | + | |
7 | +@section('content') | |
8 | + <section class="page-404"> | |
9 | + <div class="container"> | |
10 | + <div class="page-404__body"> | |
11 | + <div class="page-404__numb">404</div> | |
12 | + <div class="page-404__title">Упс! Страница не найдена</div> | |
13 | + <div class="page-404__subtitle">Такой страницы не существует. Воспользуйтесь меню или перейдите на главную.</div> | |
14 | + <a href="{{ route('index') }}" class="button page-404__button">Перейти на главную</a> | |
15 | + </div> | |
16 | + </div> | |
17 | + </section> | |
18 | +@endsection | |
19 | + |
resources/views/index.blade.php
... | ... | @@ -29,7 +29,11 @@ |
29 | 29 | </svg> |
30 | 30 | </span> |
31 | 31 | </form> |
32 | + @guest | |
33 | + <a data-fancybox data-src="#question2" data-options='{"touch":false,"autoFocus":false}' class="button work__search">Я ищу сотрудника</a> | |
34 | + @else | |
32 | 35 | <a href="{{ route('bd_resume') }}" class="button work__search">Я ищу сотрудника</a> |
36 | + @endguest | |
33 | 37 | <div class="work__get"> |
34 | 38 | <b>Скачать приложение</b> |
35 | 39 | <a href=""> |
... | ... | @@ -74,7 +78,7 @@ |
74 | 78 | <div class="vacancies__list"> |
75 | 79 | @if ($categories->count()) |
76 | 80 | @foreach ($categories as $cat) |
77 | - <a href="#" class="vacancies__item"> | |
81 | + <a href="{{ route('list-vacancies', ['categories' => $cat->id]) }}" class="vacancies__item"> | |
78 | 82 | <span style="border-color:#F4C4C2"> |
79 | 83 | <b>{{ $cat->name }}</b> |
80 | 84 | <i>Вакансий: <span>{{ $cat->cnt }}</span></i> |
... | ... | @@ -178,7 +182,7 @@ |
178 | 182 | <div class="news__item"> |
179 | 183 | <img src="{{ asset(Storage::url($new->image)) }}" alt="" class="news__item-pic"> |
180 | 184 | <div class="news__item-body"> |
181 | - <time datetime="2023-05-01" class="news__item-date">{{ $new->created_at }}</time> | |
185 | + <time datetime="{{ date('d.m.Y H:i:s', strtotime($new->created_at)) }}" class="news__item-date">{{ date('d.m.Y H:i:s', strtotime($new->created_at)) }}</time> | |
182 | 186 | <span class="news__item-title">{{ $new->title }}</span> |
183 | 187 | <span class="news__item-text">{{ mb_strimwidth($new->text, 0, 100) }}</span> |
184 | 188 | <a href="{{ route('detail_new', ['new' => $new->id]) }}" class="news__item-more button button_light">Читать далее</a> |
resources/views/info_company_new.blade.php
... | ... | @@ -49,7 +49,6 @@ |
49 | 49 | $(document).ready(function(){ |
50 | 50 | var sel = $('#select2-sort_ajax-container'); |
51 | 51 | var key = getUrlParameter('sort'); |
52 | - | |
53 | 52 | if (key !=='') { |
54 | 53 | console.log(key); |
55 | 54 | switch (key) { |
... | ... | @@ -153,18 +152,22 @@ |
153 | 152 | </span> |
154 | 153 | </div> |
155 | 154 | </div> |
155 | + | |
156 | 156 | <div class="main__employer-page-item"> |
157 | 157 | <b>Описание</b> |
158 | 158 | <span> |
159 | - {{ $company[0]->text }} | |
159 | + {!! $company[0]->text !!} | |
160 | 160 | </span> |
161 | 161 | </div> |
162 | + | |
162 | 163 | <div> |
164 | + | |
163 | 165 | <div class="main__employer-page-tabs"> |
164 | 166 | <button type="button" class="main__employer-page-tabs-item active" |
165 | 167 | data-tab="1">Флот</button> |
166 | 168 | <button type="button" class="main__employer-page-tabs-item" data-tab="2">Вакансии</button> |
167 | 169 | </div> |
170 | + | |
168 | 171 | <div class="main__employer-page-body"> |
169 | 172 | <div class="main__employer-page-body-item showed" data-body="1"> |
170 | 173 | <div class="main__employer-page-one"> |
... | ... | @@ -180,6 +183,7 @@ |
180 | 183 | </div> |
181 | 184 | </div> |
182 | 185 | |
186 | + | |
183 | 187 | <div class="main__employer-page-body-item" data-body="2"> |
184 | 188 | <div class="main__employer-page-two"> |
185 | 189 | @foreach ($company[0]->ads as $job) |
... | ... | @@ -241,7 +245,7 @@ |
241 | 245 | class="button button_light main__employer-page-two-item-button">Подробнее</a>--> |
242 | 246 | </div> |
243 | 247 | <div class="main__employer-page-two-item-bottom"> |
244 | - <div class="main__employer-page-two-item-bottom-date">{{ $job->updated_at }}</div> | |
248 | + <div class="main__employer-page-two-item-bottom-date">{{ date('d.m.Y H:i:s', strtotime($job->updated_at)) }}</div> | |
245 | 249 | <button type="button" |
246 | 250 | class="like main__employer-page-two-item-bottom-like js-toggle"> |
247 | 251 | <svg> |
resources/views/layout/frontend.blade.php
... | ... | @@ -9,6 +9,7 @@ |
9 | 9 | <script src="{{ asset('js/jquery.js') }}"></script> |
10 | 10 | <script type="text/javascript" src="{{ asset('js/jquery.cookie.js') }}"></script> |
11 | 11 | <link rel="stylesheet" href="{{ asset('css/style_new.css') }}"> |
12 | + <link rel="stylesheet" href="{{ asset('css/star-rating.min.css') }}"> | |
12 | 13 | <style> |
13 | 14 | .err_red { |
14 | 15 | border: red 2px solid; |
... | ... | @@ -43,15 +44,13 @@ |
43 | 44 | @guest |
44 | 45 | |
45 | 46 | @else |
46 | - <button class="header__notifs header__notifs_actived"> | |
47 | + <a href="@if ($UserId->is_worker) {{ route('worker.cabinet') }} @else {{ route('employer.cabinet') }} @endif" class="header__notifs header__notifs_actived"> | |
47 | 48 | <svg> |
48 | 49 | <use xlink:href="{{ asset('images/sprite.svg#ring') }}"></use> |
49 | 50 | </svg> |
50 | 51 | <span>Уведомления</span> |
51 | - </button> | |
52 | - <a href="@if ($UserId->is_worker) {{ route('worker.cabinet') }} @else {{ route('employer.cabinet') }} @endif" class="header__notifs"> | |
53 | - Кабинет | |
54 | 52 | </a> |
53 | + | |
55 | 54 | @endguest |
56 | 55 | <div class="header__right-line"></div> |
57 | 56 | <button class="header__burger"> |
... | ... | @@ -233,14 +232,16 @@ |
233 | 232 | |
234 | 233 | <div hidden> <!-- BEGIN MODALS WRAPPER --> |
235 | 234 | <!-- Соискатель отправляет сообщение работодателю --> |
236 | - @include('modals.send_worker') | |
235 | + @include('modals.send_worker_new') | |
237 | 236 | |
238 | 237 | <!-- Работодатель отправляет сообщение соискателю --> |
239 | - @include('modals.send_employer') | |
238 | + @include('modals.send_employer_new') | |
240 | 239 | |
241 | 240 | <!-- Сообщение-предупреждение о том, что сообщения только можно отправить авторизованным пользователям --> |
242 | 241 | @include('modals.send_message_noaut') |
243 | 242 | |
243 | + @include('modals.send_message_noaut2') | |
244 | + | |
244 | 245 | <!-- Форма авторизации --> |
245 | 246 | @include('modals.send_login') |
246 | 247 | |
... | ... | @@ -276,6 +277,7 @@ |
276 | 277 | <script src="{{ asset('js/jquery.select2.js') }}"></script> |
277 | 278 | <script src="{{ asset('js/swiper.js') }}"></script> |
278 | 279 | <script src="{{ asset('js/script.js') }}"></script> |
280 | +<script src="{{ asset('js/star-rating.min.js') }}"></script> | |
279 | 281 | <script> |
280 | 282 | var getUrlParameter = function getUrlParameter(sParam) { |
281 | 283 | var sPageURL = decodeURIComponent(window.location.search.substring(1)), |
resources/views/layout/pdf.blade.php
... | ... | @@ -7,17 +7,183 @@ |
7 | 7 | <meta name="viewport" content="width=device-width,initial-scale=1"> |
8 | 8 | <meta name="theme-color" content="#377D87"> |
9 | 9 | <link rel="stylesheet" href="{{ asset('css/style.css') }}"> |
10 | + <style> | |
11 | + body { | |
12 | + font-family:'DejaVu Sans',sans-serif; | |
13 | + background:#fff; | |
14 | + font-size:1.6rem; | |
15 | + font-weight:400; | |
16 | + color:#363A3F; | |
17 | + } | |
18 | + | |
19 | + .main { | |
20 | + padding: 30px 0; | |
21 | + } | |
22 | + | |
23 | + .thing { | |
24 | + color: #3a3b3c; | |
25 | + /* background-color: #f2f5fc; */ | |
26 | + } | |
27 | + | |
28 | + .thing__profile { | |
29 | + | |
30 | + } | |
31 | + | |
32 | + .thing__profile-photo { | |
33 | + width: 200px; | |
34 | + border-radius: 8px; | |
35 | + float: left; | |
36 | + margin-right: 20px; | |
37 | + } | |
38 | + | |
39 | + .thing__profile-body { | |
40 | + | |
41 | + } | |
42 | + | |
43 | + .thing__title { | |
44 | + width: 100%; | |
45 | + font-size: 32px; | |
46 | + font-weight: 700; | |
47 | + line-height: 1.1; | |
48 | + margin: 0; | |
49 | + } | |
50 | + | |
51 | + .thing__text { | |
52 | + font-size: 14px; | |
53 | + line-height: 1.4; | |
54 | + margin: 15px 0 0 0; | |
55 | + } | |
56 | + | |
57 | + .main__spoiler { | |
58 | + margin: 0px 0px 32px 0px; | |
59 | + } | |
60 | + | |
61 | + .main__spoiler-body { | |
62 | + | |
63 | + } | |
64 | + | |
65 | + .main__table { | |
66 | + border-collapse: collapse; | |
67 | + table-layout: fixed; | |
68 | + font-size: 14px; | |
69 | + width: 100%; | |
70 | + background: #ffffff; | |
71 | + } | |
72 | + | |
73 | + .main__table thead { | |
74 | + color: #ffffff; | |
75 | + font-size: 16px; | |
76 | + background-color: #377d87; | |
77 | + } | |
78 | + | |
79 | + .main__table th { | |
80 | + padding: 8px 16px; | |
81 | + } | |
82 | + | |
83 | + .main__table td { | |
84 | + width: 40%; | |
85 | + padding: 8px 16px; | |
86 | + border: 1px solid #cecece; | |
87 | + } | |
88 | + | |
89 | + .main__table td b { | |
90 | + font-weight: 700; | |
91 | + } | |
92 | + | |
93 | + .main__table b { | |
94 | + display: block; | |
95 | + } | |
96 | + | |
97 | + .main__table a { | |
98 | + color: #377d87; | |
99 | + text-decoration: underline; | |
100 | + } | |
101 | + | |
102 | + .main__table td + td { | |
103 | + width: 60%; | |
104 | + } | |
105 | + | |
106 | + .main__table_three td { | |
107 | + width: 25% !important; | |
108 | + } | |
109 | + | |
110 | + .main__table_three td:last-child { | |
111 | + width: 50% !important; | |
112 | + } | |
113 | + | |
114 | + .main h2 { | |
115 | + margin: 0; | |
116 | + font-weight: 700; | |
117 | + font-size: 30px; | |
118 | + } | |
119 | + | |
120 | + .main p { | |
121 | + margin: 0; | |
122 | + font-size: 14px; | |
123 | + line-height: 1.4; | |
124 | + margin: 15px 0 0 0; | |
125 | + } | |
126 | + | |
127 | + .main__resume-profile-info { | |
128 | + margin: 30px 0px 0px 0px; | |
129 | + } | |
130 | + | |
131 | + .main__resume-profile-info-title { | |
132 | + margin-bottom: 20px !important; | |
133 | + color: #3a3b3c; | |
134 | + } | |
135 | + | |
136 | + .main__resume-profile-info-body-item { | |
137 | + margin: 0px 0px 20px 0px; | |
138 | + } | |
139 | + | |
140 | + .main__resume-profile-info-body-subtitle { | |
141 | + color: #4d88d9; | |
142 | + margin: 0px 0px 10px 0px; | |
143 | + font-weight: 700; | |
144 | + font-size: 22px; | |
145 | + } | |
146 | + | |
147 | + .main__resume-profile-info-body-inner { | |
148 | + margin: 0; | |
149 | + padding: 0; | |
150 | + font-size: 12px; | |
151 | + } | |
152 | + | |
153 | + .main__resume-profile-info-body-inner li { | |
154 | + list-style-type: none; | |
155 | + margin: 0px 0px 20px 0px; | |
156 | + } | |
157 | + | |
158 | + .main__resume-profile-info-body-inner b { | |
159 | + display: block; | |
160 | + margin: 0px 0px 6px 0px; | |
161 | + color: #377d87; | |
162 | + font-size: 14px; | |
163 | + } | |
164 | + | |
165 | + .main__resume-profile-info-body-inner span { | |
166 | + display: block; | |
167 | + } | |
168 | + | |
169 | + .main__resume-profile-info-body-inner a { | |
170 | + display: block; | |
171 | + text-decoration: none; | |
172 | + color: inherit; | |
173 | + } | |
174 | + | |
175 | + </style> | |
10 | 176 | </head> |
11 | 177 | |
12 | 178 | <body id="body" class="pdf"> |
13 | 179 | <section class="thing thing_pdf"> |
14 | 180 | <div class="container"> |
15 | 181 | <div class="thing__profile"> |
16 | - <img src="{{ asset('images/face.jpg') }}" alt="" class="thing__profile-photo"> | |
182 | + <img src="{{ asset(Storage::url($Query[0]['photo'])) }}" alt="" class="thing__profile-photo"> | |
17 | 183 | <div class="thing__profile-body"> |
18 | - <h1 class="thing__title">Назаров Платон Фёдорович</h1> | |
19 | - <p class="thing__text">Сложно сказать, почему ключевые особенности структуры проекта рассмотрены | |
20 | - исключительно в разрезе маркетинговых и финансовых предпосылок.</p> | |
184 | + <h1 class="thing__title">{{ $Query[0]['users']['surname']." ".$Query[0]['users']['name_man']." ".$Query[0]['users']['surname2'] }}</h1> | |
185 | + <div style="clear:both;"></div> | |
186 | + <p class="thing__text">{{ $Query[0]['text'] }}</p> | |
21 | 187 | </div> |
22 | 188 | </div> |
23 | 189 | </div> |
... | ... | @@ -27,101 +193,112 @@ |
27 | 193 | <div class="main__resume-profile"> |
28 | 194 | <div class="main__content"> |
29 | 195 | <div class="main__spoiler"> |
30 | - <button type="button" class="main__spoiler-toper js-toggle active">Основная | |
31 | - информация</button> | |
196 | + <!-- <button type="button" class="main__spoiler-toper js-toggle active">Основная | |
197 | + информация</button> --> | |
32 | 198 | <div class="main__spoiler-body"> |
33 | 199 | <table class="main__table"> |
200 | + <thead> | |
201 | + <tr> | |
202 | + <th colspan="2">Основная информация</th> | |
203 | + </tr> | |
204 | + </thead> | |
34 | 205 | <tbody> |
35 | 206 | <tr> |
36 | 207 | <td>Имя:</td> |
37 | - <td><b>Оксана</b></td> | |
208 | + <td><b>{{ $Query[0]['users']['name_man'] }}</b></td> | |
38 | 209 | </tr> |
39 | 210 | <tr> |
40 | 211 | <td>Должность:</td> |
41 | - <td><b>Повар</b></td> | |
212 | + <td> | |
213 | + @foreach ($Query[0]['job_titles'] as $it) | |
214 | + <b>{{ $it['name'] }}</b><br> | |
215 | + @endforeach | |
216 | + </td> | |
42 | 217 | </tr> |
43 | 218 | <tr> |
44 | 219 | <td>Телефон:</td> |
45 | - <td><b><a href="#">+7 (000) 123 45 67</a></b></td> | |
220 | + <td><b><a>{{ $Query[0]['telephone'] }}</a></b> | |
221 | + <b><a>{{ $Query[0]['telephone2'] }}</a></b> | |
222 | + </td> | |
46 | 223 | </tr> |
47 | 224 | <tr> |
48 | 225 | <td>E-mail:</td> |
49 | - <td><b><a href="#">info@rekamore.su</a></b></td> | |
226 | + <td><b><a>{{ $Query[0]['email'] }}</a></b></td> | |
50 | 227 | </tr> |
51 | 228 | <tr> |
52 | 229 | <td>Возраст:</td> |
53 | - <td><b>30</b></td> | |
230 | + <td><b>{{ $Query[0]['old_year'] }}</b></td> | |
54 | 231 | </tr> |
55 | 232 | <tr> |
56 | 233 | <td>Статус:</td> |
57 | - <td><b>Ищу работу</b></td> | |
234 | + <td> | |
235 | + @php $code = $Query[0]['status_work']; @endphp | |
236 | + <b>@if ($code == 0) Ищу работу @elseif($code == 1) Не указано @else Не ищу работу @endif</b></td> | |
58 | 237 | </tr> |
59 | 238 | <tr> |
60 | 239 | <td>Город проживания:</td> |
61 | - <td><b>Петропавловск-камчатский</b></td> | |
240 | + <td><b>{{ $Query[0]['city'] }}</b></td> | |
62 | 241 | </tr> |
63 | 242 | <tr> |
64 | 243 | <td>Уровень английского:</td> |
65 | - <td><b>Не указано</b></td> | |
244 | + <td><b>{{ $Query[0]['en_is'] }}</b></td> | |
66 | 245 | </tr> |
67 | 246 | <tr> |
68 | 247 | <td>Опыт работы:</td> |
69 | - <td><b>1 год</b></td> | |
248 | + <td><b>{{ $Query[0]['old_year'] }}</b></td> | |
70 | 249 | </tr> |
71 | 250 | </tbody> |
72 | 251 | </table> |
73 | 252 | </div> |
74 | 253 | </div> |
75 | 254 | <div class="main__spoiler"> |
76 | - <button type="button" class="main__spoiler-toper js-toggle">Сертификаты / документы</button> | |
77 | 255 | <div class="main__spoiler-body"> |
78 | 256 | <table class="main__table"> |
79 | - <tbody> | |
80 | - <tr> | |
81 | - <td>Среднее специальное образование</td> | |
82 | - <td><a href="#">Ссылка на диплом</a></td> | |
83 | - </tr> | |
257 | + <thead> | |
84 | 258 | <tr> |
85 | - <td>Курсы повышения квалификации</td> | |
86 | - <td><a href="#">Ссылка на диплом</a></td> | |
87 | - </tr> | |
88 | - <tr> | |
89 | - <td>Прохождение переподготовки</td> | |
90 | - <td><a href="#">Ссылка на сертификат</a></td> | |
259 | + <th colspan="2">Сертификаты / документы</th> | |
91 | 260 | </tr> |
261 | + </thead> | |
262 | + <tbody> | |
263 | + @if (count($Query[0]['sertificate'])) | |
264 | + @foreach($Query[0]['sertificate'] as $it) | |
265 | + <tr> | |
266 | + <td>{{ $it['name']." ".$it['education'] }}</td> | |
267 | + <td><a>{{ date('d.m.Y H:i:s', strtotime($it['date_begin']))."-".date('d.m.Y H:i:s', strtotime($it['end_begin'])) }}</a></td> | |
268 | + </tr> | |
269 | + @endforeach | |
270 | + @else | |
271 | + <tr> | |
272 | + <td> - </td> | |
273 | + <td> - </td> | |
274 | + </tr> | |
275 | + @endif | |
92 | 276 | </tbody> |
93 | 277 | </table> |
94 | 278 | </div> |
95 | 279 | </div> |
96 | 280 | <div class="main__spoiler"> |
97 | - <button type="button" class="main__spoiler-toper js-toggle">Опыт работы</button> | |
98 | 281 | <div class="main__spoiler-body"> |
99 | 282 | <table class="main__table main__table_three"> |
100 | - <tbody> | |
283 | + <thead> | |
101 | 284 | <tr> |
102 | - <td>Июнь 2019 — по настоящее время | |
103 | - <br>4 года 10 месяцев</td> | |
104 | - <td><b>ООО "Невский мазут"</b> | |
105 | - Санкт-Петербург</td> | |
106 | - <td><b>Вахтенный механик (танкер)</b> | |
107 | - Переведён на т/х " SULA " в должности Вахтенный механик. Полный комплект морских документов для работы на нефтеналивных судах ( диплом без ограничений ).</td> | |
108 | - </tr> | |
109 | - <tr> | |
110 | - <td>Октябрь 2014 — по настоящее время | |
111 | - <br>9 лет 6 месяцев</td> | |
112 | - <td><b>ООО "Невский мазут"</b> | |
113 | - Санкт-Петербург</td> | |
114 | - <td><b>Сменный механик (танкер)</b> | |
115 | - Ремонт и эксплуатация судовых энергетических установок . Работа с документами, топливными отчётами. Управление персоналом.</td> | |
116 | - </tr> | |
117 | - <tr> | |
118 | - <td>Январь 2012 — октябрь 2014 | |
119 | - <br>2 года 10 месяцев</td> | |
120 | - <td><b>ООО "Портовый флот"</b> | |
121 | - Санкт-Петербург</td> | |
122 | - <td><b>Моторист-матрос-котельный машинист.</b> | |
123 | - Эксплуатация, ремонт судовых механизмов, несение вахты.</td> | |
285 | + <th colspan="3">Опыт работы</th> | |
124 | 286 | </tr> |
287 | + </thead> | |
288 | + <tbody> | |
289 | + @if (count($Query[0]['place_worker']) > 0) | |
290 | + @foreach($Query[0]['place_worker'] as $it) | |
291 | + <tr> | |
292 | + <td>{{ $it['begin_work']." - ".$it['end_work'] }} | |
293 | + </td> | |
294 | + <td><b>{{ $it['name_company'] }}</b> | |
295 | + </td> | |
296 | + <td><b>{{ $it['job_title'] }}</b> | |
297 | + Судно: {{ $it['teplohod'] }} | |
298 | + </td> | |
299 | + </tr> | |
300 | + @endforeach | |
301 | + @endif | |
125 | 302 | </tbody> |
126 | 303 | </table> |
127 | 304 | </div> |
... | ... | @@ -129,60 +306,36 @@ |
129 | 306 | </div> |
130 | 307 | <div class="main__resume-profile-about"> |
131 | 308 | <h2 class="main__resume-profile-about-title">О себе</h2> |
132 | - <p class="main__resume-profile-about-text">Привет! Меня зовут Саша, мне 41 год, женат, имею 3 | |
133 | - детей.Большой опыт на Азимутальных буксирах(ВРК). Большой опыт портовых работ: | |
134 | - швартовки/отшвартовки, доставка/снятие лоцманов, доставка снабжения. Буксировка барж, | |
135 | - плавкранов.Есть опыт морской буксировки.Знание ПК, офисных програм и т.д.Коммуникабелен, | |
136 | - вредных привычек не имею, легко обучаем.</p> | |
137 | - <div class="button main__resume-profile-about-button">Написать сообщение</div> | |
309 | + <p class="main__resume-profile-about-text">{{ $Query[0]['text'] }}</p> | |
310 | + | |
138 | 311 | </div> |
139 | 312 | <div class="main__resume-profile-info"> |
140 | 313 | <h2 class="main__resume-profile-info-title">Данные о прошлых компаниях</h2> |
141 | 314 | <div class="main__resume-profile-info-body"> |
142 | - <div class="main__resume-profile-info-body-item"> | |
143 | - <h3 class="main__resume-profile-info-body-subtitle">Судоходное агентство “Транс-Флот”</h3> | |
144 | - <ul class="main__resume-profile-info-body-inner"> | |
145 | - <li> | |
146 | - <b>Руководитель</b> | |
147 | - <span>Егоров Тимур Николаевич</span> | |
148 | - </li> | |
149 | - <li> | |
150 | - <b>Телефон того, кто может дать рекомендацию</b> | |
151 | - <span> | |
152 | - <a href="#">+7 (000) 123 45 67</a> | |
153 | - <a href="#">+7 (000) 123 45 67</a> | |
154 | - </span> | |
155 | - </li> | |
156 | - </ul> | |
157 | - </div> | |
158 | - <div class="main__resume-profile-info-body-item"> | |
159 | - <h3 class="main__resume-profile-info-body-subtitle">Аквамарин Шип Менеджмент</h3> | |
160 | - <ul class="main__resume-profile-info-body-inner"> | |
161 | - <li> | |
162 | - <b>Руководитель</b> | |
163 | - <span>Федотов Артём Никитич</span> | |
164 | - </li> | |
165 | - <li> | |
166 | - <b>Телефон того, кто может дать рекомендацию</b> | |
167 | - <span> | |
168 | - <a href="#">+7 (000) 123 45 67</a> | |
169 | - <a href="#">+7 (000) 123 45 67</a> | |
170 | - </span> | |
171 | - </li> | |
172 | - </ul> | |
173 | - </div> | |
315 | + @if ((isset($Query[0]['prev_company'])) && (count($Query[0]['prev_company']) > 0)) | |
316 | + @foreach ($Query[0]['prev_company'] as $it) | |
317 | + <div class="main__resume-profile-info-body-item"> | |
318 | + <h3 class="main__resume-profile-info-body-subtitle">{{ $it['name_company'] }}</h3> | |
319 | + <ul class="main__resume-profile-info-body-inner"> | |
320 | + <li> | |
321 | + <b>Руководитель</b> | |
322 | + <span>{{ $it['direct'] }}</span> | |
323 | + </li> | |
324 | + <li> | |
325 | + <b>Телефон того, кто может дать рекомендацию</b> | |
326 | + <span> | |
327 | + <a>{{ $it['telephone'] }}</a> | |
328 | + <a>{{ $it['telephone2'] }}</a> | |
329 | + </span> | |
330 | + </li> | |
331 | + </ul> | |
332 | + </div> | |
333 | + @endforeach | |
334 | + @endif | |
174 | 335 | </div> |
175 | 336 | </div> |
176 | 337 | </div> |
177 | 338 | </div> |
178 | 339 | </main> |
179 | -<script src="{{ asset('js/jquery.js') }}"></script> | |
180 | -<script src="{{ asset('js/jquery.maskedinput.js') }}"></script> | |
181 | -<script src="{{ asset('js/jquery.fancybox.js') }}"></script> | |
182 | -<script src="{{ asset('js/jquery.select2.js') }}"></script> | |
183 | -<script src="{{ asset('js/swiper.js') }}"></script> | |
184 | -<script src="{{ asset('js/star-rating.min.js') }}"></script> | |
185 | -<script src="{{ asset('js/script.js') }}"></script> | |
186 | 340 | </body> |
187 | - | |
188 | 341 | </html> |
resources/views/list_vacancies.blade.php
... | ... | @@ -10,6 +10,7 @@ |
10 | 10 | $(document).on('change', '#jobs', function() { |
11 | 11 | var val = $(this).val(); |
12 | 12 | var main_oskar = $('#main_ockar'); |
13 | + var ti_head = $('#title_head'); | |
13 | 14 | |
14 | 15 | console.log('Code='+val); |
15 | 16 | console.log('Click change...'); |
... | ... | @@ -19,9 +20,9 @@ |
19 | 20 | data: "job="+val, |
20 | 21 | success: function (data) { |
21 | 22 | console.log('Выбор сделан!'); |
22 | - console.log(data); | |
23 | + | |
23 | 24 | main_oskar.html(data); |
24 | - history.pushState({}, '', "{{ route('education') }}?sort="+val_+"@if (isset($_GET['page']))&page={{ $_GET['page'] }}@endif"); | |
25 | + history.pushState({}, '', "{{ route('list-vacancies', ['categories' => $categories->id]) }}?sort="+val+"@if (isset($_GET['page']))&page={{ $_GET['page'] }}@endif"); | |
25 | 26 | }, |
26 | 27 | headers: { |
27 | 28 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') |
... | ... | @@ -31,6 +32,30 @@ |
31 | 32 | console.log('Error: ' + data); |
32 | 33 | } |
33 | 34 | }); |
35 | + | |
36 | + if ((val == '') || (val == '0')) { | |
37 | + title_head.html('Все категории'); | |
38 | + } else { | |
39 | + $.ajax({ | |
40 | + type: "GET", | |
41 | + url: "{{ route('list-vacancies', ['categories' => $categories->id]) }}", | |
42 | + data: "job=" + val +"&title=1", | |
43 | + success: function (data) { | |
44 | + | |
45 | + console.log(data); | |
46 | + }, | |
47 | + | |
48 | + headers: { | |
49 | + 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | |
50 | + }, | |
51 | + | |
52 | + error: function (data) { | |
53 | + data = JSON.stringify(data); | |
54 | + console.log('Error: ' + data); | |
55 | + } | |
56 | + }); | |
57 | + | |
58 | + } | |
34 | 59 | }); |
35 | 60 | |
36 | 61 | $(document).on('click', '.js_send_it_button', function() { |
... | ... | @@ -129,11 +154,11 @@ |
129 | 154 | </section> |
130 | 155 | <main class="main"> |
131 | 156 | <div class="container"> |
132 | - <div class="main__vacancies"> | |
133 | - @if (isset($job)) | |
134 | - <h2 class="main__vacancies-title">Категория вакансий {{ $job }}</h2> | |
157 | + <div class="main__vacancies" > | |
158 | + @if (isset($Name_categori[0]->name)) | |
159 | + <h2 class="main__vacancies-title">Категория вакансий {{ $Name_categori[0]->name }}</h2> | |
135 | 160 | @else |
136 | - <h2 class="main__vacancies-title">Все категории</h2> | |
161 | + <h2 class="main__vacancies-title" id="title_head" name="title_head">Все категории</h2> | |
137 | 162 | @endif |
138 | 163 | <div class="filters main__vacancies-filters"> |
139 | 164 | <div class="filters__label" id="col-vo" name="col-vo">Показано @if ($Query_count < 3) {{$Query_count}} @else 3 @endif из @isset($Query_count) {{ $Query_count }} @else 0 @endisset результатов поиска</div> |
... | ... | @@ -150,9 +175,26 @@ |
150 | 175 | </div> |
151 | 176 | </div> |
152 | 177 | |
153 | - <div id="main_ockar" class="main__vacancies" name="main_ockar" style="width:100%;"> | |
178 | + <div class="main__vacancies" style="width:100%;" id="main_ockar" name="main_oskar"> | |
179 | + @php $i = ($Query->currentPage() * $Query->perPage() - $Query->count() - 1) @endphp | |
180 | + | |
154 | 181 | @foreach ($Query as $Q) |
182 | + @foreach ($Reclama as $Rec) | |
183 | + @if ($Rec->position == $i) | |
184 | + <div class="main__vacancies-thing"> | |
185 | + <img src="{{ asset(Storage::url($Rec->image)) }}" alt="{{ $Rec->title }}" class="main__vacancies-thing-pic"> | |
186 | + <div class="main__vacancies-thing-body"> | |
187 | + <h2>{{ $Rec->title }}</h2> | |
188 | + <div> | |
189 | + {!! $Rec->text !!} | |
190 | + </div> | |
191 | + <a href="{{ $Rec->link }}" class="button">Узнать больше</a> | |
192 | + </div> | |
193 | + </div> | |
194 | + @endif | |
195 | + @endforeach | |
155 | 196 | <div class="main__vacancies-item main__employer-page-two-item"> |
197 | + | |
156 | 198 | <a href="{{ route('list-vacancies', ['categories' => $categories->id]) }}" class="back main__employer-page-two-item-back"> |
157 | 199 | <svg> |
158 | 200 | <use xlink:href="{{ asset('images/sprite.svg#back') }}"></use> |
... | ... | @@ -161,12 +203,14 @@ |
161 | 203 | Вернуться к списку вакансий |
162 | 204 | </span> |
163 | 205 | </a> |
206 | + | |
164 | 207 | <div class="main__employer-page-two-item-toper"> |
165 | 208 | @if (isset($Q->employer)) |
166 | 209 | <img src="{{ asset(Storage::url($Q->employer->logo)) }}" alt="{{ $Q->employer->name }}"> |
167 | 210 | @endif |
168 | 211 | <span>@if (!empty($Q->name)) {{ $Q->name }} @endif</span> |
169 | 212 | </div> |
213 | + | |
170 | 214 | <div class="main__employer-page-two-item-text"> |
171 | 215 | <div class="main__employer-page-two-item-text-name">Судоходная компания ведет набор |
172 | 216 | специалистов на следующие должности:</div> |
... | ... | @@ -178,6 +222,7 @@ |
178 | 222 | @endif |
179 | 223 | </div> |
180 | 224 | </div> |
225 | + | |
181 | 226 | <div class="main__employer-page-two-item-text"> |
182 | 227 | <div class="main__employer-page-two-item-text-name">Мы предлагаем:</div> |
183 | 228 | <div class="main__employer-page-two-item-text-body"> |
... | ... | @@ -225,7 +270,7 @@ |
225 | 270 | <a href="{{ route('vacancie', ['vacancy' => $Q->id]) }}" class="button button_light main__employer-page-two-item-button">Подробнее</a> |
226 | 271 | </div> |
227 | 272 | <div class="main__employer-page-two-item-bottom"> |
228 | - <div class="main__employer-page-two-item-bottom-date">{{ $Q->created_at }}</div> | |
273 | + <div class="main__employer-page-two-item-bottom-date">{{ date('d.m.Y H:i:s', strtotime($Q->created_at)) }}</div> | |
229 | 274 | <button type="button" data-val="{{ $Q->id }}" class="like main__employer-page-two-item-bottom-like js-toggle js_vacancy_favorites <?=App\Classes\Cookies_vacancy::selected_vacancy($Q->id);?>"> |
230 | 275 | <svg> |
231 | 276 | <use xlink:href="{{ asset('images/sprite.svg#heart') }}"></use> |
... | ... | @@ -233,11 +278,12 @@ |
233 | 278 | </button> |
234 | 279 | </div> |
235 | 280 | </div> |
281 | + @php $i++ @endphp | |
236 | 282 | @endforeach |
237 | 283 | <div style="margin-top: 20px"> |
238 | 284 | {{ $Query->appends($_GET)->links('paginate') }} |
239 | - </div> | |
240 | - </div><!-- конец --> | |
285 | + </div><!-- конец --> | |
286 | + </div> | |
241 | 287 | </div> |
242 | 288 | </div> |
243 | 289 | </main> |
resources/views/modals/send_admin.blade.php
1 | 1 | <div id="send" class="modal"> |
2 | 2 | <div class="modal__body"> |
3 | - <div class="modal__title">Отправить сообщение "Наяда"</div> | |
3 | + <div class="modal__title">Отправить сообщение работодателю</div> | |
4 | 4 | <div class="modal__text">Если у вас возникли вопросы насчет вакансии, вы можете задать их работодателю</div> |
5 | 5 | <form class="modal__form"> |
6 | 6 | <div class="modal__form-item error"> |
resources/views/modals/send_employer_new.blade.php
... | ... | @@ -0,0 +1,17 @@ |
1 | +<script> | |
2 | + console.log('Сообщение работнику'); | |
3 | + $(document).on('change', '#btn_send_file', function() { | |
4 | + var send_name = $('#send_name'); | |
5 | + var send_name_val = send_name.val(); | |
6 | + var this_final_name = $('#this_final_name'); | |
7 | + | |
8 | + console.log(send_name_val); | |
9 | + this_final_name.html(send_name_val); | |
10 | + | |
11 | + }); | |
12 | +</script> | |
13 | +<div id="send2" class="modal"> | |
14 | + <div class="modal__body"> | |
15 | + fghfghfghfghfgh | |
16 | + </div> | |
17 | +</div> |
resources/views/modals/send_login.blade.php
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | <div class="modal__body"> |
3 | 3 | <div class="modal__title left">Войти</div> |
4 | 4 | <form class="modal__sign"> |
5 | - <div id="message_error" name="message_error"> | |
5 | + <div id="message_error" name="message_error" style="color: red"> | |
6 | 6 | </div> |
7 | 7 | <div class="modal__sign-item"> |
8 | 8 | <input type="email" class="input" id="email_input" name="email" placeholder="E-mail" required> |
resources/views/modals/send_message_noaut.blade.php
1 | 1 | <div id="question" class="modal modal_bg"> |
2 | 2 | <div class="modal__body"> |
3 | - <div class="modal__title">Отправить сообщение "Наяда"</div> | |
3 | + <div class="modal__title">Отправить сообщение не получится сейчас</div> | |
4 | 4 | <div class="modal__text">Вы должны быть авторизованы, чтобы отправить личное сообщение</div> |
5 | 5 | <div class="modal__buttons"> |
6 | 6 | <a data-fancybox data-src="#sign" data-options='{"touch":false,"autoFocus":false}' class="button">Войти</a> |
resources/views/modals/send_message_noaut2.blade.php
... | ... | @@ -0,0 +1,10 @@ |
1 | +<div id="question2" 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 | + <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 | + </div> | |
9 | + </div> | |
10 | +</div> |
resources/views/modals/send_worker_new.blade.php
... | ... | @@ -0,0 +1,26 @@ |
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> | |
22 | +<div id="send" class="modal"> | |
23 | + <div class="modal__body"> | |
24 | + <div class="modal__title">fghfghfghfgh</div> | |
25 | + </div> | |
26 | +</div> |
resources/views/news-list.blade.php
... | ... | @@ -144,16 +144,14 @@ |
144 | 144 | <img src="{{ asset('images/8.jpg') }}" alt="{{ $Q->title }}" class="news__item-pic"> |
145 | 145 | @endif |
146 | 146 | <div class="news__item-body"> |
147 | - <time datetime="2023-05-01" class="news__item-date">{{ $Q->created_at }}</time> | |
147 | + <time datetime="{{ date('d.m.Y H:i:s', strtotime($Q->created_at)) }}" class="news__item-date">{{ date('d.m.Y H:i:s', strtotime($Q->created_at)) }}</time> | |
148 | 148 | <span class="news__item-title">{{ $Q->title }}</span> |
149 | 149 | <span class="news__item-text">{!! $Q->text !!}</span> |
150 | 150 | <a href="{{ route('detail_new', ['new' => $Q->id]) }}" class="news__item-more button button_light">Читать далее</a> |
151 | 151 | </div> |
152 | 152 | </div> |
153 | 153 | @endforeach |
154 | - | |
155 | 154 | </div> |
156 | - | |
157 | 155 | {{ $Query->appends($_GET)->links('paginate') }} |
158 | 156 | @else |
159 | 157 | <div class="news__items"> |
resources/views/paginate.blade.php
1 | 1 | @if ($paginator->hasPages()) |
2 | 2 | <div class="pagination"> |
3 | 3 | @if ($paginator->onFirstPage()) |
4 | - | |
4 | + <a href="{{ $paginator->previousPageUrl() }}" class="pagination__nav pagination__nav_prev"> | |
5 | + <svg> | |
6 | + <use xlink:href="{{ asset('images/sprite.svg#arrow-bold') }}"></use> | |
7 | + </svg> | |
8 | + </a> | |
5 | 9 | @else |
6 | 10 | <a href="{{ $paginator->previousPageUrl() }}" class="pagination__nav pagination__nav_prev"> |
7 | 11 | <svg> |
... | ... | @@ -45,7 +49,11 @@ |
45 | 49 | </svg> |
46 | 50 | </a> |
47 | 51 | @else |
48 | - | |
52 | + <a href="{{ $paginator->nextPageUrl() }}" class="pagination__nav pagination__nav_next"> | |
53 | + <svg> | |
54 | + <use xlink:href="{{ asset('images/sprite.svg#arrow-bold') }}"></use> | |
55 | + </svg> | |
56 | + </a> | |
49 | 57 | @endif |
50 | 58 | </div> |
51 | 59 | @endif |
resources/views/vacance-item.blade.php
... | ... | @@ -109,7 +109,7 @@ |
109 | 109 | <button type="button" class="button main__employer-page-two-item-button">Откликнуться</button> |
110 | 110 | </div> |
111 | 111 | <div class="main__employer-page-two-item-bottom"> |
112 | - <div class="main__employer-page-two-item-bottom-date">{{ $Q->created_at }}</div> | |
112 | + <div class="main__employer-page-two-item-bottom-date">{{ date('d.m.Y H:i:s', strtotime($Q->created_at)) }}</div> | |
113 | 113 | <button type="button" data-val="{{ $Q->id }}" class="like main__employer-page-two-item-bottom-like js_vacancy_favorites js-toggle <?=\App\Classes\RusDate::selected_vacancy($Q->id);?>"> |
114 | 114 | <svg> |
115 | 115 | <use xlink:href="{{ asset('images/sprite.svg#heart') }}"></use> |
resources/views/vacancies.blade.php
... | ... | @@ -75,7 +75,8 @@ |
75 | 75 | <a href="{{ route('list-vacancies', ['categories' => $cat->id]) }}" class="vacancies__item"> |
76 | 76 | <span style="border-color:{{$colors[$i]}}"> |
77 | 77 | <b>{{ $cat->name }}</b> |
78 | - <u>{{ $cat->min_salary }} — {{ $cat->max_salary }} ₽</u> | |
78 | + <u>@if (!empty($cat->min_salary)) {{ $cat->min_salary }} @else 0 @endif — | |
79 | + @if (!empty($cat->max_salary)) {{ $cat->max_salary }} @else 0 @endif ₽</u> | |
79 | 80 | <i>Вакансий: <span>{{ $cat->cnt }}</span></i> |
80 | 81 | </span> |
81 | 82 | </a> |
resources/views/worker.blade.php
... | ... | @@ -222,9 +222,7 @@ |
222 | 222 | <div class="main__resume-profile-info"> |
223 | 223 | <h2 class="main__resume-profile-info-title">Данные о прошлых компаниях</h2> |
224 | 224 | <div class="main__resume-profile-info-body"> |
225 | - | |
226 | - @if (isset($Query[0]->prev_company)) | |
227 | - @if ($Query[0]->prev_company->count()) | |
225 | + @if ((isset($Query[0]->prev_company)) && ($Query[0]->prev_company->count())) | |
228 | 226 | @foreach ($Query[0]->prev_company as $it) |
229 | 227 | <div class="main__resume-profile-info-body-item"> |
230 | 228 | <h3 class="main__resume-profile-info-body-subtitle">{{ $it->name_company }}</h3> |
... | ... | @@ -247,23 +245,37 @@ |
247 | 245 | </ul> |
248 | 246 | </div> |
249 | 247 | @endforeach |
250 | - @endif | |
248 | + @else | |
249 | + <div class="main__resume-profile-info-body-item"> | |
250 | + <h3 class="main__resume-profile-info-body-subtitle">Нету данных о компании</h3> | |
251 | + </div> | |
251 | 252 | @endif |
252 | 253 | </div> |
253 | 254 | </div> |
255 | + | |
254 | 256 | <div class="main__resume-profile-review"> |
257 | + <form action="{{ route('stars_answer') }}" method="POST"> | |
258 | + @csrf | |
255 | 259 | <h2 class="main__resume-profile-review-title">Оставить отзыв о работнике</h2> |
256 | 260 | <div class="rate"> |
257 | 261 | <div class="rate__label">Ваша оценка:</div> |
258 | 262 | <div class="rate__stars"> |
259 | - <img src="{{ asset('images/stars.svg') }}" alt=""> | |
263 | + <select name="stars" id="stars" class="star-rating js-stars"> | |
264 | + <option value="5">5</option> | |
265 | + <option value="4">4</option> | |
266 | + <option value="3">3</option> | |
267 | + <option value="2">2</option> | |
268 | + <option value="1" selected>1</option> | |
269 | + </select> | |
260 | 270 | </div> |
261 | 271 | </div> |
272 | + <input type="hidden" name="worker_id" id="worker_id" value="{{ $Query[0]->id }}"/> | |
262 | 273 | <div class="main__resume-profile-review-body"> |
263 | 274 | <h3>Ваш отзыв</h3> |
264 | - <textarea class="textarea" placeholder="Текст отзыва…" required></textarea> | |
275 | + <textarea class="textarea" name="message" id="message" placeholder="Текст отзыва…" required></textarea> | |
265 | 276 | <button type="submit" class="button">Оставить отзыв</button> |
266 | 277 | </div> |
278 | + </form> | |
267 | 279 | </div> |
268 | 280 | </div> |
269 | 281 | </div> |
resources/views/workers/cabinet.blade.php
... | ... | @@ -135,7 +135,7 @@ |
135 | 135 | <h2 class="title cabinet__title">Моя анкета</h2> |
136 | 136 | <div class="cabinet__anketa-buttons"> |
137 | 137 | <a href="{{ route('worker.up', ['worker' => $Worker[0]->id]) }}" class="button">Поднять резюме</a> |
138 | - <a href="{{ route('worker.download', ['worker' => $Worker[0]->id]) }}" class="button"> | |
138 | + <a href="{{ route('resume_download', ['worker' => $Worker[0]->id]) }}" target="_blank" class="button"> | |
139 | 139 | <svg> |
140 | 140 | <use xlink:href="{{ asset('images/sprite.svg#share') }}"></use> |
141 | 141 | </svg> |
... | ... | @@ -153,19 +153,19 @@ |
153 | 153 | <use xlink:href="{{ asset('images/sprite.svg#eye-3') }}"></use> |
154 | 154 | </svg> |
155 | 155 | <span>Просмотров:</span> |
156 | - <b>@if (isset($Worker[0]->users->static_user)) 1 @else 0 @endif</b> | |
156 | + <b>@if (isset($stat[0]->lookin)) {{ $stat[0]->lookin }} @else 0 @endif</b> | |
157 | 157 | </div> |
158 | 158 | <div class="cabinet__stats-item"> |
159 | 159 | <svg> |
160 | 160 | <use xlink:href="{{ asset('images/sprite.svg#warning') }}"></use> |
161 | 161 | </svg> |
162 | 162 | <span>Отзывов:</span> |
163 | - <b>@if (isset($Worker[0]->users->static_user)) 1 @else 0 @endif</b> | |
163 | + <b>@if (isset($stat[0]->message)) {{ $stat[0]->message }} @else 0 @endif</b> | |
164 | 164 | </div> |
165 | 165 | </div> |
166 | - <div class="cabinet__stats-subtitle">Анкета заполнена на @if (!empty($Worker[0]->persent_anketa)) {{ $Worker[0]->persent_anketa }}% @else 0% @endif</div> | |
166 | + <div class="cabinet__stats-subtitle">Анкета заполнена на {{ $persent }}%</div> | |
167 | 167 | <div class="cabinet__stats-line"> |
168 | - <span style="width:@if (!empty($Worker[0]->persent_anketa)) {{ $Worker[0]->persent_anketa }}% @else 0% @endif"></span> | |
168 | + <span style="width:{{ $persent }}%"></span> | |
169 | 169 | </div> |
170 | 170 | <div class="cabinet__stats-bottom">Заполните профиль, чтобы повысить процент анкеты на 80%</div> |
171 | 171 | </div> |
routes/web.php
... | ... | @@ -442,6 +442,8 @@ Route::get('register_employer', [EmployerController::class, 'register_employer'] |
442 | 442 | |
443 | 443 | //восстановление пароля |
444 | 444 | Route::get('repair-password', [MainController::class, 'repair_password'])->name('repair_password'); |
445 | +// Звезда сообщения | |
446 | +Route::post('stars-answer', [WorkerController::class, 'stars_answer'])->name('stars_answer'); | |
445 | 447 | |
446 | 448 | // Борьба |
447 | 449 | Route::get('clear_cookie', function() { |
... | ... | @@ -524,6 +526,7 @@ Route::group([ |
524 | 526 | Route::get('cabinet/vacancy-up/{ad_employer}', [EmployerController::class, 'vacancy_up'])->name('vacancy_up'); |
525 | 527 | Route::get('cabinet/vacancy-eye/{ad_employer}/{status}', [EmployerController::class, 'vacancy_eye'])->name('vacancy_eye'); |
526 | 528 | Route::get('cabinet/vacancy-edit/{ad_employer}', [EmployerController::class, 'vacancy_edit'])->name('vacancy_edit'); |
529 | + Route::post('cabinet/vacancy-edit/{ad_employer}/', [EmployerController::class, 'vacancy_save_me'])->name('vacancy_save_me'); | |
527 | 530 | |
528 | 531 | // 4 страница - Отклики на вакансии |
529 | 532 | Route::get('cabinet/answers/{employer}', [EmployerController::class, 'answers'])->name('answers'); |