Commit d152a3a68ea75a05369b83e08b3dfbd276998a38
1 parent
5b68533bb1
Exists in
master
and in
1 other branch
Создание основных страниц публичной части сайта
Showing 60 changed files with 2320 additions and 608 deletions Inline Diff
- app/Http/Controllers/Admin/Ad_EmployersController.php
- app/Http/Controllers/Admin/EmployersController.php
- app/Http/Controllers/CompanyController.php
- app/Http/Controllers/EmployerController.php
- app/Http/Controllers/MainController.php
- app/Http/Controllers/PagesController.php
- app/Http/Requests/FlotRequest.php
- app/Http/Requests/PagesRequest.php
- app/Models/Ad_employer.php
- app/Models/Ad_jobs.php
- app/Models/Education.php
- app/Models/Employer.php
- app/Models/Flot.php
- database/migrations/2024_02_08_134941_alter_ad_job_table.php
- database/migrations/2024_02_08_144854_alter_ad_employer.php
- database/migrations/2024_02_16_062441_alter_table_ad_employers.php
- database/migrations/2024_02_19_101702_alter_table_flot.php
- public/images/12.jpg
- public/images/13.jpg
- public/images/14.jpg
- public/images/15.jpg
- public/images/16.jpg
- public/images/17.jpg
- public/images/18.jpg
- public/images/bg-3.svg
- public/images/bg-4.svg
- public/images/catpcha.jpg
- public/images/education.jpg
- public/images/stars.svg
- public/images/svg/1.svg
- public/images/svg/2.svg
- public/images/svg/3.svg
- public/images/svg/4.svg
- public/images/svg/5.svg
- public/images/svg/6.svg
- public/images/wysiwyg.jpg
- resources/views/admin/ad_employers/index.blade.php
- resources/views/admin/ad_jobs/edit.blade.php
- resources/views/admin/employer/edit.blade.php
- resources/views/admin/flot/add.blade.php
- resources/views/admin/flot/edit.blade.php
- resources/views/admin/flot/flot_add.blade.php
- resources/views/admin/flot/test.blade.php
- resources/views/ajax/companies.blade.php
- resources/views/ajax/companies2.blade.php
- resources/views/ajax/list_vacancies.blade.php
- resources/views/ajax/vacance-item.blade.php
- resources/views/ajax/vacancies.blade.php
- resources/views/companies.blade.php
- resources/views/contacts.blade.php
- resources/views/education.blade.php
- resources/views/info_company.blade.php
- resources/views/layout/frontend-page.blade.php
- resources/views/layout/frontend.blade.php
- resources/views/list_vacancies.blade.php
- resources/views/pages.blade.php
- resources/views/paginate.blade.php
- resources/views/vacance-item.blade.php
- resources/views/vacancies.blade.php
- routes/web.php
app/Http/Controllers/Admin/Ad_EmployersController.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Http\Controllers\Admin; | 3 | namespace App\Http\Controllers\Admin; |
4 | 4 | ||
5 | use App\Http\Controllers\Controller; | 5 | use App\Http\Controllers\Controller; |
6 | use App\Models\Ad_employer; | 6 | use App\Models\Ad_employer; |
7 | use App\Models\Ad_jobs; | ||
7 | use App\Models\Employer; | 8 | use App\Models\Employer; |
8 | use App\Models\Job_title; | 9 | use App\Models\Job_title; |
9 | use App\Models\User; | 10 | use App\Models\User; |
10 | use Carbon\Carbon; | 11 | use Carbon\Carbon; |
11 | use Illuminate\Http\Request; | 12 | use Illuminate\Http\Request; |
12 | use Illuminate\Support\Facades\Auth; | 13 | use Illuminate\Support\Facades\Auth; |
13 | use Illuminate\Support\Facades\Validator; | 14 | use Illuminate\Support\Facades\Validator; |
14 | 15 | ||
15 | class Ad_EmployersController extends Controller | 16 | class Ad_EmployersController extends Controller |
16 | { | 17 | { |
17 | /** | 18 | /** |
18 | * Display a listing of the resource. | 19 | * Display a listing of the resource. |
19 | * | 20 | * |
20 | * @return \Illuminate\Http\Response | 21 | * @return \Illuminate\Http\Response |
21 | */ | 22 | */ |
22 | public function index(Request $request) | 23 | public function index(Request $request) |
23 | { | 24 | { |
24 | $title = 'Админка - Вакансии работодателей'; | 25 | $title = 'Админка - Вакансии работодателей'; |
25 | if ($request->ajax()) { | 26 | if ($request->ajax()) { |
26 | $params = $request->all(); | 27 | $params = $request->all(); |
27 | foreach ($params['data'] as $item) { | 28 | foreach ($params['data'] as $item) { |
28 | $emp = Ad_employer::find($item); | 29 | $emp = Ad_employer::find($item); |
29 | $emp->updated_at = Carbon::now(); | 30 | $emp->updated_at = Carbon::now(); |
30 | $emp->save(); | 31 | $emp->save(); |
31 | } | 32 | } |
32 | } | 33 | } |
33 | 34 | ||
34 | $select_job = Job_title::query()->active()->get(); | 35 | $select_job = Job_title::query()->active()->get(); |
35 | $all_ad = Ad_employer::with('employer')->with('jobs') | 36 | $all_ad = Ad_employer::with('employer')->with('jobs') |
36 | ->where('is_remove', '0')->get()->count(); | 37 | ->where('is_remove', '0')->get()->count(); |
37 | 38 | ||
38 | $ad_employers = Ad_employer::where('is_remove', '0'); | 39 | $ad_employers = Ad_employer::where('is_remove', '0'); |
39 | 40 | ||
40 | $find_job = ""; | 41 | $find_job = ""; |
41 | if (isset($request->category_job)) { | 42 | if (isset($request->category_job)) { |
42 | if ($request->category_job != 'Все вакансии') { | 43 | if ($request->category_job != 'Все вакансии') { |
43 | $find_job = $request->category_job; | 44 | $find_job = $request->category_job; |
44 | $ad_employers = $ad_employers->WhereHas('jobs', function($query) use ($find_job){ | 45 | $ad_employers = $ad_employers->WhereHas('jobs', function($query) use ($find_job){ |
45 | return $query->where('name', 'LIKE', '%'.$find_job.'%'); | 46 | return $query->where('name', 'LIKE', '%'.$find_job.'%'); |
46 | }); | 47 | }); |
47 | } | 48 | } |
48 | } else { | 49 | } else { |
49 | $ad_employers = $ad_employers->with('jobs'); | 50 | $ad_employers = $ad_employers->with('jobs'); |
50 | } | 51 | } |
51 | 52 | ||
52 | $find_key = ""; | 53 | $find_key = ""; |
53 | if (isset($request->find)) { | 54 | if (isset($request->find)) { |
54 | $find_key = $request->find; | 55 | $find_key = $request->find; |
55 | $ad_employers = $ad_employers->whereHas('employer', function($query) use($find_key) { | 56 | $ad_employers = $ad_employers->whereHas('employer', function($query) use($find_key) { |
56 | $query->Where('name_company', 'LIKE', "%$find_key%"); | 57 | $query->Where('name_company', 'LIKE', "%$find_key%"); |
57 | $query->orWhere('name', 'LIKE', "%$find_key%"); | 58 | $query->orWhere('name', 'LIKE', "%$find_key%"); |
58 | }); | 59 | }); |
59 | 60 | ||
60 | } else { | 61 | } else { |
61 | $ad_employers = $ad_employers->with('employer'); | 62 | $ad_employers = $ad_employers->with('employer'); |
62 | } | 63 | } |
63 | 64 | ||
64 | $ad_employers = $ad_employers->OrderBy('updated_at', 'desc')->paginate(15); | 65 | $ad_employers = $ad_employers->OrderBy('updated_at', 'desc')->paginate(15); |
65 | 66 | ||
66 | if ($request->ajax()) { | 67 | if ($request->ajax()) { |
67 | return view('admin.ad_employers.index_ajax', compact('ad_employers', 'params')); | 68 | return view('admin.ad_employers.index_ajax', compact('ad_employers', 'params')); |
68 | } else { | 69 | } else { |
70 | // конец | ||
69 | return view('admin.ad_employers.index', compact('ad_employers', | 71 | return view('admin.ad_employers.index', compact('ad_employers', |
70 | 'title', | 72 | 'title', |
71 | 'all_ad', | 73 | 'all_ad', |
72 | 'find_job', | 74 | 'find_job', |
73 | 'find_key', | 75 | 'find_key', |
74 | 'select_job')); | 76 | 'select_job')); |
75 | } | 77 | } |
76 | } | 78 | } |
77 | 79 | ||
78 | /** | 80 | /** |
79 | * Show the form for creating a new resource | 81 | * Show the form for creating a new resource |
80 | * @return \Illuminate\Http\Response | 82 | * @return \Illuminate\Http\Response |
81 | */ | 83 | */ |
82 | public function create() | 84 | public function create() |
83 | { | 85 | { |
84 | $job_titles = Job_title::query()->active()->get(); | 86 | $job_titles = Job_title::query()->active()->get(); |
85 | return view('admin.ad_employers.add', compact('job_titles')); | 87 | return view('admin.ad_employers.add', compact('job_titles')); |
86 | } | 88 | } |
87 | 89 | ||
88 | /** | 90 | /** |
89 | * Store a newly created resource in storage. | 91 | * Store a newly created resource in storage. |
90 | * | 92 | * |
91 | * @param \Illuminate\Http\Request $request | 93 | * @param \Illuminate\Http\Request $request |
92 | * @return \Illuminate\Http\Response | 94 | * @return \Illuminate\Http\Response |
93 | */ | 95 | */ |
94 | public function store(Request $request) | 96 | public function store(Request $request) |
95 | { | 97 | { |
96 | $params = $request->all(); | 98 | $params = $request->all(); |
97 | unset($params->position_work); | 99 | unset($params->position_work); |
98 | $rules = [ | 100 | $rules = [ |
99 | 'name' => 'required|min:3', | 101 | 'name' => 'required|min:3', |
100 | ]; | 102 | ]; |
101 | $messages = [ | 103 | $messages = [ |
102 | 'required' => 'Укажите обязательное поле', | 104 | 'required' => 'Укажите обязательное поле', |
103 | ]; | 105 | ]; |
104 | $validator = Validator::make($params, $rules, $messages); | 106 | $validator = Validator::make($params, $rules, $messages); |
105 | 107 | ||
106 | if ($validator->fails()) { | 108 | if ($validator->fails()) { |
107 | return redirect()->route('admin.add-ad-employers') | 109 | return redirect()->route('admin.add-ad-employers') |
108 | ->withErrors($validator); | 110 | ->withErrors($validator); |
109 | } else { | 111 | } else { |
110 | $ad_employer = new Ad_employer(); | 112 | $ad_employer = new Ad_employer(); |
111 | $params['employer_id'] = 1; | 113 | $params['employer_id'] = 1; |
112 | $data_ad = $ad_employer->create($params); | 114 | $data_ad = $ad_employer->create($params); |
113 | $data_ad->jobs()->sync($request->position_work); | 115 | $data_ad->jobs()->sync($request->position_work); |
114 | //$ad_employer->jobs()->sync($request->position_work); | 116 | //$ad_employer->jobs()->sync($request->position_work); |
115 | 117 | ||
116 | 118 | ||
117 | return redirect()->route('admin.ad-employers') | 119 | return redirect()->route('admin.ad-employers') |
118 | ->with('success', 'Данные были успешно сохранены'); | 120 | ->with('success', 'Данные были успешно сохранены'); |
119 | } | 121 | } |
120 | return redirect()->route('admin.ad-employers'); | 122 | return redirect()->route('admin.ad-employers'); |
121 | } | 123 | } |
122 | 124 | ||
123 | /** | 125 | /** |
124 | * Display the specified resource. | 126 | * Display the specified resource. |
125 | * | 127 | * |
126 | * @param \App\Models\Ad_employer $ad_employer | 128 | * @param \App\Models\Ad_employer $ad_employer |
127 | * @return \Illuminate\Http\Response | 129 | * @return \Illuminate\Http\Response |
128 | */ | 130 | */ |
129 | public function show(Ad_employer $ad_employer) | 131 | public function show(Ad_employer $ad_employer) |
130 | { | 132 | { |
131 | // | 133 | // |
132 | } | 134 | } |
133 | 135 | ||
134 | /** | 136 | /** |
135 | * Show the form for editing the specified resource. | 137 | * Show the form for editing the specified resource. |
136 | * | 138 | * |
137 | * @param \App\Models\Ad_employer $ad_employer | 139 | * @param \App\Models\Ad_employer $ad_employer |
138 | * @return \Illuminate\Http\Response | 140 | * @return \Illuminate\Http\Response |
139 | */ | 141 | */ |
140 | public function edit(Ad_employer $ad_employer) | 142 | public function edit(Ad_employer $ad_employer) |
141 | { | 143 | { |
142 | $sel = Array(); | 144 | $sel = Array(); |
143 | $job_titles = Job_title::active()->get(); | 145 | $job_titles = Job_title::active()->get(); |
144 | 146 | ||
145 | foreach ($ad_employer->jobs as $j) { | 147 | foreach ($ad_employer->jobs as $j) { |
146 | $sel[] = $j->id; | 148 | $sel[] = $j->id; |
147 | } | 149 | } |
148 | 150 | ||
149 | return view('admin.ad_employers.edit', compact('ad_employer', 'job_titles', 'sel')); | 151 | return view('admin.ad_employers.edit', compact('ad_employer', 'job_titles', 'sel')); |
150 | } | 152 | } |
151 | 153 | ||
152 | /** | 154 | /** |
153 | * Update the specified resource in storage. | 155 | * Update the specified resource in storage. |
154 | * | 156 | * |
155 | * @param \Illuminate\Http\Request $request | 157 | * @param \Illuminate\Http\Request $request |
156 | * @param \App\Models\Ad_employer $ad_employer | 158 | * @param \App\Models\Ad_employer $ad_employer |
157 | * @return \Illuminate\Http\Response | 159 | * @return \Illuminate\Http\Response |
158 | */ | 160 | */ |
159 | public function update(Request $request, Ad_employer $ad_employer) | 161 | public function update(Request $request, Ad_employer $ad_employer) |
160 | { | 162 | { |
161 | $params = $request->all(); | 163 | $params = $request->all(); |
162 | unset($params->position_work); | 164 | unset($params->position_work); |
163 | $rules = [ | 165 | $rules = [ |
164 | 'name' => 'required|min:3', | 166 | 'name' => 'required|min:3', |
165 | ]; | 167 | ]; |
166 | $messages = [ | 168 | $messages = [ |
167 | 'required' => 'Укажите обязательное поле', | 169 | 'required' => 'Укажите обязательное поле', |
168 | ]; | 170 | ]; |
169 | $validator = Validator::make($params, $rules, $messages); | 171 | $validator = Validator::make($params, $rules, $messages); |
170 | 172 | ||
171 | if ($validator->fails()) { | 173 | if ($validator->fails()) { |
172 | return redirect()->route('admin.edit-ad-employers', ['ad_employer' => $ad_employer->id]) | 174 | return redirect()->route('admin.edit-ad-employers', ['ad_employer' => $ad_employer->id]) |
173 | ->withErrors($validator); | 175 | ->withErrors($validator); |
174 | } else { | 176 | } else { |
175 | $ad_employer->update($params); | 177 | $ad_employer->update($params); |
176 | $ad_employer->jobs()->sync($request->position_work); | 178 | $ad_employer->jobs()->sync($request->position_work); |
177 | 179 | ||
178 | return redirect()->route('admin.ad-employers') | 180 | return redirect()->route('admin.ad-employers') |
179 | ->with('success', 'Данные были успешно сохранены'); | 181 | ->with('success', 'Данные были успешно сохранены'); |
180 | } | 182 | } |
183 | |||
181 | return redirect()->route('admin.ad-employers'); | 184 | return redirect()->route('admin.ad-employers'); |
182 | } | 185 | } |
183 | 186 | ||
184 | /** | ||
185 | * Remove the specified resource from storage. | ||
186 | * | ||
187 | * @param \App\Models\Ad_employer $ad_employer | ||
188 | * @return \Illuminate\Http\Response | ||
189 | */ | ||
190 | public function destroy(Ad_employer $ad_employer) | 187 | public function destroy(Ad_employer $ad_employer) |
191 | { | 188 | { |
192 | $ad_employer->is_remove = 1; | 189 | $ad_employer->is_remove = 1; |
193 | $ad_employer->save(); | 190 | $ad_employer->save(); |
194 | 191 | ||
195 | return redirect()->route('admin.ad-employers'); | 192 | return redirect()->route('admin.ad-employers'); |
196 | } | 193 | } |
194 | |||
195 | |||
196 | public function update_ad_jobs(Ad_jobs $ad_jobs, Request $request) { | ||
197 | $params = $request->all(); | ||
198 | |||
199 | $rules = [ | ||
200 | 'min_salary' => 'required|integer|min:0|max:99999999', | ||
201 | 'max_salary' => 'required|integer|min:0|max:99999999', | ||
202 | |||
203 | ]; | ||
204 | $messages = [ | ||
205 | 'required' => 'Укажите обязательное поле', | ||
206 | 'min' => 'Минимальное значение 0', | ||
207 | 'max' => 'Превышено максимальное значение', | ||
208 | 'integer' => 'Это должно быть числом' | ||
209 | ]; | ||
210 | |||
211 | $validator = Validator::make($params, $rules, $messages); | ||
212 | |||
213 | if ($validator->fails()) { | ||
214 | return redirect()->route('admin.edit_jobs', ['ad_jobs' => $ad_jobs->id]) | ||
215 | ->withErrors($validator); | ||
216 | } else { | ||
217 | $ad_jobs->update($params); | ||
218 | return redirect()->route('admin.ad-employers') | ||
219 | ->with('success', 'Данные были успешно сохранены'); | ||
220 | } | ||
221 | |||
222 | return redirect()->route('admin.ad-employers'); | ||
223 | } |
app/Http/Controllers/Admin/EmployersController.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Http\Controllers\Admin; | 3 | namespace App\Http\Controllers\Admin; |
4 | 4 | ||
5 | use App\Http\Controllers\Controller; | 5 | use App\Http\Controllers\Controller; |
6 | use App\Http\Requests\FlotRequest; | ||
6 | use App\Models\Ad_employer; | 7 | use App\Models\Ad_employer; |
7 | use App\Models\Answer; | 8 | use App\Models\Answer; |
8 | use App\Models\CategoryEmp; | 9 | use App\Models\CategoryEmp; |
9 | use App\Models\Employer; | 10 | use App\Models\Employer; |
11 | use App\Models\Flot; | ||
10 | use App\Models\Static_ad; | 12 | use App\Models\Static_ad; |
11 | use App\Models\User; | 13 | use App\Models\User; |
12 | use Illuminate\Http\Request; | 14 | use Illuminate\Http\Request; |
13 | use Illuminate\Support\Facades\DB; | 15 | use Illuminate\Support\Facades\DB; |
14 | use Illuminate\Support\Facades\Storage; | 16 | use Illuminate\Support\Facades\Storage; |
15 | use Illuminate\Support\Facades\Validator; | 17 | use Illuminate\Support\Facades\Validator; |
16 | 18 | ||
17 | class EmployersController extends Controller | 19 | class EmployersController extends Controller |
18 | { | 20 | { |
19 | public function index(Request $request) { | 21 | public function index(Request $request) { |
20 | //$all_employer = User::where('is_worker', '0')->count(); | 22 | //$all_employer = User::where('is_worker', '0')->count(); |
21 | $all_public = -1; | 23 | $all_public = -1; |
22 | $all_status = -1; | 24 | $all_status = -1; |
23 | if ($request->ajax()) { | 25 | if ($request->ajax()) { |
24 | $user = User::find($request->id); | 26 | $user = User::find($request->id); |
25 | $request->offsetUnset('id'); | 27 | $request->offsetUnset('id'); |
26 | $user->update($request->all()); | 28 | $user->update($request->all()); |
27 | } | 29 | } |
28 | 30 | ||
29 | $users = User::with('employers')->select(['users.*','users.id as usr_id', 'emp.id as emp_id', 'emp.code as code_id', 'emp.logo as emp_logo', 'emp.*']) | 31 | $users = User::with('employers')->select(['users.*','users.id as usr_id', 'emp.id as emp_id', 'emp.code as code_id', 'emp.logo as emp_logo', 'emp.*']) |
30 | ->join('employers as emp','emp.user_id','users.id') | 32 | ->join('employers as emp','emp.user_id','users.id') |
31 | ->where('users.is_worker', '0')->Realuser(); //->Notadmin(); | 33 | ->where('users.is_worker', '0')->Realuser(); //->Notadmin(); |
32 | $all_employer = $users->count(); | 34 | $all_employer = $users->count(); |
33 | 35 | ||
34 | $all_public = Employer::where('status_hidden', '=', '0')-> | 36 | $all_public = Employer::where('status_hidden', '=', '0')-> |
35 | count(); | 37 | count(); |
36 | 38 | ||
37 | $all_status = Employer::where(function($query) { | 39 | $all_status = Employer::where(function($query) { |
38 | $query->Where('category', '=', 'Не оплачен') | 40 | $query->Where('category', '=', 'Не оплачен') |
39 | ->orWhere('category', '=', 'Не определен') | 41 | ->orWhere('category', '=', 'Не определен') |
40 | ->orWhere('category', '=', 'Согласование'); | 42 | ->orWhere('category', '=', 'Согласование'); |
41 | })->count(); | 43 | })->count(); |
42 | 44 | ||
43 | $find_cat = ""; | 45 | $find_cat = ""; |
44 | if (isset($request->category)) { | 46 | if (isset($request->category)) { |
45 | if ($request->category != 'Все категории') { | 47 | if ($request->category != 'Все категории') { |
46 | $users = $users->where('category', '=', $request->category); | 48 | $users = $users->where('category', '=', $request->category); |
47 | $find_cat = $request->category; | 49 | $find_cat = $request->category; |
48 | } | 50 | } |
49 | } | 51 | } |
50 | $find_key = ""; | 52 | $find_key = ""; |
51 | 53 | ||
52 | if (isset($request->find)) { | 54 | if (isset($request->find)) { |
53 | $find_key = $request->find; | 55 | $find_key = $request->find; |
54 | $users = $users->where(function($query) use($find_key) { | 56 | $users = $users->where(function($query) use($find_key) { |
55 | $query->Where('users.name', 'LIKE', "%$find_key%") | 57 | $query->Where('users.name', 'LIKE', "%$find_key%") |
56 | ->orWhere('emp.email', 'LIKE', "%$find_key%") | 58 | ->orWhere('emp.email', 'LIKE', "%$find_key%") |
57 | ->orWhere('emp.telephone', 'LIKE', "%$find_key%"); | 59 | ->orWhere('emp.telephone', 'LIKE', "%$find_key%"); |
58 | }); | 60 | }); |
59 | } | 61 | } |
60 | 62 | ||
61 | //DB::enableQueryLog(); | 63 | //DB::enableQueryLog(); |
62 | $all_current = $users->count(); | 64 | $all_current = $users->count(); |
63 | $users = $users->paginate(15); | 65 | $users = $users->paginate(15); |
64 | //dd(DB::getQueryLog()); | 66 | //dd(DB::getQueryLog()); |
65 | 67 | ||
66 | $select_category = CategoryEmp::query()->active()->get(); | 68 | $select_category = CategoryEmp::query()->active()->get(); |
67 | 69 | ||
68 | if ($request->ajax()) { | 70 | if ($request->ajax()) { |
69 | return view('admin.employer.index_ajax', compact('users')); | 71 | return view('admin.employer.index_ajax', compact('users')); |
70 | } else { | 72 | } else { |
71 | return view('admin.employer.index', compact('users', | 73 | return view('admin.employer.index', compact('users', |
72 | 'find_key', | 74 | 'find_key', |
73 | 'find_cat', | 75 | 'find_cat', |
74 | 'all_employer', | 76 | 'all_employer', |
75 | 'all_public', | 77 | 'all_public', |
76 | 'all_status', | 78 | 'all_status', |
77 | 'all_current', | 79 | 'all_current', |
78 | 'select_category')); | 80 | 'select_category')); |
79 | } | 81 | } |
80 | } | 82 | } |
81 | 83 | ||
82 | public function comment_read(Employer $employer) { | 84 | public function comment_read(Employer $employer) { |
83 | return view('admin.employer.comment', compact('employer')); | 85 | return view('admin.employer.comment', compact('employer')); |
84 | } | 86 | } |
85 | 87 | ||
88 | // Форма обновления | ||
86 | public function form_update_employer(Employer $employer) { | 89 | public function form_update_employer(Employer $employer) { |
90 | // данные | ||
87 | $select_category = CategoryEmp::query()->active()->get(); | 91 | $select_category = CategoryEmp::query()->active()->get(); |
88 | return view('admin.employer.edit', compact('employer', 'select_category')); | 92 | $flots = Flot::query()->where('employer_id', '=', $employer->id)->get(); |
93 | return view('admin.employer.edit', compact('employer', 'select_category', 'flots')); | ||
94 | } | ||
95 | |||
96 | public function edit_flot(Flot $flot, Employer $employer) { | ||
97 | return view('admin.flot.edit', compact('flot', 'employer')); | ||
98 | } | ||
99 | |||
100 | public function add_flot(Employer $employer) { | ||
101 | return view('admin.flot.add', compact('employer')); | ||
102 | } | ||
103 | |||
104 | public function save_add_flot(FlotRequest $request) { | ||
105 | $params = $request->all(); | ||
106 | $params['image'] = $request->file('image')->store("flot", 'public'); | ||
107 | Flot::create($params); | ||
108 | return redirect()->route('admin.employer-profile', ['employer' => $params['employer_id']]) | ||
109 | ->with('success', 'Данные были успешно сохранены'); | ||
110 | } | ||
111 | |||
112 | public function delete_flot(Flot $flot, $employer_id) { | ||
113 | $flot->delete(); | ||
114 | return redirect()->route('admin.employer-profile', ['employer' => $employer_id]) | ||
115 | ->with('success', 'Данные были успешно сохранены'); | ||
116 | } | ||
117 | |||
118 | |||
119 | public function edit_save_flot(Flot $flot, FlotRequest $request) { | ||
120 | $params = $request->all(); | ||
121 | |||
122 | if ($request->has('image')) { | ||
123 | if (!empty($flot->image)) { | ||
124 | Storage::delete($flot->image); | ||
125 | } | ||
126 | $params['image'] = $request->file('image')->store("flot", 'public'); | ||
127 | } else { | ||
128 | if (!empty($flot->image)) $params['image'] = $flot->image; | ||
129 | } | ||
130 | |||
131 | $flot->update($params); | ||
132 | |||
133 | return redirect()->route('admin.employer-profile', ['employer' => $params['employer_id']]) | ||
134 | ->with('success', 'Данные были успешно сохранены'); | ||
135 | |||
89 | } | 136 | } |
90 | 137 | ||
91 | public function update_employer(Employer $employer, Request $request) | 138 | public function update_employer(Employer $employer, Request $request) |
92 | { | 139 | { |
93 | $params = $request->all(); | 140 | $params = $request->all(); |
94 | unset($params['logo']); | 141 | unset($params['logo']); |
95 | unset($params['telephone']); | 142 | unset($params['telephone']); |
96 | unset($params['email']); | 143 | unset($params['email']); |
97 | unset($params['address']); | 144 | unset($params['address']); |
98 | unset($params['site']); | 145 | unset($params['site']); |
99 | unset($params['status_hidden']); | 146 | unset($params['status_hidden']); |
100 | unset($params['oficial_status']); | 147 | unset($params['oficial_status']); |
101 | unset($params['social_is']); | 148 | unset($params['social_is']); |
102 | unset($params['sending_is']); | 149 | unset($params['sending_is']); |
103 | unset($params['category']); | 150 | unset($params['category']); |
104 | unset($params['comment_admin']); | 151 | unset($params['comment_admin']); |
105 | 152 | ||
106 | $rules = [ | 153 | $rules = [ |
107 | 'name' => 'required|string|max:255', | 154 | 'name' => 'required|string|max:255', |
108 | ]; | 155 | ]; |
109 | 156 | ||
110 | $messages = [ | 157 | $messages = [ |
111 | 'required' => 'Укажите обязательное поле «:attribute»', | 158 | 'required' => 'Укажите обязательное поле «:attribute»', |
112 | 'confirmed' => 'Пароли не совпадают', | 159 | 'confirmed' => 'Пароли не совпадают', |
113 | 'email' => 'Введите корректный email', | 160 | 'email' => 'Введите корректный email', |
114 | 'min' => [ | 161 | 'min' => [ |
115 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', | 162 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', |
116 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' | 163 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' |
117 | ], | 164 | ], |
118 | 'max' => [ | 165 | 'max' => [ |
119 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', | 166 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', |
120 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' | 167 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' |
121 | ], | 168 | ], |
122 | ]; | 169 | ]; |
123 | 170 | ||
124 | $validator = Validator::make($params, $rules, $messages); | 171 | $validator = Validator::make($params, $rules, $messages); |
125 | 172 | ||
126 | if ($validator->fails()) { | 173 | if ($validator->fails()) { |
127 | return back()->withErrors($validator)->withInput(); //->route('admin.register') | 174 | return back()->withErrors($validator)->withInput(); //->route('admin.register') |
128 | 175 | ||
129 | } else { | 176 | } else { |
130 | 177 | ||
131 | //$user = User::find($employer->user_id); | 178 | //$user = User::find($employer->user_id); |
132 | $user_id = $employer->user_id; | 179 | $user_id = $employer->user_id; |
133 | $employer->telephone = $request->telephone; | 180 | $employer->telephone = $request->telephone; |
134 | $employer->email = $request->email; | 181 | $employer->email = $request->email; |
135 | $employer->address = $request->address; | 182 | $employer->address = $request->address; |
136 | $employer->site = $request->site; | 183 | $employer->site = $request->site; |
137 | $employer->text = $request->text; | 184 | $employer->text = $request->text; |
138 | $employer->status_hidden = $request->status_hidden; | 185 | $employer->status_hidden = $request->status_hidden; |
139 | $employer->oficial_status = $request->oficial_status; | 186 | $employer->oficial_status = $request->oficial_status; |
140 | $employer->social_is = $request->social_is; | 187 | $employer->social_is = $request->social_is; |
141 | $employer->sending_is = $request->sending_is; | 188 | $employer->sending_is = $request->sending_is; |
142 | $employer->category = $request->category; | 189 | $employer->category = $request->category; |
143 | $employer->comment_admin = $request->comment_admin; | 190 | $employer->comment_admin = $request->comment_admin; |
144 | 191 | ||
145 | if ($request->has('logo')) { | 192 | if ($request->has('logo')) { |
146 | if (!empty($employer->logo)) { | 193 | if (!empty($employer->logo)) { |
147 | Storage::delete($employer->logo); | 194 | Storage::delete($employer->logo); |
148 | } | 195 | } |
149 | $employer->logo = $request->file('logo')->store("employer/$user_id", 'public'); | 196 | $employer->logo = $request->file('logo')->store("employer/$user_id", 'public'); |
150 | } | 197 | } |
151 | $employer->save(); | 198 | $employer->save(); |
152 | 199 | ||
153 | $user = User::find($user_id); | 200 | $user = User::find($user_id); |
154 | $user->update($params); | 201 | $user->update($params); |
155 | 202 | ||
156 | return redirect()->route('admin.employer-profile', ['employer' => $employer->id]) | 203 | return redirect()->route('admin.employer-profile', ['employer' => $employer->id]) |
157 | ->with('success', 'Данные были успешно сохранены'); | 204 | ->with('success', 'Данные были успешно сохранены'); |
158 | } | 205 | } |
159 | } | 206 | } |
160 | 207 | ||
161 | // Удаление работодателя, вакансий и профиля юзера | 208 | // Удаление работодателя, вакансий и профиля юзера |
162 | public function delete_employer(Employer $employer, User $user) { | 209 | public function delete_employer(Employer $employer, User $user) { |
163 | try { | 210 | try { |
164 | if (!empty($employer)) { | 211 | if (!empty($employer)) { |
165 | if (!empty($employer->logo)) { | 212 | if (!empty($employer->logo)) { |
166 | Storage::delete($employer->logo); | 213 | Storage::delete($employer->logo); |
167 | } | 214 | } |
168 | 215 | ||
169 | foreach($employer->ads as $ad) { | 216 | foreach($employer->ads as $ad) { |
170 | $ads = Ad_employer::find($ad->id); | 217 | $ads = Ad_employer::find($ad->id); |
171 | $ads->employer_id = 2; | 218 | $ads->employer_id = 2; |
172 | $ads->is_remove = 1; | 219 | $ads->is_remove = 1; |
173 | $ads->save(); | 220 | $ads->save(); |
174 | } | 221 | } |
175 | 222 | ||
176 | $employer->delete(); | 223 | $employer->delete(); |
177 | } | 224 | } |
178 | } finally { | 225 | } finally { |
179 | $user->delete(); | 226 | $user->delete(); |
180 | } | 227 | } |
181 | 228 | ||
182 | return redirect()->route('admin.employers')->with('success', 'Данные были удалены о работодателе'); | 229 | return redirect()->route('admin.employers')->with('success', 'Данные были удалены о работодателе'); |
183 | } | 230 | } |
184 | 231 | ||
185 | // кабинет - отзывы о работодателе для модерации | 232 | // кабинет - отзывы о работодателе для модерации |
186 | public function answers(Request $request) { | 233 | public function answers(Request $request) { |
187 | if ($request->ajax()) { | 234 | if ($request->ajax()) { |
188 | $user = Answer::find($request->id); | 235 | $user = Answer::find($request->id); |
189 | $request->offsetUnset('id'); | 236 | $request->offsetUnset('id'); |
190 | $user->update($request->all()); | 237 | $user->update($request->all()); |
191 | } | 238 | } |
192 | 239 | ||
193 | $answers = Answer::query()->orderByDesc('id')->paginate(15); | 240 | $answers = Answer::query()->orderByDesc('id')->paginate(15); |
194 | 241 | ||
195 | if ($request->ajax()) { | 242 | if ($request->ajax()) { |
196 | return view('admin.answers.index_ajax', compact('answers')); | 243 | return view('admin.answers.index_ajax', compact('answers')); |
197 | } else { | 244 | } else { |
198 | return view('admin.answers.index', compact('answers')); | 245 | return view('admin.answers.index', compact('answers')); |
199 | } | 246 | } |
200 | } | 247 | } |
201 | 248 | ||
202 | // кабинет - статистика вакансий работодателя | 249 | // кабинет - статистика вакансий работодателя |
203 | public function static_ads(Request $request) { | 250 | public function static_ads(Request $request) { |
204 | $stat = Static_ad::with('ads'); | 251 | $stat = Static_ad::with('ads'); |
205 | $ads = Ad_employer::query()->active()->OrderBy('id')->get(); | 252 | $ads = Ad_employer::query()->active()->OrderBy('id')->get(); |
206 | $periods = Static_ad::query()->distinct('year_month')->select('year_month')->get(); | 253 | $periods = Static_ad::query()->distinct('year_month')->select('year_month')->get(); |
207 | if ($request->ajax()) { | 254 | if ($request->ajax()) { |
208 | if (isset($request->ad_employer_id)) | 255 | if (isset($request->ad_employer_id)) |
209 | if (!$request->ad_employer_id == "0") | 256 | if (!$request->ad_employer_id == "0") |
210 | $stat = $stat->Where('ad_employer_id', '=', $request->ad_employer_id); | 257 | $stat = $stat->Where('ad_employer_id', '=', $request->ad_employer_id); |
211 | if (isset($request->year_month)) { | 258 | if (isset($request->year_month)) { |
212 | if (!$request->year_month == "0") | 259 | if (!$request->year_month == "0") |
213 | $stat = $stat->Where('year_month', '=', $request->year_month); | 260 | $stat = $stat->Where('year_month', '=', $request->year_month); |
214 | } | 261 | } |
215 | } | 262 | } |
216 | 263 | ||
217 | $stat = $stat->OrderByDesc('year_month'); | 264 | $stat = $stat->OrderByDesc('year_month'); |
218 | $stat = $stat->paginate(15); | 265 | $stat = $stat->paginate(15); |
219 | 266 | ||
220 | if ($request->ajax()) | 267 | if ($request->ajax()) |
221 | return view('admin.static.index_ads_ajax', compact('stat')); | 268 | return view('admin.static.index_ads_ajax', compact('stat')); |
222 | else | 269 | else |
223 | return view('admin.static.index_ads', compact('stat', 'ads', 'periods')); | 270 | return view('admin.static.index_ads', compact('stat', 'ads', 'periods')); |
224 | |||
225 | } | 271 | } |
226 |
app/Http/Controllers/CompanyController.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Http\Controllers; | 3 | namespace App\Http\Controllers; |
4 | 4 | ||
5 | use App\Models\Employer; | ||
5 | use Illuminate\Http\Request; | 6 | use Illuminate\Http\Request; |
6 | 7 | ||
7 | class CompanyController extends Controller | 8 | class CompanyController extends Controller |
8 | { | 9 | { |
9 | // | 10 | public function shipping_companies(Request $request) { |
11 | $emps = Employer::query()->with('ads'); | ||
12 | if ($request->get('search')) { | ||
13 | $search = $request->get('search'); | ||
14 | $emps = $emps->where('name_company', 'LIKE', "%$search%"); | ||
15 | } | ||
16 | |||
17 | $count_emps = $emps->count(); | ||
18 | |||
19 | if ($request->get('sort')) { | ||
20 | $sort = $request->get('sort'); | ||
21 | switch ($sort) { | ||
22 | case 'name_up': $emps = $emps->orderBy('name_company')->orderBy('id'); break; | ||
23 | case 'name_down': $emps = $emps->orderByDesc('name_company')->orderby('id'); break; | ||
24 | case 'created_at_up': $emps = $emps->OrderBy('created_at')->orderBy('id'); break; | ||
25 | case 'created_at_down': $emps = $emps->orderByDesc('created_at')->orderBy('id'); break; | ||
26 | case 'default': $emps = $emps->orderBy('id')->orderby('updated_at'); break; | ||
27 | default: $emps = $emps->orderBy('id')->orderby('updated_at'); break; | ||
28 | } | ||
29 | } | ||
30 | |||
31 | $emps = $emps->paginate(4); | ||
32 | |||
33 | if ($request->ajax()) { | ||
34 | if ($request->get('block') == '1') | ||
35 | return view('ajax.companies', compact('emps', 'count_emps')); | ||
36 | else | ||
37 | return view('ajax.companies2', compact('emps', 'count_emps')); | ||
38 | } else { | ||
39 | return view('companies', compact('emps', 'count_emps')); | ||
40 | } | ||
41 | } | ||
42 | |||
43 | public function info_company(Employer $company) { | ||
44 | $company = Employer::with('ads')->with('flots') | ||
45 | ->where('id', '=', $company->id)->get(); | ||
46 | $title = $company[0]->name_company; | ||
47 | return view('info_company', compact('company', 'title')); | ||
48 | } | ||
10 | } | 49 | } |
11 | 50 |
app/Http/Controllers/EmployerController.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Http\Controllers; | 3 | namespace App\Http\Controllers; |
4 | 4 | ||
5 | use App\Models\Ad_employer; | ||
6 | use App\Models\Category; | ||
5 | use Illuminate\Http\Request; | 7 | use Illuminate\Http\Request; |
6 | 8 | ||
7 | class EmployerController extends Controller | 9 | class EmployerController extends Controller |
8 | { | 10 | { |
9 | // | 11 | public function vacancie($vacancy, Request $request) { |
12 | $title = 'Заголовок вакансии'; | ||
13 | |||
14 | $Query = Ad_employer::with('jobs')-> | ||
15 | with('cat')-> | ||
16 | with('employer')-> | ||
17 | with('jobs_code')-> | ||
18 | select('ad_employers.*')-> | ||
19 | where('id', '=', $vacancy)->get(); | ||
20 | |||
21 | $title = $Query[0]->name; | ||
22 | if ($request->ajax()) { | ||
23 | return view('ajax.vacance-item', compact('Query')); | ||
24 | } else { | ||
25 | return view('vacance-item', compact('title', 'Query')); | ||
26 | } | ||
27 | } | ||
10 | } | 28 | } |
11 | 29 |
app/Http/Controllers/MainController.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Http\Controllers; | 3 | namespace App\Http\Controllers; |
4 | 4 | ||
5 | use App\Models\Ad_employer; | ||
5 | use App\Models\Category; | 6 | use App\Models\Category; |
7 | use App\Models\Education; | ||
6 | use App\Models\Employer; | 8 | use App\Models\Employer; |
7 | use App\Models\Job_title; | 9 | use App\Models\Job_title; |
8 | use App\Models\News; | 10 | use App\Models\News; |
9 | use App\Models\reclame; | 11 | use App\Models\reclame; |
10 | use Illuminate\Http\Request; | 12 | use Illuminate\Http\Request; |
11 | 13 | ||
12 | class MainController extends Controller | 14 | class MainController extends Controller |
13 | { | 15 | { |
14 | // Главная страница публичной части | 16 | // Главная страница публичной части |
15 | public function index() { | 17 | public function index() { |
16 | $news = News::query()->orderBy('id')->limit(6)->get(); | 18 | $news = News::query()->orderBy('id')->limit(6)->get(); |
17 | 19 | ||
18 | $categories = Category::query()->selectRaw('count(ad_employers.id) as cnt, categories.*') | 20 | $categories = Category::query()->selectRaw('count(ad_employers.id) as cnt, categories.*') |
19 | ->join('ad_employers', 'ad_employers.category_id', '=', 'categories.id') | 21 | ->join('ad_employers', 'ad_employers.category_id', '=', 'categories.id') |
20 | ->OrderByDesc('created_at') | 22 | ->OrderByDesc('created_at') |
21 | ->GroupBy('categories.id') | 23 | ->GroupBy('categories.id') |
22 | ->get(); | 24 | ->get(); |
23 | 25 | ||
24 | $employers = Employer::query()->orderBy('id')->limit(20)->get(); | 26 | $employers = Employer::query()->orderBy('id')->limit(20)->get(); |
25 | 27 | ||
26 | return view('index', compact('news', 'categories', 'employers')); | 28 | return view('index', compact('news', 'categories', 'employers')); |
27 | } | 29 | } |
28 | 30 | ||
29 | public function vacancies(Request $request) { | 31 | public function vacancies(Request $request) { |
30 | //должности | 32 | //должности |
31 | $Job_title = Job_title::query()->orderBy('name')->get(); | 33 | $Job_title = Job_title::query()->orderBy('name')->get(); |
32 | 34 | ||
33 | $categories = Category::query()->selectRaw('count(ad_employers.id) as cnt, categories.*') | 35 | $categories = Category::query()->selectRaw('count(ad_employers.id) as cnt, categories.*') |
34 | ->selectRaw('min(ad_employers.salary) as min_salary, max(ad_employers.salary) as max_salary') | 36 | ->selectRaw('min(ad_employers.salary) as min_salary, max(ad_employers.salary) as max_salary') |
35 | ->join('ad_employers', 'ad_employers.category_id', '=', 'categories.id') | 37 | ->join('ad_employers', 'ad_employers.category_id', '=', 'categories.id') |
36 | ->join('ad_jobs', 'ad_jobs.ad_employer_id', '=', 'ad_employers.id'); | 38 | ->join('ad_jobs', 'ad_jobs.ad_employer_id', '=', 'ad_employers.id'); |
37 | 39 | ||
38 | //категории и вакансии | 40 | //категории и вакансии |
39 | if ($request->ajax()) { | 41 | if ($request->ajax()) { |
40 | $categories = $categories->Where('job_title_id', '=', $request->get('job')) | 42 | $categories = $categories->Where('job_title_id', '=', $request->get('job')) |
41 | ->OrderByDesc('created_at') | 43 | ->OrderByDesc('created_at') |
42 | ->GroupBy('categories.id') | 44 | ->GroupBy('categories.id') |
43 | ->get(); | 45 | ->get(); |
44 | } else { | 46 | } else { |
45 | $categories = $categories->OrderByDesc('created_at') | 47 | $categories = $categories->OrderByDesc('created_at') |
46 | ->GroupBy('categories.id') | 48 | ->GroupBy('categories.id') |
47 | ->get(); | 49 | ->get(); |
48 | } | 50 | } |
49 | 51 | ||
50 | if ($request->ajax()) { | 52 | if ($request->ajax()) { |
51 | return view('ajax.vacancies', compact('categories')); | 53 | return view('ajax.vacancies', compact('categories')); |
52 | } else { | 54 | } else { |
53 | return view('vacancies', compact('Job_title', 'categories')); | 55 | return view('vacancies', compact('Job_title', 'categories')); |
54 | } | 56 | } |
55 | } | 57 | } |
56 | 58 | ||
57 | //Вакансии категория детальная | 59 | //Вакансии категория детальная |
58 | public function list_vacancies(Request $request) { | 60 | public function list_vacancies(Category $categories, Request $request) { |
59 | $data = $request->all(); | 61 | |
60 | 62 | $Query = Ad_employer::with('jobs')-> | |
61 | if ($data['categories'] == 'all') { | 63 | with('cat')-> |
62 | $Categories_id = 0; | 64 | with('employer')-> |
63 | } else { | 65 | whereHas('jobs_code', function ($query) use ($request) { |
64 | $Categories_id = $data['categories']; | 66 | if ($request->ajax()) { |
67 | if (null !== ($request->get('job'))) { | ||
68 | $query->where('job_title_id', $request->get('job')); | ||
69 | } | ||
70 | } | ||
71 | }) | ||
72 | ->select('ad_employers.*'); | ||
73 | |||
74 | if ($categories->id > 0) { | ||
75 | $Query = $Query->where('category_id', '=', $categories->id); | ||
76 | $Name_categori = Category::query()->where('id', '=', $categories->id)->get(); | ||
65 | } | 77 | } |
66 | 78 | ||
67 | if ($data['job_titles'] == 'all') { | 79 | $Job_title = Job_title::query()->OrderBy('name')->get(); |
68 | $job_titles_id = 0; | ||
69 | } else { | ||
70 | $job_titles_id = $data['job_titles']; | ||
71 | } | ||
72 | 80 | ||
73 | $Query = Employer::with('jobs')->with('cat')->select('employers.*'); | 81 | $Query_count = $Query->count(); |
74 | if ($Categories_id > 0) { | ||
75 | $Query = $Query->where('category_id', '=', $Categories_id); | ||
76 | $Name_categori = Category::query()->where('id', '=', $Categories_id)->get(); | ||
77 | 82 | ||
78 | } | 83 | $Query = $Query->OrderBy('updated_at')->paginate(3); |
84 | |||
85 | $Reclama = reclame::query()->limit(3)->get(); | ||
79 | 86 | ||
80 | if ($job_titles_id > 0) { | 87 | |
81 | $Query = $Query->join('ad_jobs', 'job_title_id', '=', $job_titles_id); | 88 | |
89 | if ($request->ajax()) { | ||
90 | return view('ajax.list_vacancies', compact('Query', 'Query_count', 'Name_categori', 'Reclama', 'categories')); | ||
91 | } else { | ||
92 | //Вернуть все | ||
93 | return view('list_vacancies', compact('Query', | ||
94 | 'Query_count', | ||
95 | 'Reclama', | ||
96 | 'Name_categori', | ||
97 | 'categories', | ||
98 | 'Job_title')); | ||
82 | } | 99 | } |
100 | } | ||
83 | 101 | ||
84 | // Данные | 102 | // Образование |
85 | $Job_title = Job_title::query()->get(); | 103 | public function education(Request $request) { |
86 | $Query = $Query->OrderBy('updated_at')->paginate(15); | 104 | $educations = Education::query(); |
87 | $Reclama = reclame::query()->limit(3)->get(); | 105 | if ($request->has('search')) { |
106 | $search = trim($request->has('search')); | ||
107 | $educations = $educations->where('name', 'LIKE', "%$search%"); | ||
108 | } | ||
109 | $count_edu = $educations->count(); | ||
110 | $educations = $educations->paginate(6); | ||
111 | return view('education', compact('educations', 'count_edu')); | ||
112 | } |
app/Http/Controllers/PagesController.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Http\Controllers; | 3 | namespace App\Http\Controllers; |
4 | 4 | ||
5 | use App\Models\pages; | 5 | use App\Models\pages; |
6 | use Illuminate\Http\Request; | 6 | use Illuminate\Http\Request; |
7 | use Illuminate\Support\Facades\Redis; | 7 | use Illuminate\Support\Facades\Redis; |
8 | use PhpOffice\PhpSpreadsheet\Spreadsheet; | 8 | use PhpOffice\PhpSpreadsheet\Spreadsheet; |
9 | use PhpOffice\PhpSpreadsheet\Writer\Xlsx; | 9 | use PhpOffice\PhpSpreadsheet\Writer\Xlsx; |
10 | 10 | ||
11 | class PagesController extends Controller | 11 | class PagesController extends Controller |
12 | { | 12 | { |
13 | public function pages(pages $pages) { | 13 | public function pages(pages $pages) { |
14 | $page = pages::query()->where('slug', $pages->slug)->first(); | 14 | $page = pages::query()->where('slug', $pages->slug)->first(); |
15 | print_r($page); | 15 | |
16 | return view('pages', compact('page')); | ||
16 | } | 17 | } |
17 | 18 | ||
18 | public function redis() { | 19 | public function redis() { |
19 | $redis = Redis::connection(); | 20 | $redis = Redis::connection(); |
20 | $redis->set('User:CompanyName', 'РЕКАМОРЕ'); | 21 | $redis->set('User:CompanyName', 'РЕКАМОРЕ'); |
21 | $id = 1; | 22 | $id = 1; |
22 | //dd(Redis::get('MyVar')); | 23 | //dd(Redis::get('MyVar')); |
23 | $redis->command('rpush', array("Сообщение1")); | 24 | $redis->command('rpush', array("Сообщение1")); |
24 | $redis->command('rpush', array("Сообщение2")); | 25 | $redis->command('rpush', array("Сообщение2")); |
25 | $values = $redis->command('lrange', array("mylist", 0, 1)); | 26 | $values = $redis->command('lrange', array("mylist", 0, 1)); |
26 | dd($values); | 27 | dd($values); |
27 | 28 | ||
28 | } | 29 | } |
29 | 30 | ||
30 | public function excel() { | 31 | public function excel() { |
31 | $spreadsheet = new Spreadsheet(); | 32 | $spreadsheet = new Spreadsheet(); |
32 | $activeWorksheet = $spreadsheet->getActiveSheet(); | 33 | $activeWorksheet = $spreadsheet->getActiveSheet(); |
33 | $activeWorksheet->setCellValue('A1', 'Hello World !'); | 34 | $activeWorksheet->setCellValue('A1', 'Hello World !'); |
34 | 35 | ||
35 | $writer = new Xlsx($spreadsheet); | 36 | $writer = new Xlsx($spreadsheet); |
36 | $writer->save('hello_world.xlsx'); | 37 | $writer->save('hello_world.xlsx'); |
37 | } | 38 | } |
38 | 39 | ||
39 | public function private_policy() { | 40 | public function private_policy() { |
40 | return view('private_policy'); | 41 | return view('private_policy'); |
41 | } | 42 | } |
42 | 43 | ||
43 | public function terms_of_use() { | 44 | public function terms_of_use() { |
44 | return view('terms_of_use'); | 45 | return view('terms_of_use'); |
45 | } | 46 | } |
46 | } | 47 | } |
47 | 48 |
app/Http/Requests/FlotRequest.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Http\Requests; | ||
4 | |||
5 | use Illuminate\Foundation\Http\FormRequest; | ||
6 | |||
7 | class FlotRequest extends FormRequest | ||
8 | { | ||
9 | /** | ||
10 | * Determine if the user is authorized to make this request. | ||
11 | * | ||
12 | * @return bool | ||
13 | */ | ||
14 | public function authorize() | ||
15 | { | ||
16 | return true; | ||
17 | } | ||
18 | |||
19 | /** | ||
20 | * Get the validation rules that apply to the request. | ||
21 | * | ||
22 | * @return array<string, mixed> | ||
23 | */ | ||
24 | public function rules() | ||
25 | { | ||
26 | return [ | ||
27 | 'name' => 'required|min:3|max:255', | ||
28 | 'text' => 'required|min:5', | ||
29 | 'image' => [ | ||
30 | 'mimes:jpeg,jpg,png', | ||
31 | 'max:20000' | ||
32 | ], | ||
33 | ]; | ||
34 | } | ||
35 | |||
36 | public function messages() { | ||
37 | return [ | ||
38 | 'required' => 'Поле :attribute обязательно для ввода', | ||
39 | 'min' => [ | ||
40 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', | ||
41 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' | ||
42 | ], | ||
43 | 'max' => [ | ||
44 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', | ||
45 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' | ||
46 | ], | ||
47 | 'email' => 'Введите корректный емайл' | ||
48 | |||
49 | ]; | ||
50 | } | ||
51 | } | ||
52 |
app/Http/Requests/PagesRequest.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Http\Requests; | 3 | namespace App\Http\Requests; |
4 | 4 | ||
5 | use Illuminate\Foundation\Http\FormRequest; | 5 | use Illuminate\Foundation\Http\FormRequest; |
6 | 6 | ||
7 | class PagesRequest extends FormRequest | 7 | class PagesRequest extends FormRequest |
8 | { | 8 | { |
9 | /** | 9 | /** |
10 | * Determine if the user is authorized to make this request. | 10 | * Determine if the user is authorized to make this request. |
11 | * | 11 | * |
12 | * @return bool | 12 | * @return bool |
13 | */ | 13 | */ |
14 | public function authorize() | 14 | public function authorize() |
15 | { | 15 | { |
16 | return true; | 16 | return true; |
17 | } | 17 | } |
18 | 18 | ||
19 | /** | 19 | /** |
20 | * Get the validation rules that apply to the request. | 20 | * Get the validation rules that apply to the request. |
21 | * | 21 | * |
22 | * @return array<string, mixed> | 22 | * @return array<string, mixed> |
23 | */ | 23 | */ |
24 | public function rules() | 24 | public function rules() |
25 | { | 25 | { |
26 | $unique = 'unique:pages,slug'; | 26 | $unique = 'unique:pages,slug'; |
27 | if (in_array($this->route()->getName(), ['admin.update-page'])) { | 27 | if (in_array($this->route()->getName(), ['admin.update-page'])) { |
28 | // получаем модель Pages через маршрут admin/editor-pages/edit/{page} | 28 | // получаем модель Pages через маршрут admin/editor-pages/edit/{page} |
29 | $model = $this->route('page'); | 29 | $model = $this->route('page'); |
30 | /* | 30 | /* |
31 | * Проверка на уникальность slug, исключая этот пост по идентификатору: | 31 | * Проверка на уникальность slug, исключая этот пост по идентификатору: |
32 | * 1. posts - таблица базы данных, где проверяется уникальность | 32 | * 1. posts - таблица базы данных, где проверяется уникальность |
33 | * 2. slug - имя колонки, уникальность значения которой проверяется | 33 | * 2. slug - имя колонки, уникальность значения которой проверяется |
34 | * 3. значение по которому из проверки исключается запись таблицы БД | 34 | * 3. значение по которому из проверки исключается запись таблицы БД |
35 | * 4. поле, по которому из проверки исключается запись таблицы БД | 35 | * 4. поле, по которому из проверки исключается запись таблицы БД |
36 | * Для проверки будет использован такой SQL-запрос к базе данных: | 36 | * Для проверки будет использован такой SQL-запрос к базе данных: |
37 | * SELECT COUNT(*) FROM `pages` WHERE `slug` = '...' AND `id` <> 17 | 37 | * SELECT COUNT(*) FROM `pages` WHERE `slug` = '...' AND `id` <> 17 |
38 | */ | 38 | */ |
39 | $unique = 'unique:pages,slug,'.$model->id.',id'; | 39 | $unique = 'unique:pages,slug,'.$model->id.',id'; |
40 | } | 40 | } |
41 | 41 | ||
42 | return [ | 42 | return [ |
43 | 'name' => [ | 43 | 'name' => [ |
44 | 'required', | 44 | 'required', |
45 | 'string', | 45 | 'string', |
46 | 'min:3', | 46 | 'min:3', |
47 | 'max:255', | 47 | 'max:255', |
48 | ], | 48 | ], |
49 | 'slug' => [ | 49 | 'slug' => [ |
50 | 'required', | 50 | 'required', |
51 | 'max:255', | 51 | 'max:255', |
52 | $unique, | 52 | $unique, |
53 | 'regex:~^[-_a-z0-9]+$~i', | 53 | 'regex:~^[-_a-z0-9]+$~i', |
54 | ], | 54 | ], |
55 | 'anons' => [ | 55 | 'anons' => [ |
56 | 'required', | 56 | 'required', |
57 | 'min:500', | 57 | 'min:50', |
58 | ], | 58 | ], |
59 | 'text' => [ | 59 | 'text' => [ |
60 | 'required', | 60 | 'required', |
61 | 'min:500', | 61 | 'min:255', |
62 | ], | 62 | ], |
63 | 'image' => [ | 63 | 'image' => [ |
64 | 'mimes:jpeg,jpg,png', | 64 | 'mimes:jpeg,jpg,png', |
65 | 'max:15000' | 65 | 'max:15000' |
66 | ], | 66 | ], |
67 | ]; | 67 | ]; |
68 | } | 68 | } |
69 | 69 | ||
70 | public function messages() { | 70 | public function messages() { |
71 | return [ | 71 | return [ |
72 | 'required' => 'Поле :attribute обязательно для ввода', | 72 | 'required' => 'Поле :attribute обязательно для ввода', |
73 | 'unique' => 'Поле :attribute должно быть уникальным', | 73 | 'unique' => 'Поле :attribute должно быть уникальным', |
74 | 'mimes' => 'Допускаются файлы только с расширением jpeg,jpg,png', | 74 | 'mimes' => 'Допускаются файлы только с расширением jpeg,jpg,png', |
75 | 'min' => [ | 75 | 'min' => [ |
76 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', | 76 | 'string' => 'Поле «:attribute» должно быть не меньше :min символов', |
77 | 'integer' => 'Поле «:attribute» должно быть :min или больше', | 77 | 'integer' => 'Поле «:attribute» должно быть :min или больше', |
78 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' | 78 | 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' |
79 | ], | 79 | ], |
80 | 80 | ||
81 | 'max' => [ | 81 | 'max' => [ |
82 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', | 82 | 'string' => 'Поле «:attribute» должно быть не больше :max символов', |
83 | 'integer' => 'Поле «:attribute» должно быть :max или меньше', | 83 | 'integer' => 'Поле «:attribute» должно быть :max или меньше', |
84 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' | 84 | 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' |
85 | ], | 85 | ], |
86 | 86 | ||
87 | ]; | 87 | ]; |
88 | } | 88 | } |
89 | } | 89 | } |
90 | 90 |
app/Models/Ad_employer.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Models; | 3 | namespace App\Models; |
4 | 4 | ||
5 | use Illuminate\Database\Eloquent\Factories\HasFactory; | 5 | use Illuminate\Database\Eloquent\Factories\HasFactory; |
6 | use Illuminate\Database\Eloquent\Model; | 6 | use Illuminate\Database\Eloquent\Model; |
7 | 7 | ||
8 | class Ad_employer extends Model | 8 | class Ad_employer extends Model |
9 | { | 9 | { |
10 | use HasFactory; | 10 | use HasFactory; |
11 | 11 | ||
12 | protected $fillable = [ | 12 | protected $fillable = [ |
13 | 'name', | 13 | 'name', |
14 | 'telephone', | 14 | 'telephone', |
15 | 'email', | 15 | 'email', |
16 | 'salary', | 16 | 'salary', |
17 | 'category_id', | 17 | 'category_id', |
18 | 'text', | 18 | 'text', |
19 | 'employer_id', | 19 | 'employer_id', |
20 | 'city', | 20 | 'city', |
21 | 'sort', | 21 | 'sort', |
22 | 'is_remove', | 22 | 'is_remove', |
23 | 'active_is', | 23 | 'active_is', |
24 | 'status', | 24 | 'status', |
25 | 'sroch_vacancy', | 25 | 'sroch_vacancy', |
26 | 'favorite_vacancy' | 26 | 'favorite_vacancy' |
27 | ]; | 27 | ]; |
28 | /* | 28 | /* |
29 | * Связь таблицы employers с таблицей ad_employers | 29 | * Связь таблицы employers с таблицей ad_employers |
30 | многие-к-одному | 30 | многие-к-одному |
31 | */ | 31 | */ |
32 | public function employer() { | 32 | public function employer() { |
33 | return $this->belongsTo(Employer::class, 'employer_id'); | 33 | return $this->belongsTo(Employer::class, 'employer_id'); |
34 | } | 34 | } |
35 | 35 | ||
36 | /* | 36 | /* |
37 | * Связь модели Вакансии (Ad_employer) с моделью Должности (Job_title) | 37 | * Связь модели Вакансии (Ad_employer) с моделью Должности (Job_title) |
38 | многие-ко-многим | 38 | многие-ко-многим |
39 | */ | 39 | */ |
40 | public function jobs() { | 40 | public function jobs() { |
41 | return $this->belongsToMany(Job_title::class, 'ad_jobs'); | 41 | return $this->belongsToMany(Job_title::class, 'ad_jobs'); |
42 | } | 42 | } |
43 | 43 | ||
44 | // Связь модели Вакансии с моделью Коды должностей и вакансий | ||
45 | public function jobs_code() { | ||
46 | return $this->hasMany(Ad_jobs::class); | ||
47 | } | ||
48 | |||
44 | /* | 49 | /* |
45 | * Связь модели Вакансия (Ad_employers) с моделью Отклик на Вакансию (Ad_response) | 50 | * Связь модели Вакансия (Ad_employers) с моделью Отклик на Вакансию (Ad_response) |
46 | один-ко-многим | 51 | один-ко-многим |
47 | */ | 52 | */ |
48 | public function response() { | 53 | public function response() { |
49 | return $this->hasMany(ad_response::class); | 54 | return $this->hasMany(ad_response::class); |
50 | } | 55 | } |
51 | 56 | ||
52 | // Связь модели Категории (Categories) с моделью Вакансии | 57 | // Связь модели Категории (Categories) с моделью Вакансии |
53 | public function cat() { | 58 | public function cat() { |
54 | return $this->hasMany(Category::class, 'categories_id'); | 59 | return $this->hasMany(Category::class, 'id'); |
55 | } | 60 | } |
56 | 61 | ||
57 | public function scopeActive($query) { | 62 | public function scopeActive($query) { |
58 | return $query->where('is_remove', '=', '0'); | 63 | return $query->where('is_remove', '=', '0'); |
59 | } | 64 | } |
65 | |||
66 | // | ||
67 | public function ad_job() { | ||
68 | return $this->hasMany(Ad_jobs::class); | ||
69 | } | ||
60 | } | 70 | } |
61 | 71 |
app/Models/Ad_jobs.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Models; | ||
4 | |||
5 | use Illuminate\Database\Eloquent\Factories\HasFactory; | ||
6 | use Illuminate\Database\Eloquent\Model; | ||
7 | |||
8 | class Ad_jobs extends Model | ||
9 | { | ||
10 | use HasFactory; | ||
11 | |||
12 | protected $table = 'ad_jobs'; | ||
13 | |||
14 | public $fillable = [ | ||
15 | 'ad_employer_id', | ||
16 | 'job_title_id', | ||
17 | 'flot', | ||
18 | 'min_salary', | ||
19 | 'max_salary', | ||
20 | 'region', | ||
21 | 'sytki', | ||
22 | 'start', | ||
23 | 'description' | ||
24 | ]; | ||
25 | |||
26 | public function job_title() { | ||
27 | return $this->belongsTo(Job_title::class, 'job_title_id'); | ||
28 | } | ||
29 | } | ||
30 |
app/Models/Education.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Models; | 3 | namespace App\Models; |
4 | 4 | ||
5 | use Illuminate\Database\Eloquent\Factories\HasFactory; | 5 | use Illuminate\Database\Eloquent\Factories\HasFactory; |
6 | use Illuminate\Database\Eloquent\Model; | 6 | use Illuminate\Database\Eloquent\Model; |
7 | 7 | ||
8 | class Education extends Model | 8 | class Education extends Model |
9 | { | 9 | { |
10 | use HasFactory; | 10 | use HasFactory; |
11 | 11 | ||
12 | protected $fillable = [ | 12 | protected $fillable = [ |
13 | 'name', | 13 | 'name', |
14 | 'is_remove', | 14 | 'is_remove', |
15 | 'address', | 15 | 'address', |
16 | 'telephone', | 16 | 'telephone', |
17 | 'email', | 17 | 'email', |
18 | 'text', | 18 | 'text', |
19 | 'image' | 19 | 'image' |
20 | ]; | 20 | ]; |
21 | 21 | ||
22 | public function scopeActive($query) { | 22 | public function scopeActive($query) { |
23 | return $query->where('is_remove', '=', '0'); | 23 | return $query->where('is_remove', '=', '0'); |
24 | } | 24 | } |
25 | |||
26 | public function program_education() { | ||
27 | return $this->hasMany(ProgramEducation::class); | ||
28 | } | ||
25 | } | 29 | } |
26 | 30 |
app/Models/Employer.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Models; | 3 | namespace App\Models; |
4 | 4 | ||
5 | use Illuminate\Database\Eloquent\Factories\HasFactory; | 5 | use Illuminate\Database\Eloquent\Factories\HasFactory; |
6 | use Illuminate\Database\Eloquent\Model; | 6 | use Illuminate\Database\Eloquent\Model; |
7 | 7 | ||
8 | class Employer extends Model | 8 | class Employer extends Model |
9 | { | 9 | { |
10 | use HasFactory; | 10 | use HasFactory; |
11 | 11 | ||
12 | protected $fillable = [ | 12 | protected $fillable = [ |
13 | 'name_company', | 13 | 'name_company', |
14 | 'email', | 14 | 'email', |
15 | 'telephone', | 15 | 'telephone', |
16 | 'logo', | 16 | 'logo', |
17 | 'rate', | 17 | 'rate', |
18 | 'user_id', | 18 | 'user_id', |
19 | 'sort', | 19 | 'sort', |
20 | 'text', | 20 | 'text', |
21 | 'address', | 21 | 'address', |
22 | 'map', | 22 | 'map', |
23 | 'site', | 23 | 'site', |
24 | 'coord', | 24 | 'coord', |
25 | 'plus', | 25 | 'plus', |
26 | 'is_remove', | 26 | 'is_remove', |
27 | 'oficial_status', | 27 | 'oficial_status', |
28 | 'social_is', | 28 | 'social_is', |
29 | 'sending_is', | 29 | 'sending_is', |
30 | 'category', | 30 | 'category', |
31 | 'comment_admin', | 31 | 'comment_admin', |
32 | 'code', | 32 | 'code', |
33 | 'status_hidden' | 33 | 'status_hidden' |
34 | ]; | 34 | ]; |
35 | 35 | ||
36 | /* | 36 | /* |
37 | * Связь таблицы users с таблицей employers | 37 | * Связь таблицы users с таблицей employers |
38 | */ | 38 | */ |
39 | public function users() { | 39 | public function users() { |
40 | return $this->belongsTo(User::class, 'user_id'); | 40 | return $this->belongsTo(User::class, 'user_id'); |
41 | } | 41 | } |
42 | 42 | ||
43 | /* | 43 | /* |
44 | * Связь Работодателя с вакансиями | 44 | * Связь Работодателя с вакансиями |
45 | */ | 45 | */ |
46 | public function ads() { | 46 | public function ads() { |
47 | return $this->hasMany(Ad_employer::class); | 47 | return $this->hasMany(Ad_employer::class); |
48 | } | 48 | } |
49 | 49 | ||
50 | // связь Работодателя с флотом | ||
51 | public function flots(){ | ||
52 | return $this->hasMany(Flot::class); | ||
53 | } | ||
54 | |||
55 | // связь Работодателя с Должностями в Вакансиях | ||
56 | //public function ad_jobs() { | ||
57 | // return $this->belongsToMany(Ad_jobs::class, 'ad_employers'); | ||
58 | //} | ||
59 | |||
50 | public function scopeActive($query) { | 60 | public function scopeActive($query) { |
51 | return $query->where('is_remove', '=', '0'); | 61 | return $query->where('is_remove', '=', '0'); |
52 | } | 62 | } |
53 | } | 63 | } |
54 | 64 |
app/Models/Flot.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Models; | 3 | namespace App\Models; |
4 | 4 | ||
5 | use Illuminate\Database\Eloquent\Factories\HasFactory; | 5 | use Illuminate\Database\Eloquent\Factories\HasFactory; |
6 | use Illuminate\Database\Eloquent\Model; | 6 | use Illuminate\Database\Eloquent\Model; |
7 | 7 | ||
8 | class Flot extends Model | 8 | class Flot extends Model |
9 | { | 9 | { |
10 | use HasFactory; | 10 | use HasFactory; |
11 | |||
12 | protected $fillable = [ | ||
13 | 'employer_id', | ||
14 | 'name', | ||
15 | 'text', | ||
16 | 'image' | ||
17 | ]; | ||
11 | } | 18 | } |
12 | 19 |
database/migrations/2024_02_08_134941_alter_ad_job_table.php
File was created | 1 | <?php | |
2 | |||
3 | use Illuminate\Database\Migrations\Migration; | ||
4 | use Illuminate\Database\Schema\Blueprint; | ||
5 | use Illuminate\Support\Facades\Schema; | ||
6 | |||
7 | return new class extends Migration | ||
8 | { | ||
9 | /** | ||
10 | * Run the migrations. | ||
11 | * | ||
12 | * @return void | ||
13 | */ | ||
14 | public function up() | ||
15 | { | ||
16 | Schema::table('ad_jobs', function (Blueprint $table) { | ||
17 | $table->integer('min_salary')->default(0); | ||
18 | $table->integer('max_salary')->default(0); | ||
19 | }); | ||
20 | } | ||
21 | |||
22 | /** | ||
23 | * Reverse the migrations. | ||
24 | * | ||
25 | * @return void | ||
26 | */ | ||
27 | public function down() | ||
28 | { | ||
29 | Schema::table('ad_jobs', function (Blueprint $table) { | ||
30 | $table->dropColumn('min_salary'); | ||
31 | $table->dropColumn('max_salary'); | ||
32 | }); | ||
33 | } | ||
34 | }; | ||
35 |
database/migrations/2024_02_08_144854_alter_ad_employer.php
File was created | 1 | <?php | |
2 | |||
3 | use Illuminate\Database\Migrations\Migration; | ||
4 | use Illuminate\Database\Schema\Blueprint; | ||
5 | use Illuminate\Support\Facades\Schema; | ||
6 | |||
7 | return new class extends Migration | ||
8 | { | ||
9 | /** | ||
10 | * Run the migrations. | ||
11 | * | ||
12 | * @return void | ||
13 | */ | ||
14 | public function up() | ||
15 | { | ||
16 | Schema::table('ad_employers', function (Blueprint $table) { | ||
17 | $table->text('description')->nullable(true); | ||
18 | $table->text('contacts_emails')->nullable(true); | ||
19 | $table->text('contacts_telephones')->nullable(true); | ||
20 | }); | ||
21 | } | ||
22 | |||
23 | /** | ||
24 | * Reverse the migrations. | ||
25 | * | ||
26 | * @return void | ||
27 | */ | ||
28 | public function down() | ||
29 | { | ||
30 | Schema::table('ad_employers', function (Blueprint $table) { | ||
31 | $table->dropColumn('description'); | ||
32 | $table->dropColumn('contacts_emails'); | ||
33 | $table->dropColumn('contacts_telephones'); | ||
34 | }); | ||
35 | } | ||
36 | }; | ||
37 |
database/migrations/2024_02_16_062441_alter_table_ad_employers.php
File was created | 1 | <?php | |
2 | |||
3 | use Illuminate\Database\Migrations\Migration; | ||
4 | use Illuminate\Database\Schema\Blueprint; | ||
5 | use Illuminate\Support\Facades\Schema; | ||
6 | |||
7 | return new class extends Migration | ||
8 | { | ||
9 | /** | ||
10 | * Run the migrations. | ||
11 | * | ||
12 | * @return void | ||
13 | */ | ||
14 | public function up() | ||
15 | { | ||
16 | Schema::table('ad_jobs', function (Blueprint $table) { | ||
17 | $table->string('flot', 255)->nullable(true); | ||
18 | $table->string('region', 255)->nullable(true); | ||
19 | $table->integer('sytki')->default(0); | ||
20 | $table->string('start', '255')->nullable(true); | ||
21 | $table->text('description')->nullable(false); | ||
22 | }); | ||
23 | } | ||
24 | |||
25 | /** | ||
26 | * Reverse the migrations. | ||
27 | * | ||
28 | * @return void | ||
29 | */ | ||
30 | public function down() | ||
31 | { | ||
32 | Schema::table('ad_jops', function (Blueprint $table) { | ||
33 | $table->dropColumn('flot'); | ||
34 | $table->dropColumn('region'); | ||
35 | $table->dropColumn('sytki'); | ||
36 | $table->dropColumn('start'); | ||
37 | $table->dropColumn('description'); | ||
38 | }); | ||
39 | } | ||
40 | }; | ||
41 |
database/migrations/2024_02_19_101702_alter_table_flot.php
File was created | 1 | <?php | |
2 | |||
3 | use Illuminate\Database\Migrations\Migration; | ||
4 | use Illuminate\Database\Schema\Blueprint; | ||
5 | use Illuminate\Support\Facades\Schema; | ||
6 | |||
7 | return new class extends Migration | ||
8 | { | ||
9 | /** | ||
10 | * Run the migrations. | ||
11 | * | ||
12 | * @return void | ||
13 | */ | ||
14 | public function up() | ||
15 | { | ||
16 | Schema::table('flots', function (Blueprint $table) { | ||
17 | $table->string('region', 255)->nullable(false); | ||
18 | $table->string('power', 255)->nullable(false); | ||
19 | }); | ||
20 | } | ||
21 | |||
22 | /** | ||
23 | * Reverse the migrations. | ||
24 | * | ||
25 | * @return void | ||
26 | */ | ||
27 | public function down() | ||
28 | { | ||
29 | Schema::table('flots', function (Blueprint $table) { | ||
30 | $table->dropColumn('region'); | ||
31 | $table->dropColumn('power'); | ||
32 | }); | ||
33 | } | ||
34 | }; | ||
35 |
public/images/12.jpg
6.66 KB
public/images/13.jpg
1.38 MB
public/images/14.jpg
1.02 MB
public/images/15.jpg
234 KB
public/images/16.jpg
138 KB
public/images/17.jpg
278 KB
public/images/18.jpg
7.31 KB
public/images/bg-3.svg
File was created | 1 | <svg width="1280" height="698" viewBox="0 0 1280 698" fill="none" xmlns="http://www.w3.org/2000/svg"> | |
2 | <g clip-path="url(#clip0_941_12674)"> | ||
3 | <g opacity="0.4"> | ||
4 | <path d="M1327.92 -322C1181.04 -255.01 1091.59 -135.759 1016.54 -25.1295C988.509 15.7312 952.077 62.654 892.37 76.7468C816.837 94.1272 757.233 46.2576 681.96 52.1345C618.593 56.7266 562.438 96.5472 516.674 133.583C439.067 197.256 367.284 266.038 303.489 335.538C285.478 355.61 267.706 376.57 241.793 392.089C171.09 435.808 74.5124 424.525 0.557344 406.227C-73.3977 387.93 -158.373 365.915 -239.598 395.302C-288.286 413.112 -316.035 475.813 -367.667 486.789C-411.788 496.705 -474.247 483.903 -474.247 483.903C-474.247 483.903 -399.687 762.164 -375.389 852.844C-218.911 829.972 -82.7007 743.927 70.6155 700.94C183.405 668.813 300.635 657.411 415.634 641.843C786.524 592.011 1158.6 500.888 1514.44 374.098L1327.92 -322Z" fill="url(#paint0_linear_941_12674)"/> | ||
5 | <path d="M-350.218 534.27C-323.315 551.544 -280.824 564.642 -233.323 571.501C-218.24 573.755 -202.293 575.078 -181.675 573.051C-121.21 565.944 -69.8281 529.092 -45.1143 500.784C2.40976 445.379 20.6529 392.924 69.391 337.893C118.129 282.862 212.6 219.775 333.664 189.434C464.081 156.587 572.089 173.116 648.922 197.998C725.58 222.227 794.46 254.836 911.429 250.775C932.397 250.053 956.132 247.191 977.254 238.733C1004.26 227.3 1012.19 211.184 1035.56 198.627C1073.46 177.978 1131.69 174.969 1163.76 182.462C1195.84 189.956 1218.41 203.497 1261.73 203.081C1273.86 202.629 1287.89 200.967 1300.01 196.32C1312.13 191.674 1318.18 185.156 1325.62 179.665C1377.17 139.271 1497.02 108.557 1557.19 121.116L1601.43 286.24L-281.14 792.072L-350.218 534.27Z" fill="url(#paint1_linear_941_12674)"/> | ||
6 | <path d="M-350.218 534.27C-323.315 551.544 -280.824 564.642 -233.323 571.501C-218.24 573.755 -202.293 575.078 -181.675 573.051C-121.21 565.944 -69.8281 529.092 -45.1143 500.784C2.40976 445.379 20.6529 392.924 69.391 337.893C118.129 282.862 212.6 219.775 333.664 189.434C464.081 156.587 572.089 173.116 648.922 197.998C725.58 222.227 794.46 254.836 911.429 250.775C932.397 250.053 956.132 247.191 977.254 238.733C1004.26 227.3 1012.19 211.184 1035.56 198.627C1073.46 177.978 1131.69 174.969 1163.76 182.462C1195.84 189.956 1218.41 203.497 1261.73 203.081C1273.86 202.629 1287.89 200.967 1300.01 196.32C1312.13 191.674 1318.18 185.156 1325.62 179.665C1377.17 139.271 1497.02 108.557 1557.19 121.116L1601.43 286.24L-281.14 792.072L-350.218 534.27Z" fill="url(#paint2_linear_941_12674)"/> | ||
7 | <path d="M-261.454 550.3C-235.559 572.17 -210.067 596.69 -153.037 605.982C-96.0077 615.273 -2.0364 608.735 88.5043 581.085C163.679 558.4 222.579 524.824 265.69 494.631C308.801 464.439 344.854 436.985 390.445 403.586C442.458 365.076 507.02 298.632 725.462 270.605C799.872 261.682 856.69 270.182 902.487 279.094C948.073 287.215 984.947 300.212 1037.38 304.805C1114.99 311.971 1225.57 300.98 1339.83 274.602C1453.05 248.503 1567.86 207.572 1651.66 163.086L1800.56 718.783L-81.2049 1223L-261.454 550.3Z" fill="url(#paint3_linear_941_12674)"/> | ||
8 | <path d="M-261.454 550.3C-235.559 572.17 -210.067 596.69 -153.037 605.982C-96.0077 615.273 -2.0364 608.735 88.5043 581.085C163.679 558.4 222.579 524.824 265.69 494.631C308.801 464.439 344.854 436.985 390.445 403.586C442.458 365.076 507.02 298.632 725.462 270.605C799.872 261.682 856.69 270.182 902.487 279.094C948.073 287.215 984.947 300.212 1037.38 304.805C1114.99 311.971 1225.57 300.98 1339.83 274.602C1453.05 248.503 1567.86 207.572 1651.66 163.086L1800.56 718.783L-81.2049 1223L-261.454 550.3Z" fill="url(#paint4_linear_941_12674)"/> | ||
9 | </g> | ||
10 | </g> | ||
11 | <defs> | ||
12 | <linearGradient id="paint0_linear_941_12674" x1="287.797" y1="75.4214" x2="577.75" y2="643.513" gradientUnits="userSpaceOnUse"> | ||
13 | <stop stop-color="#F4F7FC"/> | ||
14 | <stop offset="1" stop-color="#8BA6DB"/> | ||
15 | </linearGradient> | ||
16 | <linearGradient id="paint1_linear_941_12674" x1="551.028" y1="131.273" x2="660.437" y2="539.594" gradientUnits="userSpaceOnUse"> | ||
17 | <stop offset="0.211458" stop-color="#A5D5DD"/> | ||
18 | <stop offset="1" stop-color="#0E5C69"/> | ||
19 | </linearGradient> | ||
20 | <linearGradient id="paint2_linear_941_12674" x1="551.015" y1="131.226" x2="611.559" y2="357.18" gradientUnits="userSpaceOnUse"> | ||
21 | <stop stop-color="#E7EDF9"/> | ||
22 | <stop offset="1" stop-color="#C5D1E8"/> | ||
23 | </linearGradient> | ||
24 | <linearGradient id="paint3_linear_941_12674" x1="673.406" y1="275.068" x2="776.518" y2="659.888" gradientUnits="userSpaceOnUse"> | ||
25 | <stop stop-color="#E7EDF9"/> | ||
26 | <stop offset="1" stop-color="#C5D1E8"/> | ||
27 | </linearGradient> | ||
28 | <linearGradient id="paint4_linear_941_12674" x1="673.427" y1="275.147" x2="859.762" y2="970.558" gradientUnits="userSpaceOnUse"> | ||
29 | <stop offset="0.211458" stop-color="#A5D5DD"/> | ||
30 | <stop offset="1" stop-color="#0E5C69"/> | ||
31 | </linearGradient> | ||
32 | <clipPath id="clip0_941_12674"> | ||
33 | <rect width="1280" height="698" fill="white"/> | ||
34 | </clipPath> | ||
35 | </defs> | ||
36 | </svg> | ||
37 |
public/images/bg-4.svg
File was created | 1 | <svg width="706" height="448" viewBox="0 0 706 448" fill="none" xmlns="http://www.w3.org/2000/svg"> | |
2 | <g opacity="0.4"> | ||
3 | <path d="M1237.01 -83C1140.52 -38.9899 1081.75 39.354 1032.45 112.034C1014.03 138.878 990.098 169.704 950.873 178.963C901.25 190.381 862.093 158.933 812.64 162.794C771.01 165.81 734.119 191.971 704.054 216.303C653.068 258.134 605.909 303.321 563.998 348.98C552.166 362.166 540.49 375.937 523.466 386.132C477.017 414.854 413.568 407.441 364.982 395.42C316.396 383.4 260.571 368.937 207.208 388.243C175.222 399.944 156.992 441.136 123.071 448.347C94.0856 454.861 53.0522 446.451 53.0522 446.451C53.0522 446.451 102.036 629.259 117.998 688.832C220.799 673.806 310.285 617.278 411.008 589.037C485.107 567.93 562.123 560.44 637.673 550.212C881.336 517.474 1125.78 457.61 1359.55 374.313L1237.01 -83Z" fill="url(#paint0_linear_941_15331)"/> | ||
4 | <path d="M134.534 505.818C152.209 517.167 180.124 525.772 211.33 530.278C221.239 531.759 231.716 532.628 245.261 531.297C284.985 526.627 318.741 502.417 334.977 483.82C366.199 447.421 378.184 412.959 410.203 376.806C442.222 340.652 504.286 299.206 583.822 279.273C669.501 257.694 740.458 268.553 790.935 284.899C841.297 300.817 886.548 322.24 963.393 319.572C977.168 319.098 992.762 317.218 1006.64 311.661C1024.38 304.15 1029.59 293.562 1044.94 285.313C1069.84 271.747 1108.09 269.77 1129.17 274.693C1150.24 279.616 1165.07 288.512 1193.53 288.239C1201.5 287.942 1210.72 286.85 1218.68 283.797C1226.64 280.745 1230.62 276.463 1235.5 272.855C1269.37 246.318 1348.11 226.139 1387.63 234.39L1416.7 342.871L179.916 675.186L134.534 505.818Z" fill="url(#paint1_linear_941_15331)"/> | ||
5 | <path d="M192.849 536.059C209.861 550.427 226.609 566.536 264.075 572.64C301.542 578.744 363.278 574.449 422.76 556.284C472.147 541.38 510.843 519.322 539.165 499.487C567.487 479.651 591.173 461.615 621.124 439.673C655.295 414.373 697.711 370.722 841.219 352.309C890.104 346.446 927.432 352.031 957.519 357.886C987.467 363.221 1011.69 371.76 1046.14 374.777C1097.12 379.485 1169.78 372.265 1244.84 354.935C1319.22 337.788 1394.64 310.898 1449.7 281.673L1547.52 646.747L311.267 978L192.849 536.059Z" fill="url(#paint2_linear_941_15331)"/> | ||
6 | </g> | ||
7 | <defs> | ||
8 | <linearGradient id="paint0_linear_941_15331" x1="553.689" y1="178.092" x2="744.178" y2="551.309" gradientUnits="userSpaceOnUse"> | ||
9 | <stop stop-color="#F4F7FC"/> | ||
10 | <stop offset="1" stop-color="#8BA6DB"/> | ||
11 | </linearGradient> | ||
12 | <linearGradient id="paint1_linear_941_15331" x1="726.622" y1="241.063" x2="798.5" y2="509.317" gradientUnits="userSpaceOnUse"> | ||
13 | <stop offset="0.211458" stop-color="#A5D5DD"/> | ||
14 | <stop offset="1" stop-color="#0E5C69"/> | ||
15 | </linearGradient> | ||
16 | <linearGradient id="paint2_linear_941_15331" x1="807.02" y1="355.241" x2="874.761" y2="608.055" gradientUnits="userSpaceOnUse"> | ||
17 | <stop stop-color="#E7EDF9"/> | ||
18 | <stop offset="1" stop-color="#C5D1E8"/> | ||
19 | </linearGradient> | ||
20 | </defs> | ||
21 | </svg> | ||
22 |
public/images/catpcha.jpg
12.3 KB
public/images/education.jpg
49.1 KB
public/images/stars.svg
File was created | 1 | <svg width="166" height="30" viewBox="0 0 166 30" fill="none" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M12.6804 8.28454C13.6637 5.83329 14.1553 4.60767 15.0007 4.60767C15.8461 4.60767 16.3378 5.83329 17.321 8.28454L17.3668 8.39868C17.9223 9.78352 18.2 10.4759 18.7661 10.8968C19.3322 11.3177 20.0752 11.3842 21.5614 11.5173L21.8301 11.5414C24.2623 11.7592 25.4785 11.8681 25.7387 12.6418C25.9989 13.4156 25.0957 14.2372 23.2894 15.8806L22.6866 16.4291C21.7722 17.261 21.315 17.6769 21.1019 18.2221C21.0622 18.3238 21.0291 18.428 21.003 18.534C20.8629 19.1023 20.9968 19.7057 21.2646 20.9125L21.3479 21.2882C21.84 23.5061 22.0861 24.6151 21.6565 25.0934C21.4959 25.2722 21.2873 25.4008 21.0555 25.4641C20.4353 25.6333 19.5547 24.9158 17.7935 23.4807C16.637 22.5383 16.0588 22.0671 15.3949 21.9611C15.1338 21.9194 14.8677 21.9194 14.6065 21.9611C13.9427 22.0671 13.3644 22.5383 12.208 23.4807C10.4468 24.9158 9.56618 25.6333 8.94593 25.4641C8.71416 25.4008 8.50552 25.2722 8.34499 25.0934C7.9154 24.6151 8.16144 23.5061 8.65353 21.2882L8.73688 20.9125C9.00464 19.7057 9.13852 19.1023 8.99845 18.534C8.97232 18.428 8.93928 18.3238 8.89953 18.2221C8.68644 17.6769 8.22924 17.261 7.31486 16.4291L6.71201 15.8806C4.90571 14.2372 4.00255 13.4156 4.26278 12.6418C4.523 11.8681 5.73913 11.7592 8.1714 11.5414L8.44007 11.5173C9.92622 11.3842 10.6693 11.3177 11.2354 10.8968C11.8014 10.4759 12.0792 9.78352 12.6347 8.39868L12.6804 8.28454Z" fill="#4D88D9" stroke="#4D88D9" stroke-width="1.4"/> | ||
3 | <path d="M46.6804 8.28454C47.6637 5.83329 48.1553 4.60767 49.0007 4.60767C49.8461 4.60767 50.3378 5.83329 51.321 8.28454L51.3668 8.39868C51.9223 9.78352 52.2 10.4759 52.7661 10.8968C53.3322 11.3177 54.0752 11.3842 55.5614 11.5173L55.8301 11.5414C58.2623 11.7592 59.4785 11.8681 59.7387 12.6418C59.9989 13.4156 59.0957 14.2372 57.2894 15.8806L56.6866 16.4291C55.7722 17.261 55.315 17.6769 55.1019 18.2221C55.0622 18.3238 55.0291 18.428 55.003 18.534C54.8629 19.1023 54.9968 19.7057 55.2646 20.9125L55.3479 21.2882C55.84 23.5061 56.0861 24.6151 55.6565 25.0934C55.4959 25.2722 55.2873 25.4008 55.0555 25.4641C54.4353 25.6333 53.5547 24.9158 51.7935 23.4807C50.637 22.5383 50.0588 22.0671 49.3949 21.9611C49.1338 21.9194 48.8677 21.9194 48.6065 21.9611C47.9427 22.0671 47.3644 22.5383 46.208 23.4807C44.4468 24.9158 43.5662 25.6333 42.9459 25.4641C42.7142 25.4008 42.5055 25.2722 42.345 25.0934C41.9154 24.6151 42.1614 23.5061 42.6535 21.2882L42.7369 20.9125C43.0046 19.7057 43.1385 19.1023 42.9985 18.534C42.9723 18.428 42.9393 18.3238 42.8995 18.2221C42.6864 17.6769 42.2292 17.261 41.3149 16.4291L40.712 15.8806C38.9057 14.2372 38.0026 13.4156 38.2628 12.6418C38.523 11.8681 39.7391 11.7592 42.1714 11.5414L42.4401 11.5173C43.9262 11.3842 44.6693 11.3177 45.2354 10.8968C45.8014 10.4759 46.0792 9.78352 46.6347 8.39868L46.6804 8.28454Z" fill="#4D88D9" stroke="#4D88D9" stroke-width="1.4"/> | ||
4 | <path d="M80.6804 8.28454C81.6637 5.83329 82.1553 4.60767 83.0007 4.60767C83.8461 4.60767 84.3378 5.83329 85.321 8.28454L85.3668 8.39868C85.9223 9.78352 86.2 10.4759 86.7661 10.8968C87.3322 11.3177 88.0752 11.3842 89.5614 11.5173L89.8301 11.5414C92.2623 11.7592 93.4785 11.8681 93.7387 12.6418C93.9989 13.4156 93.0957 14.2372 91.2894 15.8806L90.6866 16.4291C89.7722 17.261 89.315 17.6769 89.1019 18.2221C89.0622 18.3238 89.0291 18.428 89.003 18.534C88.8629 19.1023 88.9968 19.7057 89.2646 20.9125L89.3479 21.2882C89.84 23.5061 90.0861 24.6151 89.6565 25.0934C89.4959 25.2722 89.2873 25.4008 89.0555 25.4641C88.4353 25.6333 87.5547 24.9158 85.7935 23.4807C84.637 22.5383 84.0588 22.0671 83.3949 21.9611C83.1338 21.9194 82.8677 21.9194 82.6065 21.9611C81.9427 22.0671 81.3644 22.5383 80.208 23.4807C78.4468 24.9158 77.5662 25.6333 76.9459 25.4641C76.7142 25.4008 76.5055 25.2722 76.345 25.0934C75.9154 24.6151 76.1614 23.5061 76.6535 21.2882L76.7369 20.9125C77.0046 19.7057 77.1385 19.1023 76.9985 18.534C76.9723 18.428 76.9393 18.3238 76.8995 18.2221C76.6864 17.6769 76.2292 17.261 75.3149 16.4291L74.712 15.8806C72.9057 14.2372 72.0026 13.4156 72.2628 12.6418C72.523 11.8681 73.7391 11.7592 76.1714 11.5414L76.4401 11.5173C77.9262 11.3842 78.6693 11.3177 79.2354 10.8968C79.8014 10.4759 80.0792 9.78352 80.6347 8.39868L80.6804 8.28454Z" fill="#4D88D9" stroke="#4D88D9" stroke-width="1.4"/> | ||
5 | <path d="M114.68 8.28454C115.664 5.83329 116.155 4.60767 117.001 4.60767C117.846 4.60767 118.338 5.83329 119.321 8.28454L119.367 8.39868C119.922 9.78352 120.2 10.4759 120.766 10.8968C121.332 11.3177 122.075 11.3842 123.561 11.5173L123.83 11.5414C126.262 11.7592 127.478 11.8681 127.739 12.6418C127.999 13.4156 127.096 14.2372 125.289 15.8806L124.687 16.4291C123.772 17.261 123.315 17.6769 123.102 18.2221C123.062 18.3238 123.029 18.428 123.003 18.534C122.863 19.1023 122.997 19.7057 123.265 20.9125L123.348 21.2882C123.84 23.5061 124.086 24.6151 123.656 25.0934C123.496 25.2722 123.287 25.4008 123.056 25.4641C122.435 25.6333 121.555 24.9158 119.793 23.4807C118.637 22.5383 118.059 22.0671 117.395 21.9611C117.134 21.9194 116.868 21.9194 116.607 21.9611C115.943 22.0671 115.364 22.5383 114.208 23.4807C112.447 24.9158 111.566 25.6333 110.946 25.4641C110.714 25.4008 110.506 25.2722 110.345 25.0934C109.915 24.6151 110.161 23.5061 110.654 21.2882L110.737 20.9125C111.005 19.7057 111.139 19.1023 110.998 18.534C110.972 18.428 110.939 18.3238 110.9 18.2221C110.686 17.6769 110.229 17.261 109.315 16.4291L108.712 15.8806C106.906 14.2372 106.003 13.4156 106.263 12.6418C106.523 11.8681 107.739 11.7592 110.171 11.5414L110.44 11.5173C111.926 11.3842 112.669 11.3177 113.235 10.8968C113.801 10.4759 114.079 9.78352 114.635 8.39868L114.68 8.28454Z" fill="#4D88D9" stroke="#4D88D9" stroke-width="1.4"/> | ||
6 | <path d="M148.68 8.28454C149.664 5.83329 150.155 4.60767 151.001 4.60767C151.846 4.60767 152.338 5.83329 153.321 8.28454L153.367 8.39868C153.922 9.78352 154.2 10.4759 154.766 10.8968C155.332 11.3177 156.075 11.3842 157.561 11.5173L157.83 11.5414C160.262 11.7592 161.478 11.8681 161.739 12.6418C161.999 13.4156 161.096 14.2372 159.289 15.8806L158.687 16.4291C157.772 17.261 157.315 17.6769 157.102 18.2221C157.062 18.3238 157.029 18.428 157.003 18.534C156.863 19.1023 156.997 19.7057 157.265 20.9125L157.348 21.2882C157.84 23.5061 158.086 24.6151 157.656 25.0934C157.496 25.2722 157.287 25.4008 157.056 25.4641C156.435 25.6333 155.555 24.9158 153.793 23.4807C152.637 22.5383 152.059 22.0671 151.395 21.9611C151.134 21.9194 150.868 21.9194 150.607 21.9611C149.943 22.0671 149.364 22.5383 148.208 23.4807C146.447 24.9158 145.566 25.6333 144.946 25.4641C144.714 25.4008 144.506 25.2722 144.345 25.0934C143.915 24.6151 144.161 23.5061 144.654 21.2882L144.737 20.9125C145.005 19.7057 145.139 19.1023 144.998 18.534C144.972 18.428 144.939 18.3238 144.9 18.2221C144.686 17.6769 144.229 17.261 143.315 16.4291L142.712 15.8806C140.906 14.2372 140.003 13.4156 140.263 12.6418C140.523 11.8681 141.739 11.7592 144.171 11.5414L144.44 11.5173C145.926 11.3842 146.669 11.3177 147.235 10.8968C147.801 10.4759 148.079 9.78352 148.635 8.39868L148.68 8.28454Z" stroke="#4D88D9" stroke-width="1.4"/> | ||
7 | </svg> | ||
8 |
public/images/svg/1.svg
File was created | 1 | <svg width="48" height="28" viewBox="0 0 48 28" fill="none" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path fill-rule="evenodd" clip-rule="evenodd" d="M46.9 1.896C47.232 0.804 46.9 0 45.31 0H40.06C38.724 0 38.108 0.694 37.774 1.46C37.774 1.46 35.104 7.852 31.322 12.004C30.098 13.208 29.542 13.59 28.874 13.59C28.54 13.59 28.038 13.208 28.038 12.114V1.896C28.038 0.584 27.67 0 26.558 0H18.302C17.468 0 16.966 0.608 16.966 1.186C16.966 2.428 18.858 2.716 19.052 6.212V13.808C19.052 15.474 18.746 15.776 18.078 15.776C16.298 15.776 11.968 9.354 9.398 2.006C8.9 0.576 8.396 0 7.054 0H1.8C0.3 0 0 0.694 0 1.46C0 2.824 1.78 9.6 8.29 18.562C12.63 24.682 18.74 28 24.306 28C27.644 28 28.056 27.264 28.056 25.994V21.368C28.056 19.894 28.372 19.6 29.43 19.6C30.21 19.6 31.544 19.984 34.66 22.934C38.22 26.432 38.806 28 40.81 28H46.06C47.56 28 48.312 27.264 47.88 25.808C47.404 24.36 45.704 22.258 43.45 19.764C42.226 18.344 40.39 16.814 39.832 16.048C39.054 15.066 39.276 14.628 39.832 13.754C39.832 13.754 46.232 4.902 46.898 1.896H46.9Z" fill="#377D87"/> | ||
3 | </svg> | ||
4 |
public/images/svg/2.svg
File was created | 1 | <svg width="41" height="35" viewBox="0 0 41 35" fill="none" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path fill-rule="evenodd" clip-rule="evenodd" d="M36.5533 0.85993C37.0475 0.651912 37.5885 0.580168 38.1199 0.652165C38.6513 0.724161 39.1536 0.937267 39.5747 1.2693C39.9958 1.60133 40.3201 2.04016 40.514 2.5401C40.708 3.04003 40.7643 3.58281 40.6773 4.11193L36.1413 31.6259C35.7013 34.2799 32.7893 35.8019 30.3553 34.4799C28.3193 33.3739 25.2953 31.6699 22.5753 29.8919C21.2153 29.0019 17.0493 26.1519 17.5613 24.1239C18.0013 22.3899 25.0013 15.8739 29.0013 11.9999C30.5713 10.4779 29.8553 9.59993 28.0013 10.9999C23.3953 14.4759 16.0053 19.7619 13.5613 21.2499C11.4053 22.5619 10.2813 22.7859 8.93731 22.5619C6.48531 22.1539 4.21131 21.5219 2.35531 20.7519C-0.152693 19.7119 -0.0306929 16.2639 2.35331 15.2599L36.5533 0.85993Z" fill="#377D87"/> | ||
3 | </svg> | ||
4 |
public/images/svg/3.svg
File was created | 1 | <svg width="50" height="54" viewBox="0 0 50 54" fill="none" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M5.66732 10.0832C5.66732 10.0783 5.66007 10.0373 5.7519 9.88742C5.85582 9.71826 6.06607 9.46692 6.45515 9.16C7.25265 8.53167 8.55765 7.85742 10.3847 7.25084C14.0145 6.03767 19.1813 5.24984 25.0006 5.24984C30.82 5.24984 35.9868 6.04009 39.6166 7.24842C41.4436 7.85742 42.7486 8.52925 43.5461 9.15759C43.9376 9.46692 44.1455 9.71826 44.247 9.88742C44.3437 10.0397 44.334 10.0808 44.334 10.0832C44.334 10.0904 44.3412 10.1315 44.2494 10.2789C44.1455 10.4481 43.9352 10.6994 43.5461 11.0063C42.7486 11.6347 41.4436 12.3089 39.6166 12.9155C35.9868 14.1287 30.82 14.9165 25.0006 14.9165C19.1813 14.9165 14.0145 14.1263 10.3847 12.9179C8.55765 12.3089 7.25265 11.6371 6.45515 11.0088C6.18174 10.8071 5.94472 10.5603 5.75432 10.2789C5.66007 10.1339 5.66732 10.0904 5.66732 10.0832ZM44.334 16.1901V26.9998C44.334 27.0023 44.334 27.0143 44.3267 27.0361C44.3078 27.0923 44.2818 27.1459 44.2494 27.1956C44.1455 27.3648 43.9352 27.6161 43.5461 27.923C42.7486 28.5513 41.4436 29.2256 39.6166 29.8322C35.9868 31.0429 30.82 31.8332 25.0006 31.8332C19.1813 31.8332 14.0145 31.0429 10.3847 29.8346C8.55765 29.2256 7.25265 28.5538 6.45515 27.9254C6.1817 27.7238 5.94469 27.477 5.75432 27.1956C5.72116 27.146 5.69437 27.0924 5.67457 27.0361C5.67053 27.0244 5.66809 27.0122 5.66732 26.9998V16.1901C6.69658 16.7061 7.76286 17.1448 8.85732 17.5023C13.0986 18.9161 18.8067 19.7498 25.0006 19.7498C31.1946 19.7498 36.9027 18.9161 41.144 17.5023C42.2386 17.1452 43.3049 16.7066 44.334 16.1901ZM44.334 33.1068V43.9165L44.3267 43.9528C44.3078 44.009 44.2818 44.0625 44.2494 44.1123C44.1455 44.2814 43.9352 44.5328 43.5461 44.8397C42.7486 45.468 41.4436 46.1423 39.6166 46.7488C35.9868 47.9596 30.82 48.7498 25.0006 48.7498C19.1813 48.7498 14.0145 47.9596 10.3847 46.7513C8.55765 46.1423 7.25265 45.4704 6.45515 44.8421C6.1817 44.6405 5.94469 44.3936 5.75432 44.1123C5.72116 44.0626 5.69437 44.009 5.67457 43.9528L5.66732 43.9165V33.1068C6.69635 33.6233 7.76268 34.0619 8.85732 34.419C13.0986 35.8328 18.8067 36.6665 25.0006 36.6665C31.1946 36.6665 36.9027 35.8328 41.144 34.419C42.2386 34.0619 43.3049 33.6233 44.334 33.1068ZM0.833984 43.9165C0.833984 45.9755 2.08823 47.5512 3.46332 48.6363C4.8674 49.7431 6.74998 50.6324 8.85732 51.3357C13.0986 52.7494 18.8067 53.5832 25.0006 53.5832C31.1946 53.5832 36.9027 52.7494 41.144 51.3357C43.2537 50.6348 45.1339 49.7407 46.538 48.6363C47.9155 47.5512 49.1673 45.9755 49.1673 43.9165V10.0832C49.1673 8.02417 47.9131 6.4485 46.538 5.36342C45.1339 4.25659 43.2513 3.36725 41.144 2.664C36.9027 1.25025 31.1946 0.416504 25.0006 0.416504C18.8067 0.416504 13.0986 1.25025 8.85732 2.664C6.74757 3.36484 4.8674 4.259 3.46332 5.36342C2.08582 6.4485 0.833984 8.02417 0.833984 10.0832V43.9165Z" fill="#377D87"/> | ||
3 | </svg> | ||
4 |
public/images/svg/4.svg
File was created | 1 | <svg width="62" height="50" viewBox="0 0 62 50" fill="none" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M31 0.25L0.75 16.75L11.75 22.745V39.245L31 49.75L50.25 39.245V22.745L55.75 19.7475V38.75H61.25V16.75L31 0.25ZM49.755 16.75L31 26.98L12.245 16.75L31 6.52L49.755 16.75ZM44.75 36L31 43.48L17.25 36V25.7425L31 33.25L44.75 25.7425V36Z" fill="#377D87"/> | ||
3 | </svg> | ||
4 |
public/images/svg/5.svg
File was created | 1 | <svg width="54" height="32" viewBox="0 0 54 32" fill="none" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M2.25 10.4998C9.07825 10.4998 14.1987 2.24976 14.1987 2.24976C14.1987 2.24976 19.3192 10.4998 26.1475 10.4998C32.973 10.4998 39.8013 2.24976 39.8013 2.24976C39.8013 2.24976 46.6295 10.4998 51.75 10.4998M2.25 29.7498C9.07825 29.7498 14.1987 21.4998 14.1987 21.4998C14.1987 21.4998 19.3192 29.7498 26.1475 29.7498C32.973 29.7498 39.8013 21.4998 39.8013 21.4998C39.8013 21.4998 46.6295 29.7498 51.75 29.7498" stroke="#377D87" stroke-width="4.125" stroke-linecap="round" stroke-linejoin="round"/> | ||
3 | </svg> | ||
4 |
public/images/svg/6.svg
File was created | 1 | <svg width="54" height="60" viewBox="0 0 54 60" fill="none" xmlns="http://www.w3.org/2000/svg"> | |
2 | <path d="M2.25 24.5C2.25 14.1298 2.25 8.94325 5.473 5.723C8.69325 2.5 13.8798 2.5 24.25 2.5H29.75C40.1202 2.5 45.3067 2.5 48.527 5.723C51.75 8.94325 51.75 14.1298 51.75 24.5V35.5C51.75 45.8702 51.75 51.0567 48.527 54.277C45.3067 57.5 40.1202 57.5 29.75 57.5H24.25C13.8798 57.5 8.69325 57.5 5.473 54.277C2.25 51.0567 2.25 45.8702 2.25 35.5V24.5Z" stroke="#377D87" stroke-width="4.125"/> | ||
3 | <path d="M16 24.5H38M16 35.5H29.75" stroke="#377D87" stroke-width="4.125" stroke-linecap="round"/> | ||
4 | </svg> | ||
5 |
public/images/wysiwyg.jpg
22.1 KB
resources/views/admin/ad_employers/index.blade.php
1 | @extends('layout.admin', ['title' => 'Админка - Вакансии']) | 1 | @extends('layout.admin', ['title' => 'Админка - Вакансии']) |
2 | 2 | ||
3 | @section('script') | 3 | @section('script') |
4 | <script> | 4 | <script> |
5 | $(document).ready(function() { | 5 | $(document).ready(function() { |
6 | $(document).on('click', '#refresh_btn', function () { | 6 | $(document).on('click', '#refresh_btn', function () { |
7 | var this_ = $(this); | 7 | var this_ = $(this); |
8 | var ajax_block = $('#ajax_block'); | 8 | var ajax_block = $('#ajax_block'); |
9 | var mas = []; | 9 | var mas = []; |
10 | var str_get = ''; | 10 | var str_get = ''; |
11 | 11 | ||
12 | $('input:checkbox:checked').each(function(){ | 12 | $('input:checkbox:checked').each(function(){ |
13 | mas.push($(this).val()); | 13 | mas.push($(this).val()); |
14 | console.log($(this).val()); | 14 | console.log($(this).val()); |
15 | }); | 15 | }); |
16 | 16 | ||
17 | $.ajax({ | 17 | $.ajax({ |
18 | type: "GET", | 18 | type: "GET", |
19 | dataType: 'html', | 19 | dataType: 'html', |
20 | url: "{{ url()->full()}}", | 20 | url: "{{ url()->full()}}", |
21 | data: ({data:mas}), | 21 | data: ({data:mas}), |
22 | success: function (data) { | 22 | success: function (data) { |
23 | console.log('Обновление таблицы пользователей '); | 23 | console.log('Обновление таблицы пользователей '); |
24 | //data = JSON.parse(data); | 24 | //data = JSON.parse(data); |
25 | //console.log(data); | 25 | //console.log(data); |
26 | ajax_block.html(data); | 26 | ajax_block.html(data); |
27 | }, | 27 | }, |
28 | headers: { | 28 | headers: { |
29 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | 29 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') |
30 | }, | 30 | }, |
31 | error: function (data) { | 31 | error: function (data) { |
32 | console.log('Error: ' + data); | 32 | console.log('Error: ' + data); |
33 | } | 33 | } |
34 | }); | 34 | }); |
35 | }); | 35 | }); |
36 | }); | 36 | }); |
37 | </script> | 37 | </script> |
38 | @endsection | 38 | @endsection |
39 | 39 | ||
40 | @section('search') | 40 | @section('search') |
41 | @include('admin.find_ad_employer', ['select_job' => $select_job]) | 41 | @include('admin.find_ad_employer', ['select_job' => $select_job]) |
42 | @endsection | 42 | @endsection |
43 | 43 | ||
44 | @section('content') | 44 | @section('content') |
45 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> | 45 | <div class="grid gap-6 mb-8 md:grid-cols-2 xl:grid-cols-4"> |
46 | 46 | ||
47 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> | 47 | <div class="flex items-center p-4 bg-white rounded-lg shadow-xs dark:bg-gray-800"> |
48 | <div class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500"> | 48 | <div class="p-3 mr-4 text-orange-500 bg-orange-100 rounded-full dark:text-orange-100 dark:bg-orange-500"> |
49 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> | 49 | <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20"> |
50 | <path | 50 | <path |
51 | d="M13 6a3 3 0 11-6 0 3 3 0 016 0zM18 8a2 2 0 11-4 0 2 2 0 014 0zM14 15a4 4 0 00-8 0v3h8v-3zM6 8a2 2 0 11-4 0 2 2 0 014 0zM16 18v-3a5.972 5.972 0 00-.75-2.906A3.005 3.005 0 0119 15v3h-3zM4.75 12.094A5.973 5.973 0 004 15v3H1v-3a3 3 0 013.75-2.906z"></path> | 51 | d="M13 6a3 3 0 11-6 0 3 3 0 016 0zM18 8a2 2 0 11-4 0 2 2 0 014 0zM14 15a4 4 0 00-8 0v3h8v-3zM6 8a2 2 0 11-4 0 2 2 0 014 0zM16 18v-3a5.972 5.972 0 00-.75-2.906A3.005 3.005 0 0119 15v3h-3zM4.75 12.094A5.973 5.973 0 004 15v3H1v-3a3 3 0 013.75-2.906z"></path> |
52 | </svg> | 52 | </svg> |
53 | </div> | 53 | </div> |
54 | <div> | 54 | <div> |
55 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> | 55 | <p class="mb-2 text-sm font-medium text-gray-600 dark:text-gray-400"> |
56 | Всего вакансий | 56 | Всего вакансий |
57 | </p> | 57 | </p> |
58 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> | 58 | <p class="text-lg font-semibold text-gray-700 dark:text-gray-200"> |
59 | {{ $all_ad }} | 59 | {{ $all_ad }} |
60 | </p> | 60 | </p> |
61 | </div> | 61 | </div> |
62 | </div> | 62 | </div> |
63 | </div> | 63 | </div> |
64 | 64 | ||
65 | <div> | 65 | <div> |
66 | <button style="margin-bottom: 10px; width:165px; display: inline-block;" id="refresh_btn" name="refresh_btn" class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"> | 66 | <button style="margin-bottom: 10px; width:165px; display: inline-block;" id="refresh_btn" name="refresh_btn" class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"> |
67 | Обновить вакансии | 67 | Обновить вакансии |
68 | </button> | 68 | </button> |
69 | <a href="{{ route('admin.add-ad-employers') }}" style="margin-bottom: 10px; width:310px; display: inline-block;" class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"> | 69 | <a href="{{ route('admin.add-ad-employers') }}" style="margin-bottom: 10px; width:310px; display: inline-block;" class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"> |
70 | Добавить вакансии от администратора | 70 | Добавить вакансии от администратора |
71 | </a> | 71 | </a> |
72 | </div> | 72 | </div> |
73 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> | 73 | <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> |
74 | <div class="w-full overflow-x-auto"> | 74 | <div class="w-full overflow-x-auto"> |
75 | <table class="w-full whitespace-no-wrap"> | 75 | <table class="w-full whitespace-no-wrap"> |
76 | <thead> | 76 | <thead> |
77 | <tr | 77 | <tr |
78 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" | 78 | class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800" |
79 | > | 79 | > |
80 | <th class="px-4 py-3"></th> | 80 | <th class="px-4 py-3"></th> |
81 | <th class="px-4 py-3 class1">№</th> | 81 | <th class="px-4 py-3 class1">№</th> |
82 | <th class="px-4 py-3 class2">Лого/Заголовок/Компания</th> | 82 | <th class="px-4 py-3 class2">Лого/Заголовок/Компания</th> |
83 | <th class="px-4 py-3 class4">Должности</th> | 83 | <th class="px-4 py-3 class4">Должности</th> |
84 | <th class="px-4 py-3 class5">Избр.</th> | 84 | <th class="px-4 py-3 class5">Избр.</th> |
85 | <th class="px-4 py-3 class6">Сроч.</th> | 85 | <th class="px-4 py-3 class6">Сроч.</th> |
86 | <th class="px-4 py-3 class7">Статус</th> | 86 | <th class="px-4 py-3 class7">Статус</th> |
87 | <th class="px-4 py-3 class8">Дата создан/<br>изменен.</th> | 87 | <th class="px-4 py-3 class8">Дата создан/<br>изменен.</th> |
88 | <th class="px-4 py-3 class10">Изменить</th> | 88 | <th class="px-4 py-3 class10">Изменить</th> |
89 | </tr> | 89 | </tr> |
90 | </thead> | 90 | </thead> |
91 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | 91 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> |
92 | @foreach($ad_employers as $ad) | 92 | @foreach($ad_employers as $ad) |
93 | <tr class="text-gray-700 dark:text-gray-400"> | 93 | <tr class="text-gray-700 dark:text-gray-400"> |
94 | <td class="px-4 py-3 class1 text-xs"> | 94 | <td class="px-4 py-3 class1 text-xs"> |
95 | <input type="checkbox" class="box" name="vacan_{{$ad->id}}" id="vacan_{{$ad->id}}" value="{{$ad->id}}"/> | 95 | <input type="checkbox" class="box" name="vacan_{{$ad->id}}" id="vacan_{{$ad->id}}" value="{{$ad->id}}"/> |
96 | </td> | 96 | </td> |
97 | <td class="px-4 py-3 class1 text-xs"> | 97 | <td class="px-4 py-3 class1 text-xs"> |
98 | {{$ad->id}} | 98 | {{$ad->id}} |
99 | </td> | 99 | </td> |
100 | <td class="px-4 py-3 class2 text-xs"> | 100 | <td class="px-4 py-3 class2 text-xs"> |
101 | <div class="flex items-center text-sm text-xs"> | 101 | <div class="flex items-center text-sm text-xs"> |
102 | <div | 102 | <div |
103 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" | 103 | class="relative hidden w-8 h-8 mr-3 rounded-full md:block" |
104 | > | 104 | > |
105 | @if (isset($ad->employer->logo)) | 105 | @if (isset($ad->employer->logo)) |
106 | <img | 106 | <img |
107 | class="object-cover w-full h-full rounded-full" | 107 | class="object-cover w-full h-full rounded-full" |
108 | src="{{ asset(Storage::url($ad->employer->logo)) }}" | 108 | src="{{ asset(Storage::url($ad->employer->logo)) }}" |
109 | alt="" | 109 | alt="" |
110 | loading="lazy" | 110 | loading="lazy" |
111 | /> | 111 | /> |
112 | @endif | 112 | @endif |
113 | <div | 113 | <div |
114 | class="absolute inset-0 rounded-full shadow-inner" | 114 | class="absolute inset-0 rounded-full shadow-inner" |
115 | aria-hidden="true" | 115 | aria-hidden="true" |
116 | ></div> | 116 | ></div> |
117 | </div> | 117 | </div> |
118 | <div class="text-xs"> | 118 | <div class="text-xs"> |
119 | <p class="font-semibold">{{$ad->name}}</p> | 119 | <p class="font-semibold">{{$ad->name}}</p> |
120 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 120 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
121 | {{$ad->employer->name_company}} | 121 | {{$ad->employer->name_company}} |
122 | </p> | 122 | </p> |
123 | </div> | 123 | </div> |
124 | </div> | 124 | </div> |
125 | </td> | 125 | </td> |
126 | 126 | ||
127 | <td class="px-4 py-3 class4 text-xs"> | 127 | <td class="px-4 py-3 class4 text-xs"> |
128 | <div class="flex items-center text-sm text-xs"> | 128 | <div class="flex items-center text-sm text-xs"> |
129 | @if ($ad->jobs->count()) | 129 | @if ($ad->jobs->count()) |
130 | <div> | 130 | <div> |
131 | <?php $i = 0;?> | 131 | <?php $i = 0;?> |
132 | @foreach ($ad->jobs as $title) | 132 | @foreach ($ad->jobs as $title) |
133 | <?php if ($i==0) {?> | 133 | <?php if ($i==0) {?> |
134 | <p class="font-semibold text-xs">{{ mb_strimwidth($title->name, 0, 35, "...") }}</p> | 134 | <a href="{{ route('admin.edit_jobs', ['ad_jobs' => $title->id]) }}" class="font-semibold text-xs">{{ mb_strimwidth($title->name, 0, 35, "...") }}</a><br> |
135 | <?php } else {?> | 135 | <?php } else {?> |
136 | <p class="font-semibold text-xs">/ {{ mb_strimwidth($title->name, 0, 35, "...") }}</p> | 136 | <a href="{{ route('admin.edit_jobs', ['ad_jobs' => $title->id]) }}" class="font-semibold text-xs">/ {{ mb_strimwidth($title->name, 0, 35, "...") }}</a><br> |
137 | <?php } | 137 | <?php } |
138 | $i++; | 138 | $i++; |
139 | ?> | 139 | ?> |
140 | @endforeach | 140 | @endforeach |
141 | </div> | 141 | </div> |
142 | @endif | 142 | @endif |
143 | </div> | 143 | </div> |
144 | 144 | ||
145 | </td> | 145 | </td> |
146 | 146 | ||
147 | <td class="px-4 py-3 text-sm class5 text-xs"> | 147 | <td class="px-4 py-3 text-sm class5 text-xs"> |
148 | @if ($ad->favorite_vacancy==1) | 148 | @if ($ad->favorite_vacancy==1) |
149 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | 149 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> |
150 | Да | 150 | Да |
151 | </span> | 151 | </span> |
152 | @else | 152 | @else |
153 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> | 153 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> |
154 | Нет | 154 | Нет |
155 | </span> | 155 | </span> |
156 | @endif | 156 | @endif |
157 | </td> | 157 | </td> |
158 | 158 | ||
159 | <td class="px-4 py-3 text-sm class6 text-xs"> | 159 | <td class="px-4 py-3 text-sm class6 text-xs"> |
160 | @if ($ad->sroch_vacancy==1) | 160 | @if ($ad->sroch_vacancy==1) |
161 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> | 161 | <span class="px-2 py-1 font-semibold leading-tight text-green-700 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100"> |
162 | Да | 162 | Да |
163 | </span> | 163 | </span> |
164 | @else | 164 | @else |
165 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> | 165 | <span class="px-2 py-1 font-semibold leading-tight text-orange-700 bg-orange-100 rounded-full dark:text-white dark:bg-orange-600"> |
166 | Нет | 166 | Нет |
167 | </span> | 167 | </span> |
168 | @endif | 168 | @endif |
169 | </td> | 169 | </td> |
170 | 170 | ||
171 | <td class="px-4 py-3 text-sm class7 text-xs"> | 171 | <td class="px-4 py-3 text-sm class7 text-xs"> |
172 | {{ $ad->status }} | 172 | {{ $ad->status }} |
173 | </td> | 173 | </td> |
174 | 174 | ||
175 | <td class="px-4 py-3 text-sm class8 text-xs"> | 175 | <td class="px-4 py-3 text-sm class8 text-xs"> |
176 | <div class="flex items-center text-xs"> | 176 | <div class="flex items-center text-xs"> |
177 | <div> | 177 | <div> |
178 | <p class="font-semibold">{{ date('d.m.Y', strtotime($ad->created_at)) }}</p> | 178 | <p class="font-semibold">{{ date('d.m.Y', strtotime($ad->created_at)) }}</p> |
179 | <p class="text-xs text-gray-600 dark:text-gray-400"> | 179 | <p class="text-xs text-gray-600 dark:text-gray-400"> |
180 | {{ date('d.m.Y', strtotime($ad->updated_at)) }} | 180 | {{ date('d.m.Y', strtotime($ad->updated_at)) }} |
181 | </p> | 181 | </p> |
182 | </div> | 182 | </div> |
183 | </div> | 183 | </div> |
184 | 184 | ||
185 | </td> | 185 | </td> |
186 | 186 | ||
187 | <td class="px-4 py-3 text-sm class10 text-xs"> | 187 | <td class="px-4 py-3 text-sm class10 text-xs"> |
188 | <form action="{{ route('admin.delete-ad-employer', ['ad_employer' => $ad->id]) }}" method="POST"> | 188 | <form action="{{ route('admin.delete-ad-employer', ['ad_employer' => $ad->id]) }}" method="POST"> |
189 | <a class="text-xs" href="{{ route('admin.edit-ad-employers', ['ad_employer' => $ad->id]) }}">Изменить</a> | | 189 | <a class="text-xs" href="{{ route('admin.edit-ad-employers', ['ad_employer' => $ad->id]) }}">Изменить</a> | |
190 | @csrf | 190 | @csrf |
191 | @method('DELETE') | 191 | @method('DELETE') |
192 | <input class="btn btn-danger text-xs" type="submit" value="Удалить"/> | 192 | <input class="btn btn-danger text-xs" type="submit" value="Удалить"/> |
193 | </form> | 193 | </form> |
194 | </td> | 194 | </td> |
195 | </tr> | 195 | </tr> |
196 | @endforeach | 196 | @endforeach |
197 | </tbody> | 197 | </tbody> |
198 | </table> | 198 | </table> |
199 | </div> | 199 | </div> |
200 | 200 | ||
201 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> | 201 | <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border-t dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800"> |
202 | {{ $ad_employers->appends($_GET)->links('admin.pagginate') }} | 202 | {{ $ad_employers->appends($_GET)->links('admin.pagginate') }} |
203 | </div> | 203 | </div> |
204 | </div> | 204 | </div> |
205 | @endsection | 205 | @endsection |
206 | 206 |
resources/views/admin/ad_jobs/edit.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Админка - Редактирование должности в вакансии']) | |
2 | |||
3 | @section('content') | ||
4 | <form method="POST" action="{{ route('admin.update_jobs', ['ad_jobs' => $ad_jobs]) }}" enctype="multipart/form-data"> | ||
5 | @csrf | ||
6 | @method('PUT') | ||
7 | |||
8 | <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"> | ||
9 | |||
10 | <label class="block text-sm"> | ||
11 | <span class="text-gray-700 dark:text-gray-400">Минимальная зарплата</span> | ||
12 | <input name="min_salary" id="min_salary" | ||
13 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | ||
14 | placeholder="Минимальная зарплата" value="{{ old('min_salary') ?? $ad_jobs->min_salary ?? '' }}" | ||
15 | /> | ||
16 | @error('min_salary') | ||
17 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
18 | {{ $message }} | ||
19 | </span> | ||
20 | @enderror | ||
21 | </label><br> | ||
22 | |||
23 | <label class="block text-sm"> | ||
24 | <span class="text-gray-700 dark:text-gray-400">Максимальная зарплата</span> | ||
25 | <input name="max_salary" id="max_salary" | ||
26 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | ||
27 | placeholder="Максимальная зарплата" value="{{ old('max_salary') ?? $ad_jobs->max_salary ?? '' }}" | ||
28 | /> | ||
29 | @error('max_salary') | ||
30 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
31 | {{ $message }} | ||
32 | </span> | ||
33 | @enderror | ||
34 | </label><br> | ||
35 | |||
36 | <label class="block text-sm"> | ||
37 | <span class="text-gray-700 dark:text-gray-400">Регион</span> | ||
38 | <input name="region" id="region" | ||
39 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | ||
40 | placeholder="Регион" value="{{ old('region') ?? $ad_jobs->region ?? '' }}" | ||
41 | /> | ||
42 | @error('region') | ||
43 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
44 | {{ $message }} | ||
45 | </span> | ||
46 | @enderror | ||
47 | </label><br> | ||
48 | |||
49 | <label class="block text-sm"> | ||
50 | <span class="text-gray-700 dark:text-gray-400">Суточные</span> | ||
51 | <input name="sytki" id="sytki" | ||
52 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | ||
53 | placeholder="Суточные" value="{{ old('sytki') ?? $ad_jobs->sytki ?? '' }}" | ||
54 | /> | ||
55 | @error('sytki') | ||
56 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
57 | {{ $message }} | ||
58 | </span> | ||
59 | @enderror | ||
60 | </label><br> | ||
61 | |||
62 | <label class="block text-sm"> | ||
63 | <span class="text-gray-700 dark:text-gray-400">Посадка</span> | ||
64 | <input name="start" id="start" | ||
65 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | ||
66 | placeholder="Посадка" value="{{ old('start') ?? $ad_jobs->start ?? '' }}" | ||
67 | /> | ||
68 | @error('start') | ||
69 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
70 | {{ $message }} | ||
71 | </span> | ||
72 | @enderror | ||
73 | </label><br> | ||
74 | |||
75 | <label class="block text-sm"> | ||
76 | <span class="text-gray-700 dark:text-gray-400">Описание</span> | ||
77 | <textarea class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-textarea focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray ckeditor_" id="description" name="description" placeholder="Текст (html)" required | ||
78 | rows="10">{{ old('description') ?? $ad_jobs->description ?? '' }}</textarea> | ||
79 | @error('description') | ||
80 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
81 | {{ $message }} | ||
82 | </span> | ||
83 | @enderror | ||
84 | </label> | ||
85 | <br> | ||
86 | |||
87 | <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> | ||
88 | <div> | ||
89 | <button type="submit" class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"> | ||
90 | Сохранить | ||
91 | </button> | ||
92 | <a href="{{ route('admin.ad-employers') }}" | ||
93 | class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" | ||
94 | style="display: -webkit-inline-box; height: 30px!important;" | ||
95 | >Назад</a> | ||
96 | </div> | ||
97 | </div> | ||
98 | </div> | ||
99 | </form> | ||
100 | <script src="//cdn.ckeditor.com/4.14.0/standard/ckeditor.js"></script> | ||
101 | |||
102 | <!--<script src="{{ asset('./ckeditor/ckeditor.js') }}"></script>--> | ||
103 | <script> | ||
104 | CKEDITOR.replace( 'text', { | ||
105 | filebrowserUploadUrl: "{{route('ckeditor.image-upload', ['_token' => csrf_token() ])}}", | ||
106 | filebrowserImageUploadUrl: "{{ route('ckeditor.image-upload', ['_token' => csrf_token() ])}}", | ||
107 | filebrowserUploadMethod: 'form' | ||
108 | }); | ||
109 | </script> | ||
110 | @endsection | ||
111 |
resources/views/admin/employer/edit.blade.php
1 | @extends('layout.admin', ['title' => 'Админка - Редактирование работодателя']) | 1 | @extends('layout.admin', ['title' => 'Админка - Редактирование работодателя']) |
2 | 2 | ||
3 | @section('content') | 3 | @section('content') |
4 | <h4 class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300"> | 4 | <h4 class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300"> |
5 | Работодатель-пользователь: "{{$employer->users->name_man}} ({{$employer->user_id}})" | 5 | Работодатель-пользователь: "{{$employer->users->name_man}} ({{$employer->user_id}})" |
6 | </h4> | 6 | </h4> |
7 | <form method="POST" action="" enctype="multipart/form-data"> | 7 | <form method="POST" action="" enctype="multipart/form-data"> |
8 | <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"> | 8 | <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"> |
9 | @csrf | 9 | @csrf |
10 | <div class="tabs"> | 10 | <div class="tabs"> |
11 | <input type="radio" name="tab-btn" id="tab-btn-1" value="" checked> | 11 | <input type="radio" name="tab-btn" id="tab-btn-1" value="" checked> |
12 | <label for="tab-btn-1">Персональная информация</label> | 12 | <label for="tab-btn-1">Персональная информация</label> |
13 | <input type="radio" name="tab-btn" id="tab-btn-2" value=""> | 13 | <input type="radio" name="tab-btn" id="tab-btn-2" value=""> |
14 | <label for="tab-btn-2">Настройки</label> | 14 | <label for="tab-btn-2">Настройки</label> |
15 | <!--<input type="radio" name="tab-btn" id="tab-btn-3" value=""> | 15 | <input type="radio" name="tab-btn" id="tab-btn-3" value=""> |
16 | <label for="tab-btn-3">Вкладка 3</label>--> | 16 | <label for="tab-btn-3">Флот</label> |
17 | <div id="content-1"> | 17 | <div id="content-1"> |
18 | 18 | ||
19 | <label class="block text-sm"> | 19 | <label class="block text-sm"> |
20 | <span class="text-gray-700 dark:text-gray-400">Имя компании</span> | 20 | <span class="text-gray-700 dark:text-gray-400">Имя компании</span> |
21 | <input name="name" id="name" | 21 | <input name="name" id="name" |
22 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | 22 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" |
23 | placeholder="Имя компании" value="{{ old('name') ?? $employer->users->name ?? '' }}" | 23 | placeholder="Имя компании" value="{{ old('name') ?? $employer->users->name ?? '' }}" |
24 | /> | 24 | /> |
25 | @error('name') | 25 | @error('name') |
26 | <span class="text-xs text-red-600 dark:text-red-400"> | 26 | <span class="text-xs text-red-600 dark:text-red-400"> |
27 | {{ $message }} | 27 | {{ $message }} |
28 | </span> | 28 | </span> |
29 | @enderror | 29 | @enderror |
30 | </label><br> | 30 | </label><br> |
31 | 31 | ||
32 | <label class="block text-sm"> | 32 | <label class="block text-sm"> |
33 | <span class="text-gray-700 dark:text-gray-400">Email</span> | 33 | <span class="text-gray-700 dark:text-gray-400">Email</span> |
34 | <input name="email" id="email" | 34 | <input name="email" id="email" |
35 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | 35 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" |
36 | placeholder="Почта" value="{{ old('email') ?? $employer->email ?? '' }}" | 36 | placeholder="Почта" value="{{ old('email') ?? $employer->email ?? '' }}" |
37 | /> | 37 | /> |
38 | @error('email') | 38 | @error('email') |
39 | <span class="text-xs text-red-600 dark:text-red-400"> | 39 | <span class="text-xs text-red-600 dark:text-red-400"> |
40 | {{ $message }} | 40 | {{ $message }} |
41 | </span> | 41 | </span> |
42 | @enderror | 42 | @enderror |
43 | </label><br> | 43 | </label><br> |
44 | 44 | ||
45 | <label class="block text-sm"> | 45 | <label class="block text-sm"> |
46 | <span class="text-gray-700 dark:text-gray-400">Телефон</span> | 46 | <span class="text-gray-700 dark:text-gray-400">Телефон</span> |
47 | <input name="telephone" id="telephone" | 47 | <input name="telephone" id="telephone" |
48 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | 48 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" |
49 | placeholder="Телефон" value="{{ old('telephone') ?? $employer->telephone ?? '' }}" | 49 | placeholder="Телефон" value="{{ old('telephone') ?? $employer->telephone ?? '' }}" |
50 | /> | 50 | /> |
51 | @error('telephone') | 51 | @error('telephone') |
52 | <span class="text-xs text-red-600 dark:text-red-400"> | 52 | <span class="text-xs text-red-600 dark:text-red-400"> |
53 | {{ $message }} | 53 | {{ $message }} |
54 | </span> | 54 | </span> |
55 | @enderror | 55 | @enderror |
56 | </label><br> | 56 | </label><br> |
57 | 57 | ||
58 | <label class="block text-sm"> | 58 | <label class="block text-sm"> |
59 | <span class="text-gray-700 dark:text-gray-400">Адрес</span> | 59 | <span class="text-gray-700 dark:text-gray-400">Адрес</span> |
60 | <input name="address" id="address" | 60 | <input name="address" id="address" |
61 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | 61 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" |
62 | placeholder="Адрес" value="{{ old('address') ?? $employer->address ?? '' }}" | 62 | placeholder="Адрес" value="{{ old('address') ?? $employer->address ?? '' }}" |
63 | /> | 63 | /> |
64 | @error('address') | 64 | @error('address') |
65 | <span class="text-xs text-red-600 dark:text-red-400"> | 65 | <span class="text-xs text-red-600 dark:text-red-400"> |
66 | {{ $message }} | 66 | {{ $message }} |
67 | </span> | 67 | </span> |
68 | @enderror | 68 | @enderror |
69 | </label><br> | 69 | </label><br> |
70 | 70 | ||
71 | <label class="block text-sm"> | 71 | <label class="block text-sm"> |
72 | <span class="text-gray-700 dark:text-gray-400">Сайт</span> | 72 | <span class="text-gray-700 dark:text-gray-400">Сайт</span> |
73 | <input name="site" id="site" | 73 | <input name="site" id="site" |
74 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | 74 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" |
75 | placeholder="Сайт" value="{{ old('site') ?? $employer->site ?? '' }}" | 75 | placeholder="Сайт" value="{{ old('site') ?? $employer->site ?? '' }}" |
76 | /> | 76 | /> |
77 | @error('site') | 77 | @error('site') |
78 | <span class="text-xs text-red-600 dark:text-red-400"> | 78 | <span class="text-xs text-red-600 dark:text-red-400"> |
79 | {{ $message }} | 79 | {{ $message }} |
80 | </span> | 80 | </span> |
81 | @enderror | 81 | @enderror |
82 | </label><br> | 82 | </label><br> |
83 | 83 | ||
84 | <label class="block text-sm"> | 84 | <label class="block text-sm"> |
85 | <span class="text-gray-700 dark:text-gray-400">Лого</span> | 85 | <span class="text-gray-700 dark:text-gray-400">Лого</span> |
86 | 86 | ||
87 | <input name="logo" id="logo" type="file" | 87 | <input name="logo" id="logo" type="file" |
88 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | 88 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" |
89 | placeholder="Лого" value="" | 89 | placeholder="Лого" value="" |
90 | /> | 90 | /> |
91 | @isset($employer->logo) | 91 | @isset($employer->logo) |
92 | <img src="<?=asset(Storage::url($employer->logo))?>" width="150"/> | 92 | <img src="<?=asset(Storage::url($employer->logo))?>" width="150"/> |
93 | @endisset | 93 | @endisset |
94 | @error('logo') | 94 | @error('logo') |
95 | <span class="text-xs text-red-600 dark:text-red-400"> | 95 | <span class="text-xs text-red-600 dark:text-red-400"> |
96 | {{ $message }} | 96 | {{ $message }} |
97 | </span> | 97 | </span> |
98 | @enderror | 98 | @enderror |
99 | </label><br> | 99 | </label><br> |
100 | 100 | ||
101 | <label class="block mt-4 text-sm"> | 101 | <label class="block mt-4 text-sm"> |
102 | <span class="text-gray-700 dark:text-gray-400">Описание</span> | 102 | <span class="text-gray-700 dark:text-gray-400">Описание</span> |
103 | <textarea name="text" id="text" | 103 | <textarea name="text" id="text" |
104 | 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" | 104 | 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" |
105 | rows="3" | 105 | rows="3" |
106 | placeholder="Описание компании" | 106 | placeholder="Описание компании" |
107 | >{{ old('text') ?? $employer->text ?? '' }}</textarea> | 107 | >{{ old('text') ?? $employer->text ?? '' }}</textarea> |
108 | </label> | 108 | </label> |
109 | 109 | ||
110 | <hr> | 110 | <hr> |
111 | 111 | ||
112 | <label class="block mt-4 text-sm"> | 112 | <label class="block mt-4 text-sm"> |
113 | <span class="text-gray-700 dark:text-gray-400">Категории</span> | 113 | <span class="text-gray-700 dark:text-gray-400">Категории</span> |
114 | 114 | ||
115 | <select name="category" id="category" class="form-control"> | 115 | <select name="category" id="category" class="form-control"> |
116 | @foreach($select_category as $cat) | 116 | @foreach($select_category as $cat) |
117 | <option value="{{ $cat->name }}" | 117 | <option value="{{ $cat->name }}" |
118 | @isset($employer) | 118 | @isset($employer) |
119 | @if($cat->name == $employer->category) | 119 | @if($cat->name == $employer->category) |
120 | selected | 120 | selected |
121 | @endif | 121 | @endif |
122 | @endisset | 122 | @endisset |
123 | >{{ $cat->name }}</option> | 123 | >{{ $cat->name }}</option> |
124 | @endforeach | 124 | @endforeach |
125 | </select> | 125 | </select> |
126 | 126 | ||
127 | @error('category') | 127 | @error('category') |
128 | <div class="alert alert-danger">{{ $message }}</div> | 128 | <div class="alert alert-danger">{{ $message }}</div> |
129 | @enderror | 129 | @enderror |
130 | </label> | 130 | </label> |
131 | 131 | ||
132 | <label class="block mt-4 text-sm"> | 132 | <label class="block mt-4 text-sm"> |
133 | <span class="text-gray-700 dark:text-gray-400">Комментарий админа</span> | 133 | <span class="text-gray-700 dark:text-gray-400">Комментарий админа</span> |
134 | <textarea name="comment_admin" id="comment_admin" | 134 | <textarea name="comment_admin" id="comment_admin" |
135 | 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" | 135 | 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" |
136 | rows="3" | 136 | rows="3" |
137 | placeholder="Комментарий админа" | 137 | placeholder="Комментарий админа" |
138 | >{{ old('comment_admin') ?? $employer->comment_admin ?? '' }}</textarea> | 138 | >{{ old('comment_admin') ?? $employer->comment_admin ?? '' }}</textarea> |
139 | </label> | 139 | </label> |
140 | 140 | ||
141 | </div> | 141 | </div> |
142 | <div id="content-2"> | 142 | <div id="content-2"> |
143 | <label class="block text-sm"> | 143 | <label class="block text-sm"> |
144 | <h4 class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300"> | 144 | <h4 class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300"> |
145 | Права работодателя: | 145 | Права работодателя: |
146 | </h4> | 146 | </h4> |
147 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Просмотр базы резюме </p> | 147 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Просмотр базы резюме </p> |
148 | <input type="hidden" name="is_lookin" value="0" /> | 148 | <input type="hidden" name="is_lookin" value="0" /> |
149 | <input name="is_lookin" <? if ($employer->users->is_lookin) echo "checked";?> | 149 | <input name="is_lookin" <? if ($employer->users->is_lookin) echo "checked";?> |
150 | class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray " | 150 | class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray " |
151 | placeholder="" type="checkbox" value="1" | 151 | placeholder="" type="checkbox" value="1" |
152 | /><br> | 152 | /><br> |
153 | 153 | ||
154 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Отправка сообщений</p> | 154 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Отправка сообщений</p> |
155 | <input type="hidden" name="is_message" value="0" /> | 155 | <input type="hidden" name="is_message" value="0" /> |
156 | <input name="is_message" id="is_message" <? if ($employer->users->is_message) echo "checked";?> | 156 | <input name="is_message" id="is_message" <? if ($employer->users->is_message) echo "checked";?> |
157 | class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray " | 157 | class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray " |
158 | placeholder="" type="checkbox" value="1" | 158 | placeholder="" type="checkbox" value="1" |
159 | /><br> | 159 | /><br> |
160 | 160 | ||
161 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Публикация вакансий</p> | 161 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Публикация вакансий</p> |
162 | <input type="hidden" name="is_public" value="0" /> | 162 | <input type="hidden" name="is_public" value="0" /> |
163 | <input name="is_public" id="is_public" <? if ($employer->users->is_public) echo "checked";?> | 163 | <input name="is_public" id="is_public" <? if ($employer->users->is_public) echo "checked";?> |
164 | class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray " | 164 | class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray " |
165 | placeholder="" type="checkbox" value="1" | 165 | placeholder="" type="checkbox" value="1" |
166 | /><br> | 166 | /><br> |
167 | 167 | ||
168 | </label> | 168 | </label> |
169 | 169 | ||
170 | <label class="block text-sm"> | 170 | <label class="block text-sm"> |
171 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Работодатель скрыт </p> | 171 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Работодатель скрыт </p> |
172 | <input type="hidden" name="status_hidden" value="0" /> | 172 | <input type="hidden" name="status_hidden" value="0" /> |
173 | <input name="status_hidden" <? if ($employer->status_hidden) echo "checked";?> | 173 | <input name="status_hidden" <? if ($employer->status_hidden) echo "checked";?> |
174 | class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray " | 174 | class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray " |
175 | placeholder="" type="checkbox" value="1" | 175 | placeholder="" type="checkbox" value="1" |
176 | /> | 176 | /> |
177 | </label><br> | 177 | </label><br> |
178 | 178 | ||
179 | <label class="block text-sm"> | 179 | <label class="block text-sm"> |
180 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Компания подтверждена </p> | 180 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Компания подтверждена </p> |
181 | <input type="hidden" name="oficial_status" value="0" /> | 181 | <input type="hidden" name="oficial_status" value="0" /> |
182 | <input name="oficial_status" <? if ($employer->oficial_status) echo "checked";?> | 182 | <input name="oficial_status" <? if ($employer->oficial_status) echo "checked";?> |
183 | class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray " | 183 | class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray " |
184 | placeholder="" type="checkbox" value="1" | 184 | placeholder="" type="checkbox" value="1" |
185 | /> | 185 | /> |
186 | </label><br> | 186 | </label><br> |
187 | 187 | ||
188 | <label class="block text-sm"> | 188 | <label class="block text-sm"> |
189 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Разрешение публикации в соц.сетях </p> | 189 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Разрешение публикации в соц.сетях </p> |
190 | <input type="hidden" name="social_is" value="0" /> | 190 | <input type="hidden" name="social_is" value="0" /> |
191 | <input name="social_is" <? if ($employer->social_is) echo "checked";?> | 191 | <input name="social_is" <? if ($employer->social_is) echo "checked";?> |
192 | class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray " | 192 | class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray " |
193 | placeholder="" type="checkbox" value="1" | 193 | placeholder="" type="checkbox" value="1" |
194 | /> | 194 | /> |
195 | </label><br> | 195 | </label><br> |
196 | 196 | ||
197 | <label class="block text-sm"> | 197 | <label class="block text-sm"> |
198 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Рассылка </p> | 198 | <p class="text-gray-700 dark:text-gray-400" style="float:left; margin-right: 10px">Рассылка </p> |
199 | <input type="hidden" name="sending_is" value="0" /> | 199 | <input type="hidden" name="sending_is" value="0" /> |
200 | <input name="sending_is" <? if ($employer->sending_is) echo "checked";?> | 200 | <input name="sending_is" <? if ($employer->sending_is) echo "checked";?> |
201 | class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray " | 201 | class="block mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray " |
202 | placeholder="" type="checkbox" value="1" | 202 | placeholder="" type="checkbox" value="1" |
203 | /> | 203 | /> |
204 | </label><br> | 204 | </label><br> |
205 | 205 | ||
206 | </div> | 206 | </div> |
207 | |||
207 | <div id="content-3"> | 208 | <div id="content-3"> |
208 | Содержимое 3... | 209 | <label class="block text-sm"> |
210 | <span class="text-gray-700 dark:text-gray-400">Флоты</span> | ||
211 | <a href="{{ route('admin.flot_add', ['employer' => $employer->id]) }}" | ||
212 | class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" | ||
213 | style="display: -webkit-inline-box; height: 30px!important;" | ||
214 | >Новый корабль</a> | ||
215 | @if ($flots->count()) | ||
216 | <table class="w-full whitespace-no-wrap"> | ||
217 | <thead> | ||
218 | <tr class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800"> | ||
219 | <th class="px-4 py-3">ID</th> | ||
220 | <th class="px-4 py-3">Название</th> | ||
221 | <th class="px-4 py-3">Картинка</th> | ||
222 | <th class="px-4 py-3">Дата регист.</th> | ||
223 | <th class="px-4 py-3">Редакт.</th> | ||
224 | </tr> | ||
225 | </thead> | ||
226 | <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> | ||
227 | @foreach($flots as $flot) | ||
228 | <tr class="text-gray-700 dark:text-gray-400"> | ||
229 | <td class="px-4 py-3 text-xs"> | ||
230 | {{ $flot->id }} | ||
231 | </td> | ||
232 | <td class="px-4 py-3 text-xs"> | ||
233 | {{ $flot->name }} | ||
234 | </td> | ||
235 | <td class="px-4 py-3 text-xs"> | ||
236 | @if (isset($flot->image)) | ||
237 | <div class="flex items-center text-sm"> | ||
238 | <div class="relative hidden w-8 h-8 mr-3 rounded-full md:block"> | ||
239 | <img | ||
240 | class="object-cover w-full h-full rounded-full" | ||
241 | src="{{ asset(Storage::url($flot->image)) }}" | ||
242 | alt="{{ $flot->name }}" | ||
243 | loading="lazy" | ||
244 | /> | ||
245 | <div | ||
246 | class="absolute inset-0 rounded-full shadow-inner" | ||
247 | aria-hidden="true" | ||
248 | ></div> | ||
249 | </div> | ||
250 | </div> | ||
251 | @else | ||
252 | - | ||
253 | @endif | ||
254 | </td> | ||
255 | <td class="px-4 py-3 text-xs"> | ||
256 | {{ $flot->created_at }} | ||
257 | </td> | ||
258 | <td class="px-4 py-3 text-xs"> | ||
259 | <div class="flex items-center text-sm"> | ||
260 | <div> | ||
261 | <a href="{{ route('admin.flot', ['flot' => $flot->id, 'employer' => $flot->employer_id]) }}" class="text-xs text-gray-600 dark:text-gray-400"> | ||
262 | Редактировать | ||
263 | </a> | | ||
264 | <a href="{{ route('admin.flot_delete', ['flot' => $flot->id, 'employer_id' => $flot->employer_id]) }}" class="text-xs text-gray-600 dark:text-gray-400"> | ||
265 | Удалить | ||
266 | </a> | ||
267 | </div> | ||
268 | </div> | ||
269 | </td> | ||
270 | </tr> | ||
271 | @endforeach | ||
272 | </tbody> | ||
273 | </table> | ||
274 | @else | ||
275 | <h2>Нет данных</h2> | ||
276 | @endif | ||
277 | </label> | ||
209 | </div> | 278 | </div> |
210 | </div> | 279 | </div> |
211 | <br> | 280 | <br> |
212 | <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> | 281 | <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> |
213 | <div> | 282 | <div> |
214 | <button type="submit" class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"> | 283 | <button type="submit" class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"> |
215 | Сохранить | 284 | Сохранить |
216 | </button> | 285 | </button> |
217 | <a href="{{ route('admin.employers') }}" | 286 | <a href="{{ route('admin.employers') }}" |
218 | class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" | 287 | class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" |
219 | style="display: -webkit-inline-box; height: 30px!important;" | 288 | style="display: -webkit-inline-box; height: 30px!important;" |
220 | >Назад</a> | 289 | >Назад</a> |
221 | 290 | ||
222 | </div> | 291 | </div> |
223 | <!--<div> | ||
224 | <a href="">Флот</a> | ||
225 | </div> | ||
226 | <div> | ||
227 | <a href="">Вакансии</a> | ||
228 | </div> | ||
229 | <div> | ||
230 | <a href="">Контакты</a> | ||
231 | </div>--> | ||
232 | </div> | 292 | </div> |
233 | </div> | 293 | </div> |
234 | </form> | 294 | </form> |
235 | <!-- | ||
236 | <label class="block mt-4 text-sm"> | ||
237 | <span class="text-gray-700 dark:text-gray-400"> | ||
238 | Requested Limit | ||
239 | </span> | ||
240 | <select | ||
241 | class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-select focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" | ||
242 | > | ||
243 | <option>$1,000</option> | ||
244 | <option>$5,000</option> | ||
245 | <option>$10,000</option> | ||
246 | <option>$25,000</option> | ||
247 | </select> | ||
248 | </label> | ||
249 | |||
250 | <label class="block mt-4 text-sm"> | ||
251 | <span class="text-gray-700 dark:text-gray-400"> | ||
252 | Multiselect | ||
253 | </span> | ||
254 | <select | ||
255 | class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-multiselect focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" | ||
256 | multiple | ||
257 | > | ||
258 | <option>Option 1</option> | ||
259 | <option>Option 2</option> | ||
260 | <option>Option 3</option> | ||
261 | <option>Option 4</option> | ||
262 | <option>Option 5</option> | ||
263 | </select> | ||
264 | </label> | ||
265 | |||
266 | <label class="block mt-4 text-sm"> | ||
267 | <span class="text-gray-700 dark:text-gray-400">Message</span> | ||
268 | <textarea | ||
269 | class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-textarea focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" | ||
270 | rows="3" | ||
271 | placeholder="Enter some long form content." | ||
272 | ></textarea> | ||
273 | </label> | ||
274 | |||
275 | <div class="flex mt-6 text-sm"> | ||
276 | <label class="flex items-center dark:text-gray-400"> | ||
277 | <input | ||
278 | type="checkbox" | ||
279 | class="text-purple-600 form-checkbox focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray" | ||
280 | /> | ||
281 | <span class="ml-2"> | ||
282 | I agree to the | ||
283 | <span class="underline">privacy policy</span> | ||
284 | </span> | ||
285 | </label> | ||
286 | </div> | ||
287 | </div> | ||
288 | |||
289 | <!-- Validation inputs --> | ||
290 | <!--<h4 | ||
291 | class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300" | ||
292 | > | ||
293 | Validation | ||
294 | </h4> | ||
295 | <div | ||
296 | class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800" | ||
297 | > | ||
298 | <!-- Invalid input --> | ||
299 | <!--<label class="block text-sm"> | ||
300 | <span class="text-gray-700 dark:text-gray-400"> | ||
301 | Invalid input | ||
302 | </span> | ||
303 | <input | ||
304 | class="block w-full mt-1 text-sm border-red-600 dark:text-gray-300 dark:bg-gray-700 focus:border-red-400 focus:outline-none focus:shadow-outline-red form-input" | ||
305 | placeholder="Jane Doe" | ||
306 | /> | ||
307 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
308 | Your password is too short. | ||
309 | </span> | ||
310 | </label> | ||
311 | |||
312 | <!-- Valid input --> | ||
313 | <!--<label class="block mt-4 text-sm"> | ||
314 | <span class="text-gray-700 dark:text-gray-400"> | ||
315 | Valid input | ||
316 | </span> | ||
317 | <input | ||
318 | class="block w-full mt-1 text-sm border-green-600 dark:text-gray-300 dark:bg-gray-700 focus:border-green-400 focus:outline-none focus:shadow-outline-green form-input" | ||
319 | placeholder="Jane Doe" | ||
320 | /> | ||
321 | <span class="text-xs text-green-600 dark:text-green-400"> | ||
322 | Your password is strong. | ||
323 | </span> | ||
324 | </label> | ||
325 | |||
326 | <!-- Helper text --> | ||
327 | <!--<label class="block mt-4 text-sm"> | ||
328 | <span class="text-gray-700 dark:text-gray-400"> | ||
329 | Helper text | ||
330 | </span> | ||
331 | <input | ||
332 | class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input" | ||
333 | placeholder="Jane Doe" | ||
334 | /> | ||
335 | <span class="text-xs text-gray-600 dark:text-gray-400"> | ||
336 | Your password must be at least 6 characters long. | ||
337 | </span> | ||
338 | </label> | ||
339 | </div> | ||
340 | |||
341 | <!-- Inputs with icons --> | ||
342 | <!--<h4 | ||
343 | class="mb-4 text-lg font-semibold text-gray-600 dark:text-gray-300" | ||
344 | > | ||
345 | Icons | ||
346 | </h4> | ||
347 | <div | ||
348 | class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800" | ||
349 | > | ||
350 | <label class="block text-sm"> | ||
351 | <span class="text-gray-700 dark:text-gray-400">Icon left</span> | ||
352 | <!-- focus-within sets the color for the icon when input is focused --> | ||
353 | <!--<div | ||
354 | class="relative text-gray-500 focus-within:text-purple-600 dark:focus-within:text-purple-400" | ||
355 | > | ||
356 | <input | ||
357 | class="block w-full pl-10 mt-1 text-sm text-black dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input" | ||
358 | placeholder="Jane Doe" | ||
359 | /> | ||
360 | <div | ||
361 | class="absolute inset-y-0 flex items-center ml-3 pointer-events-none" | ||
362 | > | ||
363 | <svg | ||
364 | class="w-5 h-5" | ||
365 | aria-hidden="true" | ||
366 | fill="none" | ||
367 | stroke-linecap="round" | ||
368 | stroke-linejoin="round" | ||
369 | stroke-width="2" | ||
370 | viewBox="0 0 24 24" | ||
371 | stroke="currentColor" | ||
372 | > | ||
373 | <path | ||
374 | d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" | ||
375 | ></path> | ||
376 | </svg> | ||
377 | </div> | ||
378 | </div> | ||
379 | </label> | ||
380 | |||
381 | <label class="block mt-4 text-sm"> | ||
382 | <span class="text-gray-700 dark:text-gray-400">Icon right</span> | ||
383 | <!-- focus-within sets the color for the icon when input is focused --> | ||
384 | <!--<div | ||
385 | class="relative text-gray-500 focus-within:text-purple-600 dark:focus-within:text-purple-400" | ||
386 | > | ||
387 | <input | ||
388 | class="block w-full pr-10 mt-1 text-sm text-black dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input" | ||
389 | placeholder="Jane Doe" | ||
390 | /> |
resources/views/admin/flot/add.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Админка - Добавление корабля']) | |
2 | |||
3 | @section('content') | ||
4 | <form method="POST" action="{{ route('admin.flot_add_save') }}" enctype="multipart/form-data"> | ||
5 | @include('admin.flot.test') | ||
6 | </form> | ||
7 | @endsection | ||
8 |
resources/views/admin/flot/edit.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Админка - Редактирование корабля']) | |
2 | |||
3 | @section('content') | ||
4 | <form method="POST" action="{{ route('admin.flot_edit', ['flot' => $flot]) }}" enctype="multipart/form-data"> | ||
5 | @include('admin.flot.test', ['flot' => $flot]) | ||
6 | </form> | ||
7 | @endsection | ||
8 |
resources/views/admin/flot/flot_add.blade.php
File was created | 1 | @csrf | |
2 | |||
3 | @isset($flot) | ||
4 | @method('PUT') | ||
5 | @endisset | ||
6 | |||
7 | <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"> | ||
8 | <input type="hidden" id="id" name="id" value="{{ $flot->id }}"/> | ||
9 | <label class="block text-sm"> | ||
10 | <span class="text-gray-700 dark:text-gray-400">Название корабля</span> | ||
11 | <input name="name" id="name" | ||
12 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | ||
13 | placeholder="Название учебного заведения" value="{{ old('name') ?? $flot->name ?? '' }}" | ||
14 | /> | ||
15 | @error('name') | ||
16 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
17 | {{ $message }} | ||
18 | </span> | ||
19 | @enderror | ||
20 | </label><br> | ||
21 | |||
22 | <label class="block text-sm"> | ||
23 | <span class="text-gray-700 dark:text-gray-400">Текст</span> | ||
24 | <textarea class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-textarea focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray ckeditor_" name="text" placeholder="Текст (html)" required | ||
25 | rows="10">{{ old('text') ?? $flot->text ?? '' }}</textarea> | ||
26 | @error('text') | ||
27 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
28 | {{ $message }} | ||
29 | </span> | ||
30 | @enderror | ||
31 | </label><br> | ||
32 | |||
33 | <label class="block text-sm"> | ||
34 | <span class="text-gray-700 dark:text-gray-400">Картинка</span> | ||
35 | <input type="file" class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 | ||
36 | focus:border-purple-400 focus:outline-none focus:shadow-outline-purple | ||
37 | dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | ||
38 | id="image" name="image" accept="image/png, image/jpeg"> | ||
39 | @error('image') | ||
40 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
41 | {{ $message }} | ||
42 | </span> | ||
43 | @enderror | ||
44 | @isset($education->image) | ||
45 | <img src="{{asset(Storage::url($education->image))}}" width="100px"/> | ||
46 | @endisset | ||
47 | </label><br> | ||
48 | |||
49 | <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> | ||
50 | <div> | ||
51 | <button type="submit" class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"> | ||
52 | Сохранить | ||
53 | </button> | ||
54 | <a href="{{ route('admin.education.index') }}" | ||
55 | class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" | ||
56 | style="display: -webkit-inline-box; height: 30px!important;" | ||
57 | >Назад</a> | ||
58 | </div> | ||
59 | </div> | ||
60 | </div> | ||
61 | |||
62 | <script src="//cdn.ckeditor.com/4.14.0/standard/ckeditor.js"></script> | ||
63 | |||
64 | <!--<script src="{{ asset('./ckeditor/ckeditor.js') }}"></script>--> | ||
65 | <script> | ||
66 | CKEDITOR.replace( 'text', { | ||
67 | filebrowserUploadUrl: "{{route('ckeditor.image-upload', ['_token' => csrf_token() ])}}", | ||
68 | filebrowserImageUploadUrl: "{{ route('ckeditor.image-upload', ['_token' => csrf_token() ])}}", | ||
69 | filebrowserUploadMethod: 'form' | ||
70 | }); | ||
71 | </script> | ||
72 |
resources/views/admin/flot/test.blade.php
File was created | 1 | @csrf | |
2 | |||
3 | @isset($flot) | ||
4 | @method('PUT') | ||
5 | @endisset | ||
6 | |||
7 | <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"> | ||
8 | <input type="hidden" id="employer_id" name="employer_id" value="@isset($flot->employer_id) {{$flot->employer_id }} @else {{ $employer->id }} @endif"/> | ||
9 | <label class="block text-sm"> | ||
10 | <span class="text-gray-700 dark:text-gray-400">Название корабля</span> | ||
11 | <input name="name" id="name" | ||
12 | class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | ||
13 | placeholder="Название корабля" value="{{ old('name') ?? $flot->name ?? '' }}" | ||
14 | /> | ||
15 | @error('name') | ||
16 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
17 | {{ $message }} | ||
18 | </span> | ||
19 | @enderror | ||
20 | </label><br> | ||
21 | |||
22 | <label class="block text-sm"> | ||
23 | <span class="text-gray-700 dark:text-gray-400">Текст</span> | ||
24 | <textarea class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-textarea focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray ckeditor_" name="text" placeholder="Текст (html)" required | ||
25 | rows="10">{{ old('text') ?? $flot->text ?? '' }}</textarea> | ||
26 | @error('text') | ||
27 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
28 | {{ $message }} | ||
29 | </span> | ||
30 | @enderror | ||
31 | </label><br> | ||
32 | |||
33 | <label class="block text-sm"> | ||
34 | <span class="text-gray-700 dark:text-gray-400">Картинка</span> | ||
35 | <input type="file" class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 | ||
36 | focus:border-purple-400 focus:outline-none focus:shadow-outline-purple | ||
37 | dark:text-gray-300 dark:focus:shadow-outline-gray form-input" | ||
38 | id="image" name="image" accept="image/png, image/jpeg"> | ||
39 | @error('image') | ||
40 | <span class="text-xs text-red-600 dark:text-red-400"> | ||
41 | {{ $message }} | ||
42 | </span> | ||
43 | @enderror | ||
44 | @isset($flot->image) | ||
45 | <img src="{{asset(Storage::url($flot->image))}}" width="100px"/> | ||
46 | @endisset | ||
47 | </label><br> | ||
48 | |||
49 | <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> | ||
50 | <div> | ||
51 | <button type="submit" class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"> | ||
52 | Сохранить | ||
53 | </button> | ||
54 | <a href="{{ route('admin.education.index') }}" | ||
55 | class="px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-purple-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" | ||
56 | style="display: -webkit-inline-box; height: 30px!important;" | ||
57 | >Назад</a> | ||
58 | </div> | ||
59 | </div> | ||
60 | </div> | ||
61 | |||
62 | <script src="//cdn.ckeditor.com/4.14.0/standard/ckeditor.js"></script> | ||
63 | |||
64 | <!--<script src="{{ asset('./ckeditor/ckeditor.js') }}"></script>--> | ||
65 | <script> | ||
66 | CKEDITOR.replace( 'text', { | ||
67 | filebrowserUploadUrl: "{{route('ckeditor.image-upload', ['_token' => csrf_token() ])}}", | ||
68 | filebrowserImageUploadUrl: "{{ route('ckeditor.image-upload', ['_token' => csrf_token() ])}}", | ||
69 | filebrowserUploadMethod: 'form' | ||
70 | }); | ||
71 | </script> | ||
72 |
resources/views/ajax/companies.blade.php
File was created | 1 | <div class="main__employers-one"> | |
2 | @if ($emps->count()) | ||
3 | @foreach($emps as $emp) | ||
4 | <div class="main__employers-item"> | ||
5 | <span class="main__employers-item-inner"> | ||
6 | <img src="{{ asset(Storage::url($emp->logo)) }}" alt="{{ $emp->name_company }}" class="main__employers-item-pic"> | ||
7 | <span class="main__employers-item-body"> | ||
8 | <b>{{ $emp->name_company }}</b> | ||
9 | <i>{{ $emp->ads->count() }} вакансия(ий)</i> | ||
10 | </span> | ||
11 | </span> | ||
12 | <a href="{{ route('info_company', ['company' => $emp->id]) }}" class="button button_light main__employers-item-more">Подробнее</a> | ||
13 | |||
14 | @if ($emp->oficial_status == 1) | ||
15 | <span class="main__employers-item-label"> | ||
16 | <svg> | ||
17 | <use xlink:href="images/sprite.svg#v"></use> | ||
18 | </svg> | ||
19 | <span>Компания одобрена сервисом rekamore.su</span> | ||
20 | </span> | ||
21 | @endif | ||
22 | </div> | ||
23 | @endforeach | ||
24 | </div> | ||
25 | |||
26 | {{ $emps->appends($_GET)->links('paginate') }} | ||
27 | @else | ||
28 | <H2>Нет данных</H2> | ||
29 | @endif | ||
30 | |||
31 |
resources/views/ajax/companies2.blade.php
File was created | 1 | @if ($emps->count()) | |
2 | <div class="main__employers-two"> | ||
3 | @foreach($emps as $emp) | ||
4 | <div class="main__employers-item"> | ||
5 | <span class="main__employers-item-inner"> | ||
6 | <img src="{{ asset(Storage::url($emp->logo)) }}" alt="{{ $emp->name_company }}" class="main__employers-item-pic"> | ||
7 | <span class="main__employers-item-body"> | ||
8 | <b>{{ $emp->name_company }}</b> | ||
9 | <i>{{ $emp->ads->count() }} вакансия(ий)</i> | ||
10 | </span> | ||
11 | </span> | ||
12 | <a href="{{ route('info_company', ['company' => $emp->id]) }}" class="button button_light main__employers-item-more">Подробнее</a> | ||
13 | @if ($emp->oficial_status == 1) | ||
14 | <span class="main__employers-item-label"> | ||
15 | <svg> | ||
16 | <use xlink:href="{{ asset('images/sprite.svg#v') }}"></use> | ||
17 | </svg> | ||
18 | <span>Компания одобрена сервисом rekamore.su</span> | ||
19 | </span> | ||
20 | @endif | ||
21 | </div> | ||
22 | @endforeach | ||
23 | </div> | ||
24 | {{ $emps->appends($_GET)->links('paginate') }} | ||
25 | @else | ||
26 | <H2>Нет данных</H2> | ||
27 | @endif | ||
28 | |||
29 | |||
30 |
resources/views/ajax/list_vacancies.blade.php
File was created | 1 | @if ($Query->count()) | |
2 | @foreach ($Query as $Q) | ||
3 | <div class="main__vacancies-item main__employer-page-two-item"> | ||
4 | <a href="{{ route('list-vacancies', ['categories' => $categories->id]) }}" class="back main__employer-page-two-item-back"> | ||
5 | <svg> | ||
6 | <use xlink:href="{{ asset('images/sprite.svg#back') }}"></use> | ||
7 | </svg> | ||
8 | <span> | ||
9 | Вернуться к списку вакансий | ||
10 | </span> | ||
11 | </a> | ||
12 | <div class="main__employer-page-two-item-toper"> | ||
13 | @if (isset($Q->employer)) | ||
14 | <img src="{{ asset(Storage::url($Q->employer->logo)) }}" alt="{{ $Q->employer->name }}"> | ||
15 | @endif | ||
16 | <span>@if (!empty($Q->name)) {{ $Q->name }} @endif</span> | ||
17 | </div> | ||
18 | <div class="main__employer-page-two-item-text"> | ||
19 | <div class="main__employer-page-two-item-text-name">Судоходная компания ведет набор | ||
20 | специалистов на следующие должности:</div> | ||
21 | <div class="main__employer-page-two-item-text-links"> | ||
22 | @if (isset($Q->jobs)) | ||
23 | @foreach ($Q->jobs as $key => $j) | ||
24 | <a>“{{ $j->name }}” – з/п от @if (isset($Q->jobs_code[$key]->min_salary)) {{ $Q->jobs_code[$key]->min_salary }} @endif - @if (isset($Q->jobs_code[$key]->max_salary)) {{ $Q->jobs_code[$key]->max_salary }} @endif рублей (на руки)</a> | ||
25 | @endforeach | ||
26 | @endif | ||
27 | </div> | ||
28 | </div> | ||
29 | <div class="main__employer-page-two-item-text"> | ||
30 | <div class="main__employer-page-two-item-text-name">Мы предлагаем:</div> | ||
31 | <div class="main__employer-page-two-item-text-body"> | ||
32 | {!! $Q->text !!} | ||
33 | </div> | ||
34 | </div> | ||
35 | <div class="main__employer-page-two-item-text"> | ||
36 | <div class="main__employer-page-two-item-text-name">Наши ожидания:</div> | ||
37 | <div class="main__employer-page-two-item-text-body"> | ||
38 | {!! $Q->description !!} | ||
39 | </div> | ||
40 | </div> | ||
41 | <div class="main__employer-page-two-item-text"> | ||
42 | <div class="main__employer-page-two-item-text-name">Резюме направляйте на почту:</div> | ||
43 | <div class="main__employer-page-two-item-text-body"> | ||
44 | {!! $Q->contacts_emails !!} | ||
45 | </div> | ||
46 | </div> | ||
47 | <div class="main__employer-page-two-item-text"> | ||
48 | <div class="main__employer-page-two-item-text-name">Или звоните:</div> | ||
49 | <div class="main__employer-page-two-item-text-body"> | ||
50 | {!! $Q->contacts_telephones !!} | ||
51 | </div> | ||
52 | </div> | ||
53 | <div class="main__employer-page-two-item-tags"> | ||
54 | @if (isset($Q->jobs)) | ||
55 | @foreach ($Q->jobs as $key => $j) | ||
56 | <span class="main__employer-page-two-item-tag">#{{ $j->name }}</span> | ||
57 | @endforeach | ||
58 | @endif | ||
59 | </div> | ||
60 | <div class="main__employer-page-two-item-buttons"> | ||
61 | <button type="button" | ||
62 | class="button main__employer-page-two-item-button">Откликнуться</button> | ||
63 | <a href="{{ route('vacancie', ['vacancy' => $Q->id]) }}" class="button button_light main__employer-page-two-item-button">Подробнее</a> | ||
64 | </div> | ||
65 | <div class="main__employer-page-two-item-bottom"> | ||
66 | <div class="main__employer-page-two-item-bottom-date">{{ $Q->created_at }}</div> | ||
67 | <button type="button" class="like main__employer-page-two-item-bottom-like js-toggle"> | ||
68 | <svg> | ||
69 | <use xlink:href="{{ asset('images/sprite.svg#heart') }}"></use> | ||
70 | </svg> | ||
71 | </button> | ||
72 | </div> | ||
73 | </div> | ||
74 | @endforeach | ||
75 | <div style="margin-top: 20px"> | ||
76 | {{ $Query->appends($_GET)->links('paginate') }} | ||
77 | </div> | ||
78 | @else | ||
79 | <div class="main__vacancies-item main__employer-page-two-item"> | ||
80 | Нет вакансий по данному запросу | ||
81 | </div> | ||
82 | @endif | ||
83 |
resources/views/ajax/vacance-item.blade.php
resources/views/ajax/vacancies.blade.php
1 | @php $colors = Array('#F4C4C2', '#FBF1C8', '#ECFDEF', '#F3ECF6', '#ECFDEF'); | 1 | @php $colors = Array('#F4C4C2', '#FBF1C8', '#ECFDEF', '#F3ECF6', '#ECFDEF'); |
2 | $i = 0; | 2 | $i = 0; |
3 | @endphp | 3 | @endphp |
4 | @if ($categories->count()) | 4 | @if ($categories->count()) |
5 | @foreach ($categories as $cat) | 5 | @foreach ($categories as $cat) |
6 | <a href="#" class="vacancies__item"> | 6 | <a href="{{ route('list-vacancies', ['categories' => $cat->id]) }}" class="vacancies__item"> |
7 | <span style="border-color:{{$colors[$i]}}"> | 7 | <span style="border-color:{{$colors[$i]}}"> |
8 | <b>{{ $cat->name }}</b> | 8 | <b>{{ $cat->name }}</b> |
9 | <u>{{ $cat->min_salary }} — {{ $cat->max_salary }} ₽</u> | 9 | <u>{{ $cat->min_salary }} — {{ $cat->max_salary }} ₽</u> |
10 | <i>Вакансий: <span>{{ $cat->cnt }}</span></i> | 10 | <i>Вакансий: <span>{{ $cat->cnt }}</span></i> |
11 | </span> | 11 | </span> |
12 | </a> | 12 | </a> |
13 | @php $i++; | 13 | @php $i++; |
14 | if ($i > 4) {$i = 0;} | 14 | if ($i > 4) {$i = 0;} |
15 | @endphp | 15 | @endphp |
16 | @endforeach | 16 | @endforeach |
17 | @else | 17 | @else |
18 | Тут пока нет никаких вакансий | 18 | Тут пока нет никаких вакансий |
19 | @endif | 19 | @endif |
20 | 20 |
resources/views/companies.blade.php
File was created | 1 | @extends('layout.frontend', ['title' => 'Судоходные компании РекаМоре']) | |
2 | |||
3 | @section('scripts') | ||
4 | <script> | ||
5 | console.log('Test system'); | ||
6 | $(document).on('change', '#sort_ajax', function() { | ||
7 | var this_ = $(this); | ||
8 | var val_ = this_.val(); | ||
9 | console.log('sort items '+val_); | ||
10 | |||
11 | $.ajax({ | ||
12 | type: "GET", | ||
13 | url: "{{ route('shipping_companies') }}", | ||
14 | data: "sort="+val_+"&block=1", | ||
15 | success: function (data) { | ||
16 | console.log('Выбор сортировки'); | ||
17 | console.log(data); | ||
18 | $('#block_1').html(data); | ||
19 | }, | ||
20 | headers: { | ||
21 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | ||
22 | }, | ||
23 | error: function (data) { | ||
24 | data = JSON.stringify(data); | ||
25 | console.log('Error: ' + data); | ||
26 | } | ||
27 | }); | ||
28 | |||
29 | $.ajax({ | ||
30 | type: "GET", | ||
31 | url: "{{ route('shipping_companies') }}", | ||
32 | data: "sort="+val_+"&block=2", | ||
33 | success: function (data) { | ||
34 | console.log('Выбор сортировки2'); | ||
35 | console.log(data); | ||
36 | history.pushState({}, '', "{{ route('shipping_companies') }}?sort="+val_+"@if (isset($_GET['page']))&page={{ $_GET['page'] }}@endif"); | ||
37 | $('#block_2').html(data); | ||
38 | }, | ||
39 | headers: { | ||
40 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | ||
41 | }, | ||
42 | error: function (data) { | ||
43 | data = JSON.stringify(data); | ||
44 | console.log('Error: ' + data); | ||
45 | } | ||
46 | }); | ||
47 | }); | ||
48 | |||
49 | $(document).ready(function(){ | ||
50 | var sel = $('#select2-sort_ajax-container'); | ||
51 | var key = getUrlParameter('sort'); | ||
52 | |||
53 | if (key !=='') { | ||
54 | console.log(key); | ||
55 | switch (key) { | ||
56 | case "default": sel.html('Сортировка (по умолчанию)'); break; | ||
57 | case "name_up": sel.html('По имени (возрастание)'); break; | ||
58 | case "name_down": sel.html('По дате (убывание)'); break; | ||
59 | case "created_at_up": sel.html('По дате (возрастание)'); break; | ||
60 | case "created_at_down": sel.html('По дате (убывание)'); break; | ||
61 | } | ||
62 | |||
63 | } | ||
64 | }); | ||
65 | </script> | ||
66 | @endsection | ||
67 | |||
68 | @section('content') | ||
69 | <section class="thing"> | ||
70 | <div class="container"> | ||
71 | <form class="thing__body"> | ||
72 | @csrf | ||
73 | <ul class="breadcrumbs thing__breadcrumbs"> | ||
74 | <li><a href="{{ route('index') }}">Главная</a></li> | ||
75 | <li><b>Работодатели</b></li> | ||
76 | </ul> | ||
77 | <h1 class="thing__title">Работодатели</h1> | ||
78 | <p class="thing__text">С другой стороны, социально-экономическое развитие не оставляет шанса для | ||
79 | существующих финансовых и административных условий.</p> | ||
80 | <div class="search thing__search"> | ||
81 | <input type="search" id="search" name="search" class="input" value="{{ (isset($_GET['search'])) ? $_GET['search'] : '' }}" placeholder="Введите наименование работодателя" required> | ||
82 | <button type="submit" class="button">Найти</button> | ||
83 | <span> | ||
84 | <svg> | ||
85 | <use xlink:href="{{ asset('images/sprite.svg#search') }}"></use> | ||
86 | </svg> | ||
87 | </span> | ||
88 | </div> | ||
89 | </form> | ||
90 | </div> | ||
91 | </section> | ||
92 | <main class="main"> | ||
93 | <div class="container"> | ||
94 | <div class="main__employers"> | ||
95 | <div class="filters"> | ||
96 | <div class="filters__label">Показано @if ($count_emps < 4) 1 - {{ $count_emps }} @else 1 – 4 @endif из {{ $count_emps }} результатов поиска</div> | ||
97 | <div class="filters__body"> | ||
98 | <div class="select filters__select"> | ||
99 | <select class="js-select2" id="sort_ajax" name="sort_ajax"> | ||
100 | <option value="default">Сортировка (по умолчанию)</option> | ||
101 | <option value="name_up">По имени (возрастание)</option> | ||
102 | <option value="name_down">По имени (убывание)</option> | ||
103 | <option value="created_at_up">По дате (возрастание)</option> | ||
104 | <option value="created_at_down">По дате (убывание)</option> | ||
105 | </select> | ||
106 | </div> | ||
107 | <button type="button" class="filters__item active" data-tab="1"> | ||
108 | <svg> | ||
109 | <use xlink:href="{{ asset('images/sprite.svg#grid-1') }}"></use> | ||
110 | </svg> | ||
111 | </button> | ||
112 | <button type="button" class="filters__item" data-tab="2"> | ||
113 | <svg> | ||
114 | <use xlink:href="{{ asset('images/sprite.svg#grid-2') }}"></use> | ||
115 | </svg> | ||
116 | </button> | ||
117 | </div> | ||
118 | </div> | ||
119 | <div class="main__employers-body showed" data-body="1" id="block_1" name="block_1"> | ||
120 | <div class="main__employers-one"> | ||
121 | @if ($emps->count()) | ||
122 | @foreach($emps as $emp) | ||
123 | <div class="main__employers-item"> | ||
124 | <span class="main__employers-item-inner"> | ||
125 | <img src="{{ asset(Storage::url($emp->logo)) }}" alt="{{ $emp->name_company }}" class="main__employers-item-pic"> | ||
126 | <span class="main__employers-item-body"> | ||
127 | <b>{{ $emp->name_company }}</b> | ||
128 | <i>{{ $emp->ads->count() }} вакансия(ий)</i> | ||
129 | </span> | ||
130 | </span> | ||
131 | <a href="{{ route('info_company', ['company' => $emp->id]) }}" class="button button_light main__employers-item-more">Подробнее</a> | ||
132 | |||
133 | @if ($emp->oficial_status == 1) | ||
134 | <span class="main__employers-item-label"> | ||
135 | <svg> | ||
136 | <use xlink:href="images/sprite.svg#v"></use> | ||
137 | </svg> | ||
138 | <span>Компания одобрена сервисом rekamore.su</span> | ||
139 | </span> | ||
140 | @endif | ||
141 | </div> | ||
142 | @endforeach | ||
143 | </div> | ||
144 | |||
145 | {{ $emps->appends($_GET)->links('paginate') }} | ||
146 | @else | ||
147 | <H2>Нет данных</H2> | ||
148 | @endif | ||
149 | </div> | ||
150 | <div class="main__employers-body" data-body="2" id="block_2" name="block_2"> | ||
151 | @if ($emps->count()) | ||
152 | <div class="main__employers-two"> | ||
153 | @foreach($emps as $emp) | ||
154 | <div class="main__employers-item"> | ||
155 | <span class="main__employers-item-inner"> | ||
156 | <img src="{{ asset(Storage::url($emp->logo)) }}" alt="{{ $emp->name_company }}" class="main__employers-item-pic"> | ||
157 | <span class="main__employers-item-body"> | ||
158 | <b>{{ $emp->name_company }}</b> | ||
159 | <i>{{ $emp->ads->count() }} вакансия(ий)</i> | ||
160 | </span> | ||
161 | </span> | ||
162 | <a href="{{ route('info_company', ['company' => $emp->id]) }}" class="button button_light main__employers-item-more">Подробнее</a> | ||
163 | @if ($emp->oficial_status == 1) | ||
164 | <span class="main__employers-item-label"> | ||
165 | <svg> | ||
166 | <use xlink:href="{{ asset('images/sprite.svg#v') }}"></use> | ||
167 | </svg> | ||
168 | <span>Компания одобрена сервисом rekamore.su</span> | ||
169 | </span> | ||
170 | @endif | ||
171 | </div> | ||
172 | @endforeach | ||
173 | </div> | ||
174 | {{ $emps->appends($_GET)->links('paginate') }} | ||
175 | @else | ||
176 | <H2>Нет данных</H2> | ||
177 | @endif | ||
178 | </div> | ||
179 | </div> | ||
180 | </div> | ||
181 | </main> | ||
182 | @endsection | ||
183 |
resources/views/contacts.blade.php
File was created | 1 | @extends('layout.frontend', ['title' => 'Образование и образовательные программы - РекаМоре']) | |
2 | |||
3 | @section('scripts') | ||
4 | <script> | ||
5 | console.log('Test system'); | ||
6 | $(document).on('change', '#sort_ajax', function() { | ||
7 | var this_ = $(this); | ||
8 | var val_ = this_.val(); | ||
9 | console.log('sort items '+val_); | ||
10 | |||
11 | $.ajax({ | ||
12 | type: "GET", | ||
13 | url: "{{ route('shipping_companies') }}", | ||
14 | data: "sort="+val_+"&block=1", | ||
15 | success: function (data) { | ||
16 | console.log('Выбор сортировки'); | ||
17 | console.log(data); | ||
18 | $('#block_1').html(data); | ||
19 | }, | ||
20 | headers: { | ||
21 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | ||
22 | }, | ||
23 | error: function (data) { | ||
24 | data = JSON.stringify(data); | ||
25 | console.log('Error: ' + data); | ||
26 | } | ||
27 | }); | ||
28 | |||
29 | $.ajax({ | ||
30 | type: "GET", | ||
31 | url: "{{ route('shipping_companies') }}", | ||
32 | data: "sort="+val_+"&block=2", | ||
33 | success: function (data) { | ||
34 | console.log('Выбор сортировки2'); | ||
35 | console.log(data); | ||
36 | history.pushState({}, '', "{{ route('shipping_companies') }}?sort="+val_+"@if (isset($_GET['page']))&page={{ $_GET['page'] }}@endif"); | ||
37 | $('#block_2').html(data); | ||
38 | }, | ||
39 | headers: { | ||
40 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | ||
41 | }, | ||
42 | error: function (data) { | ||
43 | data = JSON.stringify(data); | ||
44 | console.log('Error: ' + data); | ||
45 | } | ||
46 | }); | ||
47 | }); | ||
48 | </script> | ||
49 | @endsection | ||
50 | |||
51 | @section('content') | ||
52 | <section class="thing"> | ||
53 | <div class="container"> | ||
54 | <div class="thing__body"> | ||
55 | <ul class="breadcrumbs thing__breadcrumbs"> | ||
56 | <li><a href="{{ route('index') }}">Главная</a></li> | ||
57 | <li><b>Контакты</b></li> | ||
58 | </ul> | ||
59 | <img src="{{ asset('images/14.jpg') }}" alt="" class="thing__pic thing__pic_two"> | ||
60 | <h1 class="thing__title">Мы специализированная доска объявлений для поиска плавсостава</h1> | ||
61 | <p class="thing__text">Нашим сервисом пользуются более 120 судоходных компаний России.</p> | ||
62 | <p class="thing__text">Со списком компаний Вы можете ознакомиться перейдя по кнопке ниже.</p> | ||
63 | <div class="thing__buttons"> | ||
64 | <a href="{{ route('shipping_companies') }}" class="button">Список компаний</a> | ||
65 | </div> | ||
66 | </div> | ||
67 | </div> | ||
68 | </section> | ||
69 | |||
70 | <main class="main"> | ||
71 | <div class="container"> | ||
72 | <div class="main__cond"> | ||
73 | <div class="main__cond-label"> | ||
74 | На рынке мы с 2020 года. | ||
75 | <br>Мы молодая компания, которой важно сделать хороший и востребованный продукт! | ||
76 | </div> | ||
77 | <div> | ||
78 | <h3>За это время нам удалось:</h3> | ||
79 | <ul class="main__cond-icons"> | ||
80 | <li> | ||
81 | <span><img src="{{ asset('images/svg/1.svg') }}" alt=""></span> | ||
82 | Создать самое крупное сообщество Вконтакте по поиску работы на речноми морском флоте | ||
83 | </li> | ||
84 | <li> | ||
85 | <span><img src="{{ asset('images/svg/2.svg') }}" alt=""></span> | ||
86 | Создать самый крупный телеграм канал по поиску работы на речноми морском флоте | ||
87 | </li> | ||
88 | <li> | ||
89 | <span><img src="{{ asset('images/svg/3.svg') }}" alt=""></span> | ||
90 | Создать действительно эффективную и удобную базу анкет | ||
91 | </li> | ||
92 | <li> | ||
93 | <span><img src="{{ asset('images/svg/4.svg') }} " alt=""></span> | ||
94 | Разместить свою рекламу во многих учебных заведениях нашей страны. Колледжи,вузы, утц, медицинские центры охотно размещают нашу рекламу в своих заведениях | ||
95 | </li> | ||
96 | <li> | ||
97 | <span><img src="{{ asset('images/svg/5.svg') }}" alt=""></span> | ||
98 | Подключить к нашему сервису более 120 судоходных компаний России | ||
99 | </li> | ||
100 | <li> | ||
101 | <span><img src="{{ asset('images/svg/6.svg') }}" alt=""></span> | ||
102 | Оправдать доверие и ожидание, так как компании заключившие с нами договорв первый раз в 95% случаев остаются довольны сотрудничеством и продлевают договор | ||
103 | </li> | ||
104 | </ul> | ||
105 | </div> | ||
106 | <div> | ||
107 | <h3>Форма обратной связи</h3> | ||
108 | <p>Все поля обязательны для заполнения.</p> | ||
109 | <form class="callback main__cond-callback" action="" method="GET"> | ||
110 | <div class="callback__body"> | ||
111 | <input type="text" class="input" id="name" name="name" placeholder="Ваше имя" required> | ||
112 | <input type="text" class="input" id="company" name="company" placeholder="Название судоходной компании" required> | ||
113 | <input type="tel" class="input" id="telephone" name="telephone" placeholder="Телефон" required> | ||
114 | <input type="email" class="input" id="email" name="email" placeholder="Электронная почта" required> | ||
115 | </div> | ||
116 | <textarea class="textarea callback__textarea" id="text" name="text" placeholder="Текст сообщения" required></textarea> | ||
117 | <div class="callback__bottom"> | ||
118 | <label class="checkbox"> | ||
119 | <input type="checkbox" class="checkbox__input" id="box" name="box" required> | ||
120 | <span class="checkbox__icon"> | ||
121 | <svg> | ||
122 | <use xlink:href="{{ asset('images/sprite.svg#v') }}"></use> | ||
123 | </svg> | ||
124 | </span> | ||
125 | <span class="checkbox__text"> | ||
126 | <span> | ||
127 | Я согласен(на) с | ||
128 | <a href="{{ route('page', ['pages' => "Politika-konfidencialnosti"]) }}">Политикой конфиденциальности</a> | ||
129 | </span> | ||
130 | </span> | ||
131 | </label> | ||
132 | <button type="submit" class="button">Отправить</button> | ||
133 | </div> | ||
134 | </form> | ||
135 | </div> | ||
136 | </div> | ||
137 | </div> | ||
138 | </main> | ||
139 | </div> | ||
140 | @endsection | ||
141 |
resources/views/education.blade.php
File was created | 1 | @extends('layout.frontend', ['title' => 'Образование и образовательные программы - РекаМоре']) | |
2 | |||
3 | @section('scripts') | ||
4 | <script> | ||
5 | console.log('Test system'); | ||
6 | $(document).on('change', '#sort_ajax', function() { | ||
7 | var this_ = $(this); | ||
8 | var val_ = this_.val(); | ||
9 | console.log('sort items '+val_); | ||
10 | |||
11 | $.ajax({ | ||
12 | type: "GET", | ||
13 | url: "{{ route('shipping_companies') }}", | ||
14 | data: "sort="+val_+"&block=1", | ||
15 | success: function (data) { | ||
16 | console.log('Выбор сортировки'); | ||
17 | console.log(data); | ||
18 | $('#block_1').html(data); | ||
19 | }, | ||
20 | headers: { | ||
21 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | ||
22 | }, | ||
23 | error: function (data) { | ||
24 | data = JSON.stringify(data); | ||
25 | console.log('Error: ' + data); | ||
26 | } | ||
27 | }); | ||
28 | |||
29 | $.ajax({ | ||
30 | type: "GET", | ||
31 | url: "{{ route('shipping_companies') }}", | ||
32 | data: "sort="+val_+"&block=2", | ||
33 | success: function (data) { | ||
34 | console.log('Выбор сортировки2'); | ||
35 | console.log(data); | ||
36 | history.pushState({}, '', "{{ route('shipping_companies') }}?sort="+val_+"@if (isset($_GET['page']))&page={{ $_GET['page'] }}@endif"); | ||
37 | $('#block_2').html(data); | ||
38 | }, | ||
39 | headers: { | ||
40 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | ||
41 | }, | ||
42 | error: function (data) { | ||
43 | data = JSON.stringify(data); | ||
44 | console.log('Error: ' + data); | ||
45 | } | ||
46 | }); | ||
47 | }); | ||
48 | |||
49 | $(document).ready(function(){ | ||
50 | var sel = $('#select2-sort_ajax-container'); | ||
51 | var key = getUrlParameter('sort'); | ||
52 | |||
53 | if (key !=='') { | ||
54 | console.log(key); | ||
55 | switch (key) { | ||
56 | case "default": sel.html('Сортировка (по умолчанию)'); break; | ||
57 | case "name_up": sel.html('По имени (возрастание)'); break; | ||
58 | case "name_down": sel.html('По дате (убывание)'); break; | ||
59 | case "created_at_up": sel.html('По дате (возрастание)'); break; | ||
60 | case "created_at_down": sel.html('По дате (убывание)'); break; | ||
61 | } | ||
62 | |||
63 | } | ||
64 | }); | ||
65 | </script> | ||
66 | @endsection | ||
67 | |||
68 | @section('content') | ||
69 | <section class="thing"> | ||
70 | <div class="container"> | ||
71 | <form class="thing__body" active="{{ route('education') }}"> | ||
72 | <ul class="breadcrumbs thing__breadcrumbs"> | ||
73 | <li><a href="{{ route('index') }}">Главная</a></li> | ||
74 | <li><b>Образование</b></li> | ||
75 | </ul> | ||
76 | <h1 class="thing__title">Образование</h1> | ||
77 | <p class="thing__text">Прежде всего, современная методология разработки представляет собой интересный эксперимент проверки направлений прогрессивного развития.</p> | ||
78 | <div class="search thing__search"> | ||
79 | <input type="search" class="input" id="search" name="search" placeholder="Введите наименование работодателя" value="@if (!empty($_GET['search'])) {{ $_GET['search'] }} @endif"> | ||
80 | <button type="submit" class="button">Найти</button> | ||
81 | <span> | ||
82 | <svg> | ||
83 | <use xlink:href="{{ asset('images/sprite.svg#search') }}"></use> | ||
84 | </svg> | ||
85 | </span> | ||
86 | </div> | ||
87 | </form> | ||
88 | </div> | ||
89 | </section> | ||
90 | <main class="main"> | ||
91 | <div class="container"> | ||
92 | <div class="filters"> | ||
93 | <div class="filters__label">Показано 1 – @if($count_edu < 6) {{ $count_edu }}@else 6 @endif из {{ $count_edu }} результатов поиска</div> | ||
94 | <div class="filters__body"> | ||
95 | <div class="select filters__select"> | ||
96 | <select class="js-select2" id="sort_ajax" name="sort_ajax"> | ||
97 | <option value="default">Сортировка (по умолчанию)</option> | ||
98 | <option value="name_up">По имени (возрастание)</option> | ||
99 | <option value="name_down">По имени (убывание)</option> | ||
100 | <option value="created_at_up">По дате (возрастание)</option> | ||
101 | <option value="created_at_down">По дате (убывание)</option> | ||
102 | </select> | ||
103 | </div> | ||
104 | </div> | ||
105 | </div> | ||
106 | @if ($educations->count()) | ||
107 | <div class="main__ads"> | ||
108 | @foreach($educations as $edu) | ||
109 | <div class="main__ads-item"> | ||
110 | <div class="main__ads-item-pic"> | ||
111 | <img src="@if (!empty($edu->image)) {{ asset(Storage::url($edu->image)) }} @else {{ asset('images/education.jpg') }} @endif" alt="{{ $edu->name }}"> | ||
112 | <span> | ||
113 | <svg> | ||
114 | <use xlink:href="{{ asset('images/sprite.svg#v') }}"></use> | ||
115 | </svg> | ||
116 | </span> | ||
117 | </div> | ||
118 | <div class="main__ads-item-body"> | ||
119 | <b>{{ $edu->name }}</b> | ||
120 | <span>{{ $edu->program_education->count() }} учебных направлений</span> | ||
121 | <a href="" class="button button_light">Читать далее</a> | ||
122 | </div> | ||
123 | </div> | ||
124 | @endforeach | ||
125 | |||
126 | </div> | ||
127 | {{ $educations->appends($_GET)->links('paginate') }} | ||
128 | @else | ||
129 | <H2>Нет данных</H2> | ||
130 | @endif | ||
131 | <!--<div class="pagination"> | ||
132 | <a href="#" class="pagination__nav pagination__nav_prev"> | ||
133 | <svg> | ||
134 | <use xlink:href="images/sprite.svg#arrow-bold"></use> | ||
135 | </svg> | ||
136 | </a> | ||
137 | <span class="pagination__item active">1</span> | ||
138 | <a href="#" class="pagination__item">2</a> | ||
139 | <a href="#" class="pagination__item">3</a> | ||
140 | <a href="#" class="pagination__item">4</a> | ||
141 | <a href="#" class="pagination__item">5</a> | ||
142 | <span class="pagination__dots"> | ||
143 | <svg> | ||
144 | <use xlink:href="images/sprite.svg#dots"></use> | ||
145 | </svg> | ||
146 | </span> | ||
147 | <a href="#" class="pagination__item">25</a> | ||
148 | <a href="#" class="pagination__nav pagination__nav_next"> | ||
149 | <svg> | ||
150 | <use xlink:href="images/sprite.svg#arrow-bold"></use> | ||
151 | </svg> | ||
152 | </a> | ||
153 | </div>--> | ||
154 | </div> | ||
155 | </main> | ||
156 | </div> | ||
157 | @endsection | ||
158 |
resources/views/info_company.blade.php
File was created | 1 | @extends('layout.frontend', ['title' => 'Описание компании '.$title.'- РекаМоре']) | |
2 | |||
3 | @section('scripts') | ||
4 | <script> | ||
5 | console.log('Test system'); | ||
6 | $(document).on('change', '#sort_ajax', function() { | ||
7 | var this_ = $(this); | ||
8 | var val_ = this_.val(); | ||
9 | console.log('sort items '+val_); | ||
10 | |||
11 | $.ajax({ | ||
12 | type: "GET", | ||
13 | url: "{{ route('shipping_companies') }}", | ||
14 | data: "sort="+val_+"&block=1", | ||
15 | success: function (data) { | ||
16 | console.log('Выбор сортировки'); | ||
17 | console.log(data); | ||
18 | $('#block_1').html(data); | ||
19 | }, | ||
20 | headers: { | ||
21 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | ||
22 | }, | ||
23 | error: function (data) { | ||
24 | data = JSON.stringify(data); | ||
25 | console.log('Error: ' + data); | ||
26 | } | ||
27 | }); | ||
28 | |||
29 | $.ajax({ | ||
30 | type: "GET", | ||
31 | url: "{{ route('shipping_companies') }}", | ||
32 | data: "sort="+val_+"&block=2", | ||
33 | success: function (data) { | ||
34 | console.log('Выбор сортировки2'); | ||
35 | console.log(data); | ||
36 | history.pushState({}, '', "{{ route('shipping_companies') }}?sort="+val_+"@if (isset($_GET['page']))&page={{ $_GET['page'] }}@endif"); | ||
37 | $('#block_2').html(data); | ||
38 | }, | ||
39 | headers: { | ||
40 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | ||
41 | }, | ||
42 | error: function (data) { | ||
43 | data = JSON.stringify(data); | ||
44 | console.log('Error: ' + data); | ||
45 | } | ||
46 | }); | ||
47 | }); | ||
48 | |||
49 | $(document).ready(function(){ | ||
50 | var sel = $('#select2-sort_ajax-container'); | ||
51 | var key = getUrlParameter('sort'); | ||
52 | |||
53 | if (key !=='') { | ||
54 | console.log(key); | ||
55 | switch (key) { | ||
56 | case "default": sel.html('Сортировка (по умолчанию)'); break; | ||
57 | case "name_up": sel.html('По имени (возрастание)'); break; | ||
58 | case "name_down": sel.html('По дате (убывание)'); break; | ||
59 | case "created_at_up": sel.html('По дате (возрастание)'); break; | ||
60 | case "created_at_down": sel.html('По дате (убывание)'); break; | ||
61 | } | ||
62 | |||
63 | } | ||
64 | }); | ||
65 | </script> | ||
66 | @endsection | ||
67 | |||
68 | @section('content') | ||
69 | <section class="thing"> | ||
70 | <div class="container"> | ||
71 | <div class="thing__body"> | ||
72 | <ul class="breadcrumbs thing__breadcrumbs"> | ||
73 | <li><a href="{{ route('index') }}">Главная</a></li> | ||
74 | <li><a href="{{ route('shipping_companies') }}">Работодатели</a></li> | ||
75 | <li><b>@isset($title) {{ $title }} @else Не указано @endif</b></li> | ||
76 | </ul> | ||
77 | @if ($company[0]->oficial_status == 1) | ||
78 | <div class="thing__badge"> | ||
79 | <svg> | ||
80 | <use xlink:href="{{ asset('images/sprite.svg#badge') }}"></use> | ||
81 | </svg> | ||
82 | Компания проверена | ||
83 | </div> | ||
84 | @endif | ||
85 | |||
86 | <img src="{{ asset(Storage::url($company[0]->logo)) }}" alt="{{ $company[0]->name_company }}" class="thing__pic"> | ||
87 | <h1 class="thing__title">{{ $company[0]->name_company }}</h1> | ||
88 | <p class="thing__text">{{ $company[0]->text }}</p> | ||
89 | <div class="thing__buttons"> | ||
90 | <button type="button" class="button"> | ||
91 | <svg> | ||
92 | <use xlink:href="{{ asset('images/sprite.svg#grid-1') }}"></use> | ||
93 | </svg> | ||
94 | {{ $company[0]->ads->count() }} вакансии | ||
95 | </button> | ||
96 | <a href="" class="button"> | ||
97 | Написать сообщение | ||
98 | </a> | ||
99 | </div> | ||
100 | </div> | ||
101 | </div> | ||
102 | </section> | ||
103 | <main class="main"> | ||
104 | <div class="container"> | ||
105 | <div class="main__employer-page"> | ||
106 | <h2 class="main__employer-page-title">О компании</h2> | ||
107 | <div class="main__employer-page-info"> | ||
108 | <div class="main__employer-page-item"> | ||
109 | <b>Адрес компании</b> | ||
110 | <span> | ||
111 | {{ $company[0]->address }} | ||
112 | </span> | ||
113 | </div> | ||
114 | <div class="main__employer-page-item"> | ||
115 | <b>Сайт</b> | ||
116 | <span> | ||
117 | <a href="{{ $company[0]->site }}">{{ $company[0]->site }}</a> | ||
118 | </span> | ||
119 | </div> | ||
120 | <div class="main__employer-page-item"> | ||
121 | <b>Почта</b> | ||
122 | <span> | ||
123 | <a href="mailto:">{{ $company[0]->email }}</a> | ||
124 | </span> | ||
125 | </div> | ||
126 | <div class="main__employer-page-item"> | ||
127 | <b>Телефон</b> | ||
128 | <span> | ||
129 | <a href="tel:{{ $company[0]->telephone }}">{{ $company[0]->telephone }}</a> | ||
130 | </span> | ||
131 | </div> | ||
132 | </div> | ||
133 | <div class="main__employer-page-item"> | ||
134 | <b>Описание</b> | ||
135 | <span> | ||
136 | {{ $company[0]->text }} | ||
137 | </span> | ||
138 | </div> | ||
139 | <div> | ||
140 | <div class="main__employer-page-tabs"> | ||
141 | <button type="button" class="main__employer-page-tabs-item active" | ||
142 | data-tab="1">Флот</button> | ||
143 | <button type="button" class="main__employer-page-tabs-item" data-tab="2">Вакансии</button> | ||
144 | </div> | ||
145 | <div class="main__employer-page-body"> | ||
146 | <div class="main__employer-page-body-item showed" data-body="1"> | ||
147 | <div class="main__employer-page-one"> | ||
148 | @if ($company[0]->flots->count()) | ||
149 | @foreach ($company[0]->flots as $flot) | ||
150 | <a href="" class="main__employer-page-one-item"> | ||
151 | <img src="{{ asset(Storage::url($flot->image)) }}" alt="{{ $flot->name }}"> | ||
152 | <b>{{ $flot->region }}</b> | ||
153 | <span>{{ $flot->power }}</span> | ||
154 | </a> | ||
155 | @endforeach | ||
156 | @endif | ||
157 | </div> | ||
158 | </div> | ||
159 | |||
160 | <div class="main__employer-page-body-item" data-body="2"> | ||
161 | <div class="main__employer-page-two"> | ||
162 | @foreach ($company[0]->ads as $job) | ||
163 | @foreach ($job->ad_job as $item) | ||
164 | <div class="main__employer-page-two-item"> | ||
165 | <div class="main__employer-page-two-item-toper"> | ||
166 | <!-- end --> | ||
167 | <img src="{{ asset(Storage::url($company[0]->logo)) }}" alt="{{ $job->name }}"> | ||
168 | <span>{{ $job->name }}</span> | ||
169 | </div> | ||
170 | <div class="main__employer-page-two-item-title">{{ $item->flot }}</div> | ||
171 | <div class="main__employer-page-two-item-text"> | ||
172 | <div class="main__employer-page-two-item-text-name"> | ||
173 | {{ $item->job_title->name }} | ||
174 | </div> | ||
175 | <div class="main__employer-page-two-item-text-body"> | ||
176 | <p>Зарплата:{{ $item->min_salary }} - {{ $item->max_salary }}р + {{ $item->sytki }} суточные.</p> | ||
177 | <p>Контракт: {{ $item->period }} мес.</p> | ||
178 | </div> | ||
179 | </div> | ||
180 | <div class="main__employer-page-two-item-text"> | ||
181 | <div class="main__employer-page-two-item-text-name">Район работы</div> | ||
182 | <div class="main__employer-page-two-item-text-body"> | ||
183 | <p>{{ $item->region }}</p> | ||
184 | </div> | ||
185 | </div> | ||
186 | <div class="main__employer-page-two-item-text"> | ||
187 | <div class="main__employer-page-two-item-text-name">Посадка</div> | ||
188 | <div class="main__employer-page-two-item-text-body"> | ||
189 | <p> {{ $item->start }}</p> | ||
190 | {!! $item->description !!} | ||
191 | </div> | ||
192 | </div> | ||
193 | <div class="main__employer-page-two-item-text"> | ||
194 | <div class="main__employer-page-two-item-text-name">Звонить по вопросам на: | ||
195 | </div> | ||
196 | <div class="main__employer-page-two-item-text-body"> | ||
197 | <a href="tel:{{ $job->telephone }}">{{ $job->telephone }}</a> | ||
198 | </div> | ||
199 | </div> | ||
200 | <div class="main__employer-page-two-item-text"> | ||
201 | <div class="main__employer-page-two-item-text-name">Анкеты присылать на | ||
202 | почту: | ||
203 | </div> | ||
204 | <div class="main__employer-page-two-item-text-body"> | ||
205 | <a href="mailto: {{ $job->email }}">{{ $job->email }}</a> | ||
206 | </div> | ||
207 | </div> | ||
208 | <div class="main__employer-page-two-item-tags"> | ||
209 | <span class="main__employer-page-two-item-tag">#{{ $item->job_title->name }}</span> | ||
210 | </div> | ||
211 | <div class="main__employer-page-two-item-buttons"> | ||
212 | <button type="button" | ||
213 | class="button main__employer-page-two-item-button">Оставить | ||
214 | отклик</button> | ||
215 | <a href="#" | ||
216 | class="button button_light main__employer-page-two-item-button">Подробнее</a> | ||
217 | </div> | ||
218 | <div class="main__employer-page-two-item-bottom"> | ||
219 | <div class="main__employer-page-two-item-bottom-date">{{ $job->updated_at }}</div> | ||
220 | <button type="button" | ||
221 | class="like main__employer-page-two-item-bottom-like js-toggle"> | ||
222 | <svg> | ||
223 | <use xlink:href="{{ asset('images/sprite.svg#heart') }}"></use> | ||
224 | </svg> | ||
225 | </button> | ||
226 | </div> | ||
227 | </div> | ||
228 | @endforeach | ||
229 | @endforeach | ||
230 | <button type="button" | ||
231 | class="button button_light button_more main__employer-page-two-more js-toggle js-parent-toggle"> | ||
232 | <span>Показать ещё</span> | ||
233 | <span>Скрыть</span> | ||
234 | </button> | ||
235 | </div> | ||
236 | </div> | ||
237 | </div> | ||
238 | </div> | ||
239 | </div> | ||
240 | </div> | ||
241 | </main> | ||
242 | @endsection | ||
243 |
resources/views/layout/frontend-page.blade.php
File was created | 1 | <!DOCTYPE html> | |
2 | <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> | ||
3 | |||
4 | <head> | ||
5 | <meta charset="utf-8"> | ||
6 | <title>{{ $title }}</title> | ||
7 | <meta name="viewport" content="width=device-width,initial-scale=1"> | ||
8 | <meta name="theme-color" content="#377D87"> | ||
9 | <link rel="stylesheet" href="{{ asset('css/news/style.css') }}"> | ||
10 | </head> | ||
11 | |||
12 | <body id="body"> | ||
13 | <a href="#body" class="to-top js-scroll-to"> | ||
14 | <svg> | ||
15 | <use xlink:href="{{ asset('images/sprite.svg#arrow-top') }}"></use> | ||
16 | </svg> | ||
17 | </a> | ||
18 | |||
19 | <div> <!-- BEGIN TOP WRAPPER --> | ||
20 | <header class="header"> | ||
21 | <div class="container"> | ||
22 | <div class="header__body"> | ||
23 | <div class="header__left"> | ||
24 | <a href="{{ route('index') }}" class="header__logo"> | ||
25 | <svg> | ||
26 | <use xlink:href="{{ asset('images/sprite.svg#logo') }}"></use> | ||
27 | </svg> | ||
28 | </a> | ||
29 | <nav class="header__menu"> | ||
30 | <a href="{{ route('vacancies') }}" class="header__menu-item">Вакансии</a> | ||
31 | <a href="{{ route('shipping_companies') }}" class="header__menu-item">Судоходные компании</a> | ||
32 | <a href="{{ route('education') }}" class="header__menu-item">Образование</a> | ||
33 | </nav> | ||
34 | </div> | ||
35 | <div class="header__right"> | ||
36 | <button class="header__notifs header__notifs_actived"> | ||
37 | <svg> | ||
38 | <use xlink:href="{{ asset('images/sprite.svg#ring') }}"></use> | ||
39 | </svg> | ||
40 | <span>Уведомления</span> | ||
41 | </button> | ||
42 | <div class="header__right-line"></div> | ||
43 | <button class="header__burger"> | ||
44 | <svg> | ||
45 | <use xlink:href="{{ asset('images/sprite.svg#burger') }}"></use> | ||
46 | </svg> | ||
47 | </button> | ||
48 | @guest | ||
49 | <a class="button header__sign" href="{{ route('login') }}">Войти</a> | ||
50 | @else | ||
51 | <a class="button header__sign" href="{{ route('logout') }}">Выйти</a> | ||
52 | @endguest | ||
53 | </div> | ||
54 | </div> | ||
55 | </div> | ||
56 | </header> | ||
57 | |||
58 | <section class="thing"> | ||
59 | <div class="container"> | ||
60 | <div class="thing__body"> | ||
61 | <ul class="breadcrumbs thing__breadcrumbs"> | ||
62 | <li><a href="{{ route('index') }}">Главная</a></li> | ||
63 | <li><b>{{ $title }}</b></li> | ||
64 | </ul> | ||
65 | <img src="{{ asset('images/14.jpg') }}" alt="" class="thing__pic thing__pic_two"> | ||
66 | <h1 class="thing__title">{{ $title }}</h1> | ||
67 | <p class="thing__text">{{ $description }}</p> | ||
68 | </div> | ||
69 | </div> | ||
70 | </section> | ||
71 | |||
72 | @yield('content') | ||
73 | |||
74 | </div> <!-- END TOP WRAPPER --> | ||
75 | |||
76 | <div> <!-- BEGIN BOTTOM WRAPPER --> | ||
77 | <footer class="footer"> | ||
78 | <div class="container"> | ||
79 | <div class="footer__mobile"> | ||
80 | <button class="footer__mobile-toper js-toggle active"> | ||
81 | <a href="{{ route('index') }}"> | ||
82 | <svg> | ||
83 | <use xlink:href="{{ asset('images/sprite.svg#logo') }}"></use> | ||
84 | </svg> | ||
85 | </a> | ||
86 | <span> | ||
87 | <svg> | ||
88 | <use xlink:href="{{ asset('images/sprite.svg#arrow-top') }}"></use> | ||
89 | </svg> | ||
90 | </span> | ||
91 | </button> | ||
92 | <div class="footer__mobile-menu"> | ||
93 | <div class="footer__mobile-menu-item"> | ||
94 | <button class="js-toggle"> | ||
95 | <b>Соискателям</b> | ||
96 | <span><svg> | ||
97 | <use xlink:href="{{ asset('images/sprite.svg#arrow-top') }}"></use> | ||
98 | </svg></span> | ||
99 | </button> | ||
100 | <div> | ||
101 | <a href="{{ route('vacancies') }}">Вакансии</a> | ||
102 | <a href="{{ route('if_public') }}">Условия размещения</a> | ||
103 | <a href="{{ route('education') }}">Образование</a> | ||
104 | <a href="{{ route('news') }}">Новости</a> | ||
105 | <a href="{{ route('contacts') }}">Контакты</a> | ||
106 | <a href="{{ route('public_offer') }}">Публичная оферта</a> | ||
107 | </div> | ||
108 | </div> | ||
109 | <div class="footer__mobile-menu-item"> | ||
110 | <button class="js-toggle"> | ||
111 | <b>Работодателям</b> | ||
112 | <span><svg> | ||
113 | <use xlink:href="{{asset('images/sprite.svg#arrow-top') }}"></use> | ||
114 | </svg></span> | ||
115 | </button> | ||
116 | <div> | ||
117 | <a href="{{ route('register') }}">Регистрация</a> | ||
118 | <a href="{{ route('bd_resume') }}">База резюме</a> | ||
119 | <a href="{{ route('cost_public_employer') }}">Стоимость размещения</a> | ||
120 | <a href="{{ route('instruction') }}">Инструкции</a> | ||
121 | <a href="{{ route('effective_note') }}">Эффективность объявления</a> | ||
122 | <a href="{{ route('public_offer_emp') }}">Публичная оферта</a> | ||
123 | </div> | ||
124 | </div> | ||
125 | </div> | ||
126 | <div class="footer__mobile-contacts"> | ||
127 | <b>Контакты</b> | ||
128 | <a href="tel:{{ $companies[0]->telephone }}">{{ $companies[0]->telephone }}</a> | ||
129 | <a href="mailto:{{ $companies[0]->email }}">{{ $companies[0]->email }}</a> | ||
130 | </div> | ||
131 | <div class="footer__mobile-bottom"> | ||
132 | <div class="socials"> | ||
133 | <a href="{{ $companies[0]->vkontact }}" target="_blank"> | ||
134 | <svg> | ||
135 | <use xlink:href="{{ asset('images/sprite.svg#vk') }}"></use> | ||
136 | </svg> | ||
137 | </a> | ||
138 | <a href="{{ $companies[0]->telegram }}" target="_blank"> | ||
139 | <svg> | ||
140 | <use xlink:href="{{ asset('images/sprite.svg#tg') }}"></use> | ||
141 | </svg> | ||
142 | </a> | ||
143 | </div> | ||
144 | <nav class="footer__mobile-links"> | ||
145 | <a href="{{ route('private_policy') }}">Политика конфиденциальности</a> | ||
146 | <span></span> | ||
147 | <a href="{{ route('terms_of_use') }}">Пользовательское соглашение</a> | ||
148 | </nav> | ||
149 | © 2023 — RekaMore.su | ||
150 | <a href="{{ route('index') }}" class="nls" target="_blank"> | ||
151 | <svg> | ||
152 | <use xlink:href="{{ asset('images/sprite.svg#nls') }}"></use> | ||
153 | </svg> | ||
154 | <span> | ||
155 | Дизайн и разработка: | ||
156 | <b>NoLogoStudio.ru</b> | ||
157 | </span> | ||
158 | </a> | ||
159 | </div> | ||
160 | </div> | ||
161 | <div class="footer__main"> | ||
162 | <div class="footer__main-body"> | ||
163 | <a href="" class="footer__main-logo"> | ||
164 | <svg> | ||
165 | <use xlink:href="{{ asset('images/sprite.svg#logo') }}"></use> | ||
166 | </svg> | ||
167 | </a> | ||
168 | <div class="footer__main-col"> | ||
169 | <div class="footer__main-title">Соискателям</div> | ||
170 | <nav> | ||
171 | <a href="{{ route('vacancies') }}">Вакансии</a> | ||
172 | <a href="{{ route('if_public') }}">Условия размещения</a> | ||
173 | <a href="{{ route('education') }}">Образование</a> | ||
174 | <a href="{{ route('news') }}">Новости</a> | ||
175 | <a href="{{ route('contacts') }}">Контакты</a> | ||
176 | <a href="{{ route('public_offer') }}">Публичная оферта</a> | ||
177 | </nav> | ||
178 | </div> | ||
179 | <div class="footer__main-col"> | ||
180 | <div class="footer__main-title">Работодателям</div> | ||
181 | <nav> | ||
182 | <a href="{{ route('register') }}">Регистрация</a> | ||
183 | <a href="{{ route('bd_resume') }}">База резюме</a> | ||
184 | <a href="{{ route('cost_public_employer') }}">Стоимость размещения</a> | ||
185 | <a href="{{ route('instruction') }}">Инструкции</a> | ||
186 | <a href="{{ route('effective_note') }}">Эффективность объявления</a> | ||
187 | <a href="{{ route('public_offer_emp') }}">Публичная оферта</a> | ||
188 | </nav> | ||
189 | </div> | ||
190 | |||
191 | <div class="footer__main-col"> | ||
192 | <div class="footer__main-title">Контакты</div> | ||
193 | <div class="footer__main-contacts"> | ||
194 | <a href="tel:{{ $companies[0]->telephone }}">{{ $companies[0]->telephone }}</a> | ||
195 | <a href="mailto:{{ $companies[0]->email }}">{{ $companies[0]->email }}</a> | ||
196 | </div> | ||
197 | <div class="socials"> | ||
198 | <a href="{{ $companies[0]->vkontact }}" target="_blank"> | ||
199 | <svg> | ||
200 | <use xlink:href="{{ asset('images/sprite.svg#vk') }}"></use> | ||
201 | </svg> | ||
202 | </a> | ||
203 | <a href="{{ $companies[0]->telegram }}" target="_blank"> | ||
204 | <svg> | ||
205 | <use xlink:href="{{ asset('images/sprite.svg#tg') }}"></use> | ||
206 | </svg> | ||
207 | </a> | ||
208 | </div> | ||
209 | </div> | ||
210 | </div> | ||
211 | <div class="footer__main-copy"> | ||
212 | <div>© 2023 — RekaMore.su</div> | ||
213 | <nav> | ||
214 | <a href="{{ route('private_policy') }}">Политика конфиденциальности</a> | ||
215 | <span></span> | ||
216 | <a href="{{ route('terms_of_use') }}">Пользовательское соглашение</a> | ||
217 | </nav> | ||
218 | <a href="{{ route('index') }}" class="nls" target="_blank"> | ||
219 | <svg> | ||
220 | <use xlink:href="{{ asset('images/sprite.svg#nls') }}"></use> | ||
221 | </svg> | ||
222 | <span> | ||
223 | Дизайн и разработка: | ||
224 | <b>NoLogoStudio.ru</b> | ||
225 | </span> | ||
226 | </a> | ||
227 | </div> | ||
228 | </div> | ||
229 | </div> | ||
230 | </footer> | ||
231 | </div> <!-- END BOTTOM WRAPPER --> | ||
232 | |||
233 | <div hidden> <!-- BEGIN MODALS WRAPPER --> | ||
234 | <div class="modal"> | ||
235 | modal | ||
236 | </div> | ||
237 | </div> <!-- END MODALS WRAPPER --> | ||
238 | |||
239 | <script src="{{ asset('js/jquery.js') }}"></script> | ||
240 | <script src="{{ asset('js/jquery.maskedinput.js') }}"></script> | ||
241 | <script src="{{ asset('js/jquery.fancybox.js') }}"></script> | ||
242 | <script src="{{ asset('js/jquery.select2.js') }}"></script> | ||
243 | <script src="{{ asset('js/swiper.js') }}"></script> | ||
244 | <script src="{{ asset('js/script.js') }}"></script> | ||
245 | <script> | ||
246 | var getUrlParameter = function getUrlParameter(sParam) { | ||
247 | var sPageURL = decodeURIComponent(window.location.search.substring(1)), | ||
248 | sURLVariables = sPageURL.split('&'), | ||
249 | sParameterName, | ||
250 | i; | ||
251 | for (i = 0; i < sURLVariables.length; i++) { | ||
252 | sParameterName = sURLVariables[i].split('='); | ||
253 | if (sParameterName[0] === sParam) { | ||
254 | return sParameterName[1] === undefined ? true : sParameterName[1]; | ||
255 | } | ||
256 | } | ||
257 | }; | ||
258 | </script> | ||
259 | @yield('scripts') | ||
260 | </body> | ||
261 | </html> | ||
262 |
resources/views/layout/frontend.blade.php
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> | 2 | <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> |
3 | 3 | ||
4 | <head> | 4 | <head> |
5 | <meta charset="utf-8"> | 5 | <meta charset="utf-8"> |
6 | <title>{{ $title }}</title> | 6 | <title>{{ $title }}</title> |
7 | <meta name="viewport" content="width=device-width,initial-scale=1"> | 7 | <meta name="viewport" content="width=device-width,initial-scale=1"> |
8 | <meta name="theme-color" content="#377D87"> | 8 | <meta name="theme-color" content="#377D87"> |
9 | <link rel="stylesheet" href="{{ asset('css/news/style.css') }}"> | 9 | <link rel="stylesheet" href="{{ asset('css/news/style.css') }}"> |
10 | </head> | 10 | </head> |
11 | 11 | ||
12 | <body id="body"> | 12 | <body id="body"> |
13 | <a href="#body" class="to-top js-scroll-to"> | 13 | <a href="#body" class="to-top js-scroll-to"> |
14 | <svg> | 14 | <svg> |
15 | <use xlink:href="{{ asset('images/sprite.svg#arrow-top') }}"></use> | 15 | <use xlink:href="{{ asset('images/sprite.svg#arrow-top') }}"></use> |
16 | </svg> | 16 | </svg> |
17 | </a> | 17 | </a> |
18 | 18 | ||
19 | <div> <!-- BEGIN TOP WRAPPER --> | 19 | <div> <!-- BEGIN TOP WRAPPER --> |
20 | <header class="header"> | 20 | <header class="header"> |
21 | <div class="container"> | 21 | <div class="container"> |
22 | <div class="header__body"> | 22 | <div class="header__body"> |
23 | <div class="header__left"> | 23 | <div class="header__left"> |
24 | <a href="{{ route('index') }}" class="header__logo"> | 24 | <a href="{{ route('index') }}" class="header__logo"> |
25 | <svg> | 25 | <svg> |
26 | <use xlink:href="{{ asset('images/sprite.svg#logo') }}"></use> | 26 | <use xlink:href="{{ asset('images/sprite.svg#logo') }}"></use> |
27 | </svg> | 27 | </svg> |
28 | </a> | 28 | </a> |
29 | <nav class="header__menu"> | 29 | <nav class="header__menu"> |
30 | <a href="{{ route('vacancies') }}" class="header__menu-item">Вакансии</a> | 30 | <a href="{{ route('vacancies') }}" class="header__menu-item">Вакансии</a> |
31 | <a href="{{ route('shipping_companies') }}" class="header__menu-item">Судоходные компании</a> | 31 | <a href="{{ route('shipping_companies') }}" class="header__menu-item">Судоходные компании</a> |
32 | <a href="{{ route('education') }}" class="header__menu-item">Образование</a> | 32 | <a href="{{ route('education') }}" class="header__menu-item">Образование</a> |
33 | </nav> | 33 | </nav> |
34 | </div> | 34 | </div> |
35 | <div class="header__right"> | 35 | <div class="header__right"> |
36 | <button class="header__notifs header__notifs_actived"> | 36 | <button class="header__notifs header__notifs_actived"> |
37 | <svg> | 37 | <svg> |
38 | <use xlink:href="{{ asset('images/sprite.svg#ring') }}"></use> | 38 | <use xlink:href="{{ asset('images/sprite.svg#ring') }}"></use> |
39 | </svg> | 39 | </svg> |
40 | <span>Уведомления</span> | 40 | <span>Уведомления</span> |
41 | </button> | 41 | </button> |
42 | <div class="header__right-line"></div> | 42 | <div class="header__right-line"></div> |
43 | <button class="header__burger"> | 43 | <button class="header__burger"> |
44 | <svg> | 44 | <svg> |
45 | <use xlink:href="{{ asset('images/sprite.svg#burger') }}"></use> | 45 | <use xlink:href="{{ asset('images/sprite.svg#burger') }}"></use> |
46 | </svg> | 46 | </svg> |
47 | </button> | 47 | </button> |
48 | @guest | 48 | @guest |
49 | <a class="button header__sign" href="{{ route('login') }}">Войти</a> | 49 | <a class="button header__sign" href="{{ route('login') }}">Войти</a> |
50 | @else | 50 | @else |
51 | <a class="button header__sign" href="{{ route('logout') }}">Выйти</a> | 51 | <a class="button header__sign" href="{{ route('logout') }}">Выйти</a> |
52 | @endguest | 52 | @endguest |
53 | </div> | 53 | </div> |
54 | </div> | 54 | </div> |
55 | </div> | 55 | </div> |
56 | </header> | 56 | </header> |
57 | @yield('content') | 57 | @yield('content') |
58 | 58 | ||
59 | </div> <!-- END TOP WRAPPER --> | 59 | </div> <!-- END TOP WRAPPER --> |
60 | 60 | ||
61 | <div> <!-- BEGIN BOTTOM WRAPPER --> | 61 | <div> <!-- BEGIN BOTTOM WRAPPER --> |
62 | <footer class="footer"> | 62 | <footer class="footer"> |
63 | <div class="container"> | 63 | <div class="container"> |
64 | <div class="footer__mobile"> | 64 | <div class="footer__mobile"> |
65 | <button class="footer__mobile-toper js-toggle active"> | 65 | <button class="footer__mobile-toper js-toggle active"> |
66 | <a href="{{ route('index') }}"> | 66 | <a href="{{ route('index') }}"> |
67 | <svg> | 67 | <svg> |
68 | <use xlink:href="{{ asset('images/sprite.svg#logo') }}"></use> | 68 | <use xlink:href="{{ asset('images/sprite.svg#logo') }}"></use> |
69 | </svg> | 69 | </svg> |
70 | </a> | 70 | </a> |
71 | <span> | 71 | <span> |
72 | <svg> | 72 | <svg> |
73 | <use xlink:href="{{ asset('images/sprite.svg#arrow-top') }}"></use> | 73 | <use xlink:href="{{ asset('images/sprite.svg#arrow-top') }}"></use> |
74 | </svg> | 74 | </svg> |
75 | </span> | 75 | </span> |
76 | </button> | 76 | </button> |
77 | <div class="footer__mobile-menu"> | 77 | <div class="footer__mobile-menu"> |
78 | <div class="footer__mobile-menu-item"> | 78 | <div class="footer__mobile-menu-item"> |
79 | <button class="js-toggle"> | 79 | <button class="js-toggle"> |
80 | <b>Соискателям</b> | 80 | <b>Соискателям</b> |
81 | <span><svg> | 81 | <span><svg> |
82 | <use xlink:href="{{ asset('images/sprite.svg#arrow-top') }}"></use> | 82 | <use xlink:href="{{ asset('images/sprite.svg#arrow-top') }}"></use> |
83 | </svg></span> | 83 | </svg></span> |
84 | </button> | 84 | </button> |
85 | <div> | 85 | <div> |
86 | <a href="{{ route('vacancies') }}">Вакансии</a> | 86 | <a href="{{ route('vacancies') }}">Вакансии</a> |
87 | <a href="{{ route('if_public') }}">Условия размещения</a> | 87 | <a href="{{ route('page', ['pages' => "Usloviya-razmescheniya"]) }}">Условия размещения</a> |
88 | <a href="{{ route('education') }}">Образование</a> | 88 | <a href="{{ route('education') }}">Образование</a> |
89 | <a href="{{ route('news') }}">Новости</a> | 89 | <a href="{{ route('news') }}">Новости</a> |
90 | <a href="{{ route('contacts') }}">Контакты</a> | 90 | <a href="{{ route('contacts') }}">Контакты</a> |
91 | <a href="{{ route('public_offer') }}">Публичная оферта</a> | 91 | <a href="{{ route('page', ['pages' => "Publichnaya-oferta-soiskatelyam"]) }}">Публичная оферта</a> |
92 | </div> | 92 | </div> |
93 | </div> | 93 | </div> |
94 | <div class="footer__mobile-menu-item"> | 94 | <div class="footer__mobile-menu-item"> |
95 | <button class="js-toggle"> | 95 | <button class="js-toggle"> |
96 | <b>Работодателям</b> | 96 | <b>Работодателям</b> |
97 | <span><svg> | 97 | <span><svg> |
98 | <use xlink:href="{{asset('images/sprite.svg#arrow-top') }}"></use> | 98 | <use xlink:href="{{asset('images/sprite.svg#arrow-top') }}"></use> |
99 | </svg></span> | 99 | </svg></span> |
100 | </button> | 100 | </button> |
101 | <div> | 101 | <div> |
102 | <a href="{{ route('register') }}">Регистрация</a> | 102 | <a href="{{ route('register') }}">Регистрация</a> |
103 | <a href="{{ route('bd_resume') }}">База резюме</a> | 103 | <a href="{{ route('bd_resume') }}">База резюме</a> |
104 | <a href="{{ route('cost_public_employer') }}">Стоимость размещения</a> | 104 | <a href="{{ route('page', ['pages' => "Stoimost-razmescheniya"]) }}">Стоимость размещения</a> |
105 | <a href="{{ route('instruction') }}">Инструкции</a> | 105 | <a href="{{ route('page', ['pages' => "Instrukcii"]) }}">Инструкции</a> |
106 | <a href="{{ route('effective_note') }}">Эффективность объявления</a> | 106 | <a href="{{ route('page', ['pages' => "Effektivnost-obyavleniya"]) }}">Эффективность объявления</a> |
107 | <a href="{{ route('public_offer_emp') }}">Публичная оферта</a> | 107 | <a href="{{ route('page', ['pages' => "Publichnaya-oferta-rabotodatelyam"]) }}">Публичная оферта</a> |
108 | </div> | 108 | </div> |
109 | </div> | 109 | </div> |
110 | </div> | 110 | </div> |
111 | <div class="footer__mobile-contacts"> | 111 | <div class="footer__mobile-contacts"> |
112 | <b>Контакты</b> | 112 | <b>Контакты</b> |
113 | <a href="tel:{{ $companies[0]->telephone }}">{{ $companies[0]->telephone }}</a> | 113 | <a href="tel:{{ $companies[0]->telephone }}">{{ $companies[0]->telephone }}</a> |
114 | <a href="mailto:{{ $companies[0]->email }}">{{ $companies[0]->email }}</a> | 114 | <a href="mailto:{{ $companies[0]->email }}">{{ $companies[0]->email }}</a> |
115 | </div> | 115 | </div> |
116 | <div class="footer__mobile-bottom"> | 116 | <div class="footer__mobile-bottom"> |
117 | <div class="socials"> | 117 | <div class="socials"> |
118 | <a href="{{ $companies[0]->vkontact }}" target="_blank"> | 118 | <a href="{{ $companies[0]->vkontact }}" target="_blank"> |
119 | <svg> | 119 | <svg> |
120 | <use xlink:href="{{ asset('images/sprite.svg#vk') }}"></use> | 120 | <use xlink:href="{{ asset('images/sprite.svg#vk') }}"></use> |
121 | </svg> | 121 | </svg> |
122 | </a> | 122 | </a> |
123 | <a href="{{ $companies[0]->telegram }}" target="_blank"> | 123 | <a href="{{ $companies[0]->telegram }}" target="_blank"> |
124 | <svg> | 124 | <svg> |
125 | <use xlink:href="{{ asset('images/sprite.svg#tg') }}"></use> | 125 | <use xlink:href="{{ asset('images/sprite.svg#tg') }}"></use> |
126 | </svg> | 126 | </svg> |
127 | </a> | 127 | </a> |
128 | </div> | 128 | </div> |
129 | <nav class="footer__mobile-links"> | 129 | <nav class="footer__mobile-links"> |
130 | <a href="{{ route('private_policy') }}">Политика конфиденциальности</a> | 130 | <a href="{{ route('page', ['pages' => "Politika-konfidencialnosti"]) }}">Политика конфиденциальности</a> |
131 | <span></span> | 131 | <span></span> |
132 | <a href="{{ route('terms_of_use') }}">Пользовательское соглашение</a> | 132 | <a href="{{ route('page', ['pages' => "Polzovatelskoe-soglashenie"]) }}">Пользовательское соглашение</a> |
133 | </nav> | 133 | </nav> |
134 | © 2023 — RekaMore.su | 134 | © 2023 — RekaMore.su |
135 | <a href="{{ route('index') }}" class="nls" target="_blank"> | 135 | <a href="{{ route('index') }}" class="nls" target="_blank"> |
136 | <svg> | 136 | <svg> |
137 | <use xlink:href="{{ asset('images/sprite.svg#nls') }}"></use> | 137 | <use xlink:href="{{ asset('images/sprite.svg#nls') }}"></use> |
138 | </svg> | 138 | </svg> |
139 | <span> | 139 | <span> |
140 | Дизайн и разработка: | 140 | Дизайн и разработка: |
141 | <b>NoLogoStudio.ru</b> | 141 | <b>NoLogoStudio.ru</b> |
142 | </span> | 142 | </span> |
143 | </a> | 143 | </a> |
144 | </div> | 144 | </div> |
145 | </div> | 145 | </div> |
146 | <div class="footer__main"> | 146 | <div class="footer__main"> |
147 | <div class="footer__main-body"> | 147 | <div class="footer__main-body"> |
148 | <a href="" class="footer__main-logo"> | 148 | <a href="" class="footer__main-logo"> |
149 | <svg> | 149 | <svg> |
150 | <use xlink:href="{{ asset('images/sprite.svg#logo') }}"></use> | 150 | <use xlink:href="{{ asset('images/sprite.svg#logo') }}"></use> |
151 | </svg> | 151 | </svg> |
152 | </a> | 152 | </a> |
153 | <div class="footer__main-col"> | 153 | <div class="footer__main-col"> |
154 | <div class="footer__main-title">Соискателям</div> | 154 | <div class="footer__main-title">Соискателям</div> |
155 | <nav> | 155 | <nav> |
156 | <a href="{{ route('vacancies') }}">Вакансии</a> | 156 | <a href="{{ route('vacancies') }}">Вакансии</a> |
157 | <a href="{{ route('if_public') }}">Условия размещения</a> | 157 | <a href="{{ route('page', ['pages' => "Usloviya-razmescheniya"]) }}">Условия размещения</a> |
158 | <a href="{{ route('education') }}">Образование</a> | 158 | <a href="{{ route('education') }}">Образование</a> |
159 | <a href="{{ route('news') }}">Новости</a> | 159 | <a href="{{ route('news') }}">Новости</a> |
160 | <a href="{{ route('contacts') }}">Контакты</a> | 160 | <a href="{{ route('contacts') }}">Контакты</a> |
161 | <a href="{{ route('public_offer') }}">Публичная оферта</a> | 161 | <a href="{{ route('page', ['pages' => "Publichnaya-oferta-soiskatelyam"]) }}">Публичная оферта</a> |
162 | </nav> | 162 | </nav> |
163 | </div> | 163 | </div> |
164 | <div class="footer__main-col"> | 164 | <div class="footer__main-col"> |
165 | <div class="footer__main-title">Работодателям</div> | 165 | <div class="footer__main-title">Работодателям</div> |
166 | <nav> | 166 | <nav> |
167 | <a href="{{ route('register') }}">Регистрация</a> | 167 | <a href="{{ route('register') }}">Регистрация</a> |
168 | <a href="{{ route('bd_resume') }}">База резюме</a> | 168 | <a href="{{ route('bd_resume') }}">База резюме</a> |
169 | <a href="{{ route('cost_public_employer') }}">Стоимость размещения</a> | 169 | <a href="{{ route('page', ['pages' => "Stoimost-razmescheniya"]) }}">Стоимость размещения</a> |
170 | <a href="{{ route('instruction') }}">Инструкции</a> | 170 | <a href="{{ route('page', ['pages' => "Instrukcii"]) }}">Инструкции</a> |
171 | <a href="{{ route('effective_note') }}">Эффективность объявления</a> | 171 | <a href="{{ route('page', ['pages' => "Effektivnost-obyavleniya"]) }}">Эффективность объявления</a> |
172 | <a href="{{ route('public_offer_emp') }}">Публичная оферта</a> | 172 | <a href="{{ route('page', ['pages' => "Publichnaya-oferta-rabotodatelyam"]) }}">Публичная оферта</a> |
173 | </nav> | 173 | </nav> |
174 | </div> | 174 | </div> |
175 | 175 | ||
176 | <div class="footer__main-col"> | 176 | <div class="footer__main-col"> |
177 | <div class="footer__main-title">Контакты</div> | 177 | <div class="footer__main-title">Контакты</div> |
178 | <div class="footer__main-contacts"> | 178 | <div class="footer__main-contacts"> |
179 | <a href="tel:{{ $companies[0]->telephone }}">{{ $companies[0]->telephone }}</a> | 179 | <a href="tel:{{ $companies[0]->telephone }}">{{ $companies[0]->telephone }}</a> |
180 | <a href="mailto:{{ $companies[0]->email }}">{{ $companies[0]->email }}</a> | 180 | <a href="mailto:{{ $companies[0]->email }}">{{ $companies[0]->email }}</a> |
181 | </div> | 181 | </div> |
182 | <div class="socials"> | 182 | <div class="socials"> |
183 | <a href="{{ $companies[0]->vkontact }}" target="_blank"> | 183 | <a href="{{ $companies[0]->vkontact }}" target="_blank"> |
184 | <svg> | 184 | <svg> |
185 | <use xlink:href="{{ asset('images/sprite.svg#vk') }}"></use> | 185 | <use xlink:href="{{ asset('images/sprite.svg#vk') }}"></use> |
186 | </svg> | 186 | </svg> |
187 | </a> | 187 | </a> |
188 | <a href="{{ $companies[0]->telegram }}" target="_blank"> | 188 | <a href="{{ $companies[0]->telegram }}" target="_blank"> |
189 | <svg> | 189 | <svg> |
190 | <use xlink:href="{{ asset('images/sprite.svg#tg') }}"></use> | 190 | <use xlink:href="{{ asset('images/sprite.svg#tg') }}"></use> |
191 | </svg> | 191 | </svg> |
192 | </a> | 192 | </a> |
193 | </div> | 193 | </div> |
194 | </div> | 194 | </div> |
195 | </div> | 195 | </div> |
196 | <div class="footer__main-copy"> | 196 | <div class="footer__main-copy"> |
197 | <div>© 2023 — RekaMore.su</div> | 197 | <div>© 2023 — RekaMore.su</div> |
198 | <nav> | 198 | <nav> |
199 | <a href="{{ route('private_policy') }}">Политика конфиденциальности</a> | 199 | <a href="{{ route('page', ['pages' => "Politika-konfidencialnosti"]) }}">Политика конфиденциальности</a> |
200 | <span></span> | 200 | <span></span> |
201 | <a href="{{ route('terms_of_use') }}">Пользовательское соглашение</a> | 201 | <a href="{{ route('page', ['pages' => "Polzovatelskoe-soglashenie"]) }}">Пользовательское соглашение</a> |
202 | </nav> | 202 | </nav> |
203 | <a href="{{ route('index') }}" class="nls" target="_blank"> | 203 | <a href="{{ route('index') }}" class="nls" target="_blank"> |
204 | <svg> | 204 | <svg> |
205 | <use xlink:href="{{ asset('images/sprite.svg#nls') }}"></use> | 205 | <use xlink:href="{{ asset('images/sprite.svg#nls') }}"></use> |
206 | </svg> | 206 | </svg> |
207 | <span> | 207 | <span> |
208 | Дизайн и разработка: | 208 | Дизайн и разработка: |
209 | <b>NoLogoStudio.ru</b> | 209 | <b>NoLogoStudio.ru</b> |
210 | </span> | 210 | </span> |
211 | </a> | 211 | </a> |
212 | </div> | 212 | </div> |
213 | </div> | 213 | </div> |
214 | </div> | 214 | </div> |
215 | </footer> | 215 | </footer> |
216 | </div> <!-- END BOTTOM WRAPPER --> | 216 | </div> <!-- END BOTTOM WRAPPER --> |
217 | 217 | ||
218 | <div hidden> <!-- BEGIN MODALS WRAPPER --> | 218 | <div hidden> <!-- BEGIN MODALS WRAPPER --> |
219 | <div class="modal"> | 219 | <div class="modal"> |
220 | modal | 220 | modal |
221 | </div> | 221 | </div> |
222 | </div> <!-- END MODALS WRAPPER --> | 222 | </div> <!-- END MODALS WRAPPER --> |
223 | 223 | ||
224 | <script src="{{ asset('js/jquery.js') }}"></script> | 224 | <script src="{{ asset('js/jquery.js') }}"></script> |
225 | <script src="{{ asset('js/jquery.maskedinput.js') }}"></script> | 225 | <script src="{{ asset('js/jquery.maskedinput.js') }}"></script> |
226 | <script src="{{ asset('js/jquery.fancybox.js') }}"></script> | 226 | <script src="{{ asset('js/jquery.fancybox.js') }}"></script> |
227 | <script src="{{ asset('js/jquery.select2.js') }}"></script> | 227 | <script src="{{ asset('js/jquery.select2.js') }}"></script> |
228 | <script src="{{ asset('js/swiper.js') }}"></script> | 228 | <script src="{{ asset('js/swiper.js') }}"></script> |
229 | <script src="{{ asset('js/script.js') }}"></script> | 229 | <script src="{{ asset('js/script.js') }}"></script> |
230 | 230 | <script> | |
231 | var getUrlParameter = function getUrlParameter(sParam) { | ||
232 | var sPageURL = decodeURIComponent(window.location.search.substring(1)), | ||
233 | sURLVariables = sPageURL.split('&'), | ||
234 | sParameterName, | ||
235 | i; | ||
236 | for (i = 0; i < sURLVariables.length; i++) { | ||
237 | sParameterName = sURLVariables[i].split('='); | ||
238 | if (sParameterName[0] === sParam) { | ||
239 | return sParameterName[1] === undefined ? true : sParameterName[1]; | ||
240 | } | ||
241 | } | ||
242 | }; | ||
243 | </script> | ||
231 | @yield('scripts') | 244 | @yield('scripts') |
232 | </body> | 245 | </body> |
233 | </html> | 246 | </html> |
234 | 247 |
resources/views/list_vacancies.blade.php
1 | @extends('layout.frontend', ['title' => 'Вакансии РекаМоре']) | 1 | @extends('layout.frontend', ['title' => 'Вакансии РекаМоре']) |
2 | 2 | ||
3 | @section('scripts') | 3 | @section('scripts') |
4 | <script> | 4 | <script> |
5 | console.log('Test system'); | 5 | console.log('Test system'); |
6 | $(document).on('change', '.jobs', function() { | 6 | $(document).on('change', '#jobs', function() { |
7 | var val = $(this).val(); | 7 | var val = $(this).val(); |
8 | var main_oskar = $('#main_ockar'); | ||
8 | 9 | ||
10 | console.log('Code='+val); | ||
9 | console.log('Click change...'); | 11 | console.log('Click change...'); |
10 | $.ajax({ | 12 | $.ajax({ |
11 | type: "GET", | 13 | type: "GET", |
12 | url: "{{ route('vacancies') }}", | 14 | url: "{{ route('list-vacancies', ['categories' => $categories->id]) }}", |
13 | data: "job="+val, | 15 | data: "job="+val, |
14 | success: function (data) { | 16 | success: function (data) { |
15 | console.log('Выбор должности'); | 17 | console.log('Выбор сделан!'); |
16 | console.log(data); | 18 | console.log(data); |
17 | $('#block_ajax').html(data); | 19 | main_oskar.html(data); |
18 | }, | 20 | }, |
19 | headers: { | 21 | headers: { |
20 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | 22 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') |
21 | }, | 23 | }, |
22 | error: function (data) { | 24 | error: function (data) { |
23 | data = JSON.stringify(data); | 25 | data = JSON.stringify(data); |
24 | console.log('Error: ' + data); | 26 | console.log('Error: ' + data); |
25 | } | 27 | } |
26 | }); | 28 | }); |
27 | }); | 29 | }); |
28 | </script> | 30 | </script> |
29 | @endsection | 31 | @endsection |
30 | |||
31 | @section('content') | 32 | @section('content') |
32 | <section class="thing"> | 33 | <section class="thing"> |
33 | <div class="container"> | 34 | <div class="container"> |
34 | <form class="thing__body"> | 35 | <form class="thing__body"> |
35 | <ul class="breadcrumbs thing__breadcrumbs"> | 36 | <ul class="breadcrumbs thing__breadcrumbs"> |
36 | <li><a href="{{ route('index') }}">Главная</a></li> | 37 | <li><a href="{{ route('index') }}">Главная</a></li> |
37 | <li><a href="{{ route('vacancies') }}">Вакансии</a></li> | 38 | <li><a href="{{ route('vacancies') }}">Вакансии</a></li> |
38 | <li><b>{{ isset($Name_categori) ? $Name_categori : 'Все категории' }}</b></li> | 39 | <li><b>{{ isset($Name_categori[0]) ? $Name_categori[0]->name : 'Все категории' }}</b></li> |
39 | </ul> | 40 | </ul> |
40 | <h1 class="thing__title">Вакансии</h1> | 41 | <h1 class="thing__title">Вакансии</h1> |
41 | <p class="thing__text">С другой стороны, социально-экономическое развитие не оставляет шанса для | 42 | <p class="thing__text">С другой стороны, социально-экономическое развитие не оставляет шанса для |
42 | существующих финансовых и административных условий.</p> | 43 | существующих финансовых и административных условий.</p> |
43 | <div class="select select_search thing__select"> | 44 | <div class="select select_search thing__select"> |
44 | <div class="select__icon"> | 45 | <div class="select__icon"> |
45 | <svg> | 46 | <svg> |
46 | <use xlink:href="images/sprite.svg#search"></use> | 47 | <use xlink:href="{{ asset('images/sprite.svg#search') }}"></use> |
47 | </svg> | 48 | </svg> |
48 | </div> | 49 | </div> |
49 | <select class="js-select2" id="jobs" name="jobs"> | 50 | <select class="js-select2" id="jobs" name="jobs"> |
50 | <option value="0" disabled selected>Выберите должность</option> | 51 | <option value="0" disabled selected>Выберите должность</option> |
51 | @if ($Job_title->count()) | 52 | @if ($Job_title->count()) |
52 | @foreach($Job_title as $JT) | 53 | @foreach($Job_title as $JT) |
53 | <option value="{{ $JT->id }}">{{ $JT->name }}</option> | 54 | <option value="{{ $JT->id }}">{{ $JT->name }}</option> |
54 | @endforeach | 55 | @endforeach |
55 | @endif | 56 | @endif |
56 | </select> | 57 | </select> |
57 | </div> | 58 | </div> |
58 | </form> | 59 | </form> |
59 | </div> | 60 | </div> |
60 | </section> | 61 | </section> |
61 | <main class="main"> | 62 | <main class="main"> |
62 | <div class="container"> | 63 | <div class="container"> |
63 | <div class="main__vacancies"> | 64 | <div class="main__vacancies"> |
64 | <h2 class="main__vacancies-title">Категория вакансий ВТОРОЙ МЕХАНИК</h2> | 65 | @if (isset($job)) |
66 | <h2 class="main__vacancies-title">Категория вакансий {{ $job }}</h2> | ||
67 | @else | ||
68 | <h2 class="main__vacancies-title">Все категории</h2> | ||
69 | @endif | ||
65 | <div class="filters main__vacancies-filters"> | 70 | <div class="filters main__vacancies-filters"> |
66 | <div class="filters__label">Показано 5 из 165 результатов поиска</div> | 71 | <div class="filters__label" id="col-vo" name="col-vo">Показано @if ($Query_count < 3) {{$Query_count}} @else 3 @endif из @isset($Query_count) {{ $Query_count }} @else 0 @endisset результатов поиска</div> |
67 | <div class="filters__body"> | 72 | <div class="filters__body"> |
68 | <div class="select filters__select"> | 73 | <div class="select filters__select"> |
69 | <select class="js-select2"> | 74 | <select class="js-select2" id="sort_ajax" name="sort_ajax"> |
70 | <option>Сортировка (по умолчанию)</option> | 75 | <option value="default">Сортировка (по умолчанию)</option> |
71 | <option>Сортировка 1</option> | 76 | <option value="name (asc)">По имени (возрастание)</option> |
72 | <option>Сортировка 2</option> | 77 | <option value="name (desc)">По имени (убывание)</option> |
73 | <option>Сортировка 3</option> | 78 | <option value="created_at (asc)">По дате (возрастание)</option> |
74 | <option>Сортировка 4</option> | 79 | <option value="created_at (desc)">По дате (убывание)</option> |
75 | <option>Сортировка 5</option> | ||
76 | <option>Сортировка 6</option> | ||
77 | </select> | 80 | </select> |
78 | </div> | 81 | </div> |
79 | </div> | 82 | </div> |
80 | </div> | 83 | </div> |
84 | <div id="main_ockar" name="main_ockar" style="width:100%;"> | ||
85 | @foreach ($Query as $Q) | ||
81 | <div class="main__vacancies-item main__employer-page-two-item"> | 86 | <div class="main__vacancies-item main__employer-page-two-item"> |
82 | <a href="#" class="back main__employer-page-two-item-back"> | 87 | <a href="{{ route('list-vacancies', ['categories' => $categories->id]) }}" class="back main__employer-page-two-item-back"> |
83 | <svg> | 88 | <svg> |
84 | <use xlink:href="images/sprite.svg#back"></use> | 89 | <use xlink:href="{{ asset('images/sprite.svg#back') }}"></use> |
85 | </svg> | 90 | </svg> |
86 | <span> | 91 | <span> |
87 | Вернуться к списку вакансий | 92 | Вернуться к списку вакансий |
88 | </span> | 93 | </span> |
89 | </a> | 94 | </a> |
90 | <div class="main__employer-page-two-item-toper"> | 95 | <div class="main__employer-page-two-item-toper"> |
91 | <img src="images/12.jpg" alt=""> | 96 | @if (isset($Q->employer)) |
92 | <span>Наяда</span> | 97 | <img src="{{ asset(Storage::url($Q->employer->logo)) }}" alt="{{ $Q->employer->name }}"> |
98 | @endif | ||
99 | <span>@if (!empty($Q->name)) {{ $Q->name }} @endif</span> | ||
93 | </div> | 100 | </div> |
94 | <div class="main__employer-page-two-item-text"> | 101 | <div class="main__employer-page-two-item-text"> |
95 | <div class="main__employer-page-two-item-text-name">Судоходная компания ведет набор | 102 | <div class="main__employer-page-two-item-text-name">Судоходная компания ведет набор |
96 | специалистов на следующие должности:</div> | 103 | специалистов на следующие должности:</div> |
97 | <div class="main__employer-page-two-item-text-links"> | 104 | <div class="main__employer-page-two-item-text-links"> |
98 | <a href="#">“Капитан” – з/п от 277 000 рублей (на руки)</a> | 105 | @if (isset($Q->jobs)) |
99 | <a href="#">“Старший помощник капитана” – з/п от 216 000 рублей (на руки)</a> | 106 | @foreach ($Q->jobs as $key => $j) |
100 | <a href="#">“Второй помощник капитана”– з/п от 135 000 рублей (на руки)</a> | 107 | <a>“{{ $j->name }}” – з/п от @if (isset($Q->jobs_code[$key]->min_salary)) {{ $Q->jobs_code[$key]->min_salary }} @endif - @if (isset($Q->jobs_code[$key]->max_salary)) {{ $Q->jobs_code[$key]->max_salary }} @endif рублей (на руки)</a> |
101 | </div> | 108 | @endforeach |
109 | @endif | ||
110 | </div> | ||
102 | </div> | 111 | </div> |
103 | <div class="main__employer-page-two-item-text"> | 112 | <div class="main__employer-page-two-item-text"> |
104 | <div class="main__employer-page-two-item-text-name">Мы предлагаем:</div> | 113 | <div class="main__employer-page-two-item-text-name">Мы предлагаем:</div> |
105 | <div class="main__employer-page-two-item-text-body"> | 114 | <div class="main__employer-page-two-item-text-body"> |
106 | <ul> | 115 | {!! $Q->text !!} |
107 | <li><span>трудоустройство по ТК РФ;</span></li> | ||
108 | <li><span>достойный уровень оплаты труда (оклад + отпускные и премиальные + бонус в | ||
109 | размере оклада (за первый месяц работы) + оплата дней обучения и прохождения | ||
110 | мед. осмотра);</span></li> | ||
111 | <li><span>оплату проезда до судна и с судна до дома;</span></li> | ||
112 | <li><span>оплату проживания на время ожидания судна;</span></li> | ||
113 | <li><span>обучение и продление документов за счет компании;</span></li> | ||
114 | <li><span>компенсацию медицинской комиссии;</span></li> | ||
115 | <li><span>обеспечение спецодеждой;</span></li> | ||
116 | <li><span>коллективное питание;</span></li> | ||
117 | <li><span>пакет социальных льгот и гарантий:– расширенный ДМС со стоматологией;– | ||
118 | компенсация курортно-санаторного лечения;– компенсация путевок в детские | ||
119 | оздоровительные лагеря для детей сотрудников;</span></li> | ||
120 | <li><span>возможности профессионального развития с помощью корпоративных программ | ||
121 | обучения;</span></li> | ||
122 | <li><span>яркие корпоративные мероприятия и регулярные круглые столы с | ||
123 | представителями руководства компании.</span></li> | ||
124 | </ul> | ||
125 | </div> | 116 | </div> |
126 | </div> | 117 | </div> |
127 | <div class="main__employer-page-two-item-text"> | 118 | <div class="main__employer-page-two-item-text"> |
128 | <div class="main__employer-page-two-item-text-name">Наши ожидания:</div> | 119 | <div class="main__employer-page-two-item-text-name">Наши ожидания:</div> |
129 | <div class="main__employer-page-two-item-text-body"> | 120 | <div class="main__employer-page-two-item-text-body"> |
130 | <ul> | 121 | {!! $Q->description !!} |
131 | <li><span>наличие действующих дипломов, соответствующих должности;</span></li> | ||
132 | <li><span>опыт работы в должности;</span></li> | ||
133 | <li><span>наличие речных документов (желательно);</span></li> | ||
134 | <li><span>знание английского языка.</span></li> | ||
135 | </ul> | ||
136 | </div> | 122 | </div> |
137 | </div> | 123 | </div> |
138 | <div class="main__employer-page-two-item-text"> | 124 | <div class="main__employer-page-two-item-text"> |
139 | <div class="main__employer-page-two-item-text-name">Резюме направляйте на почту:</div> | 125 | <div class="main__employer-page-two-item-text-name">Резюме направляйте на почту:</div> |
140 | <div class="main__employer-page-two-item-text-body"> | 126 | <div class="main__employer-page-two-item-text-body"> |
141 | <ul> | 127 | {!! $Q->contacts_emails !!} |
142 | <li><a href="#">hr@volgaflot.com</a></li> | ||
143 | <li><a href="#">D.Kornilova@volgaflot.com</a></li> | ||
144 | <li><a href="#">A.Ryabova@volgaflot.com</a></li> | ||
145 | </ul> | ||
146 | </div> | 128 | </div> |
147 | </div> | 129 | </div> |
148 | <div class="main__employer-page-two-item-text"> | 130 | <div class="main__employer-page-two-item-text"> |
149 | <div class="main__employer-page-two-item-text-name">Или звоните:</div> | 131 | <div class="main__employer-page-two-item-text-name">Или звоните:</div> |
150 | <div class="main__employer-page-two-item-text-body"> | 132 | <div class="main__employer-page-two-item-text-body"> |
151 | <ul> | 133 | {!! $Q->contacts_telephones !!} |
152 | <li><a href="#">+7 (987) 548-38-31 Дарья</a></li> | ||
153 | <li><a href="#">+7 (986) 742-23-04 Александра</a></li> | ||
154 | </ul> | ||
155 | </div> | 134 | </div> |
156 | </div> | 135 | </div> |
157 | <div class="main__employer-page-two-item-tags"> | 136 | <div class="main__employer-page-two-item-tags"> |
158 | <span class="main__employer-page-two-item-tag">#второй_механик</span> | 137 | @if (isset($Q->jobs)) |
159 | <span class="main__employer-page-two-item-tag">#моторист</span> | 138 | @foreach ($Q->jobs as $key => $j) |
139 | <span class="main__employer-page-two-item-tag">#{{ $j->name }}</span> | ||
140 | @endforeach | ||
141 | @endif | ||
160 | </div> | 142 | </div> |
161 | <div class="main__employer-page-two-item-buttons"> | 143 | <div class="main__employer-page-two-item-buttons"> |
162 | <button type="button" | 144 | <button type="button" |
163 | class="button main__employer-page-two-item-button">Откликнуться</button> | 145 | class="button main__employer-page-two-item-button">Откликнуться</button> |
164 | <a href="#" class="button button_light main__employer-page-two-item-button">Подробнее</a> | 146 | <a href="{{ route('vacancie', ['vacancy' => $Q->id]) }}" class="button button_light main__employer-page-two-item-button">Подробнее</a> |
165 | </div> | 147 | </div> |
166 | <div class="main__employer-page-two-item-bottom"> | 148 | <div class="main__employer-page-two-item-bottom"> |
167 | <div class="main__employer-page-two-item-bottom-date">07.09.23 - 15:39</div> | 149 | <div class="main__employer-page-two-item-bottom-date">{{ $Q->created_at }}</div> |
168 | <button type="button" class="like main__employer-page-two-item-bottom-like js-toggle"> | 150 | <button type="button" class="like main__employer-page-two-item-bottom-like js-toggle"> |
169 | <svg> | 151 | <svg> |
170 | <use xlink:href="images/sprite.svg#heart"></use> | 152 | <use xlink:href="{{ asset('images/sprite.svg#heart') }}"></use> |
171 | </svg> | 153 | </svg> |
172 | </button> | 154 | </button> |
173 | </div> | 155 | </div> |
174 | </div> | 156 | </div> |
175 | <div class="main__vacancies-thing"> | 157 | @endforeach |
176 | <img src="images/13.jpg" alt="" class="main__vacancies-thing-pic"> | 158 | <div style="margin-top: 20px"> |
177 | <div class="main__vacancies-thing-body"> | 159 | {{ $Query->appends($_GET)->links('paginate') }} |
178 | <h2>ООО «Флот Эксперт»</h2> | ||
179 | <p><b>Приветствуем Вас коллеги!</b></p> | ||
180 | <p>Уведомления о новых вакансиях можно получать подписавшись на наш телеграм канал! | ||
181 | <br>Ссылка: <a href="#">https://t.me/rekamore_su</a></p> | ||
182 | <p>А еще это добавляет + 50 к карме, но это не точно)</p> | ||
183 | <a href="#" class="button">Узнать больше</a> | ||
184 | </div> | 160 | </div> |
185 | </div> | 161 | </div><!-- конец --> |
186 | <div class="main__vacancies-item main__employer-page-two-item"> | ||
187 | <a href="#" class="back main__employer-page-two-item-back"> | ||
188 | <svg> | ||
189 | <use xlink:href="images/sprite.svg#back"></use> | ||
190 | </svg> | ||
191 | <span> | ||
192 | Вернуться к списку вакансий | ||
193 | </span> | ||
194 | </a> | ||
195 | <div class="main__employer-page-two-item-toper"> | ||
196 | <img src="images/12.jpg" alt=""> | ||
197 | <span>Наяда</span> | ||
198 | </div> | ||
199 | <div class="main__employer-page-two-item-text"> | ||
200 | <div class="main__employer-page-two-item-text-name">Судоходная компания ведет набор | ||
201 | специалистов на следующие должности:</div> | ||
202 | <div class="main__employer-page-two-item-text-links"> | ||
203 | <a href="#">“Капитан” – з/п от 277 000 рублей (на руки)</a> | ||
204 | <a href="#">“Старший помощник капитана” – з/п от 216 000 рублей (на руки)</a> | ||
205 | <a href="#">“Второй помощник капитана”– з/п от 135 000 рублей (на руки)</a> | ||
206 | </div> | ||
207 | </div> | ||
208 | <div class="main__employer-page-two-item-text"> | ||
209 | <div class="main__employer-page-two-item-text-name">Мы предлагаем:</div> | ||
210 | <div class="main__employer-page-two-item-text-body"> | ||
211 | <ul> | ||
212 | <li><span>трудоустройство по ТК РФ;</span></li> | ||
213 | <li><span>достойный уровень оплаты труда (оклад + отпускные и премиальные + бонус в | ||
214 | размере оклада (за первый месяц работы) + оплата дней обучения и прохождения | ||
215 | мед. осмотра);</span></li> | ||
216 | <li><span>оплату проезда до судна и с судна до дома;</span></li> | ||
217 | <li><span>оплату проживания на время ожидания судна;</span></li> | ||
218 | <li><span>обучение и продление документов за счет компании;</span></li> | ||
219 | <li><span>компенсацию медицинской комиссии;</span></li> | ||
220 | <li><span>обеспечение спецодеждой;</span></li> | ||
221 | <li><span>коллективное питание;</span></li> | ||
222 | <li><span>пакет социальных льгот и гарантий:– расширенный ДМС со стоматологией;– | ||
223 | компенсация курортно-санаторного лечения;– компенсация путевок в детские | ||
224 | оздоровительные лагеря для детей сотрудников;</span></li> | ||
225 | <li><span>возможности профессионального развития с помощью корпоративных программ | ||
226 | обучения;</span></li> | ||
227 | <li><span>яркие корпоративные мероприятия и регулярные круглые столы с | ||
228 | представителями руководства компании.</span></li> | ||
229 | </ul> | ||
230 | </div> | ||
231 | </div> | ||
232 | <div class="main__employer-page-two-item-text"> | ||
233 | <div class="main__employer-page-two-item-text-name">Наши ожидания:</div> | ||
234 | <div class="main__employer-page-two-item-text-body"> | ||
235 | <ul> | ||
236 | <li><span>наличие действующих дипломов, соответствующих должности;</span></li> | ||
237 | <li><span>опыт работы в должности;</span></li> | ||
238 | <li><span>наличие речных документов (желательно);</span></li> | ||
239 | <li><span>знание английского языка.</span></li> | ||
240 | </ul> | ||
241 | </div> | ||
242 | </div> | ||
243 | <div class="main__employer-page-two-item-text"> | ||
244 | <div class="main__employer-page-two-item-text-name">Резюме направляйте на почту:</div> | ||
245 | <div class="main__employer-page-two-item-text-body"> | ||
246 | <ul> | ||
247 | <li><a href="#">hr@volgaflot.com</a></li> | ||
248 | <li><a href="#">D.Kornilova@volgaflot.com</a></li> | ||
249 | <li><a href="#">A.Ryabova@volgaflot.com</a></li> | ||
250 | </ul> | ||
251 | </div> | ||
252 | </div> | ||
253 | <div class="main__employer-page-two-item-text"> | ||
254 | <div class="main__employer-page-two-item-text-name">Или звоните:</div> | ||
255 | <div class="main__employer-page-two-item-text-body"> | ||
256 | <ul> | ||
257 | <li><a href="#">+7 (987) 548-38-31 Дарья</a></li> | ||
258 | <li><a href="#">+7 (986) 742-23-04 Александра</a></li> | ||
259 | </ul> | ||
260 | </div> | ||
261 | </div> | ||
262 | <div class="main__employer-page-two-item-tags"> | ||
263 | <span class="main__employer-page-two-item-tag">#второй_механик</span> | ||
264 | <span class="main__employer-page-two-item-tag">#моторист</span> | ||
265 | </div> | ||
266 | <div class="main__employer-page-two-item-buttons"> | ||
267 | <button type="button" | ||
268 | class="button main__employer-page-two-item-button">Откликнуться</button> | ||
269 | <a href="#" class="button button_light main__employer-page-two-item-button">Подробнее</a> | ||
270 | </div> | ||
271 | <div class="main__employer-page-two-item-bottom"> | ||
272 | <div class="main__employer-page-two-item-bottom-date">07.09.23 - 15:39</div> | ||
273 | <button type="button" class="like main__employer-page-two-item-bottom-like js-toggle"> | ||
274 | <svg> | ||
275 | <use xlink:href="images/sprite.svg#heart"></use> | ||
276 | </svg> | ||
277 | </button> | ||
278 | </div> | ||
279 | </div> | ||
280 | <div class="main__vacancies-item main__employer-page-two-item"> | ||
281 | <a href="#" class="back main__employer-page-two-item-back"> | ||
282 | <svg> | ||
283 | <use xlink:href="images/sprite.svg#back"></use> | ||
284 | </svg> | ||
285 | <span> | ||
286 | Вернуться к списку вакансий | ||
287 | </span> | ||
288 | </a> | ||
289 | <div class="main__employer-page-two-item-toper"> | ||
290 | <img src="images/12.jpg" alt=""> | ||
291 | <span>Наяда</span> | ||
292 | </div> | ||
293 | <div class="main__employer-page-two-item-text"> | ||
294 | <div class="main__employer-page-two-item-text-name">Судоходная компания ведет набор | ||
295 | специалистов на следующие должности:</div> | ||
296 | <div class="main__employer-page-two-item-text-links"> | ||
297 | <a href="#">“Капитан” – з/п от 277 000 рублей (на руки)</a> | ||
298 | <a href="#">“Старший помощник капитана” – з/п от 216 000 рублей (на руки)</a> | ||
299 | <a href="#">“Второй помощник капитана”– з/п от 135 000 рублей (на руки)</a> | ||
300 | </div> | ||
301 | </div> | ||
302 | <div class="main__employer-page-two-item-text"> | ||
303 | <div class="main__employer-page-two-item-text-name">Мы предлагаем:</div> | ||
304 | <div class="main__employer-page-two-item-text-body"> | ||
305 | <ul> | ||
306 | <li><span>трудоустройство по ТК РФ;</span></li> | ||
307 | <li><span>достойный уровень оплаты труда (оклад + отпускные и премиальные + бонус в | ||
308 | размере оклада (за первый месяц работы) + оплата дней обучения и прохождения | ||
309 | мед. осмотра);</span></li> | ||
310 | <li><span>оплату проезда до судна и с судна до дома;</span></li> | ||
311 | <li><span>оплату проживания на время ожидания судна;</span></li> | ||
312 | <li><span>обучение и продление документов за счет компании;</span></li> | ||
313 | <li><span>компенсацию медицинской комиссии;</span></li> | ||
314 | <li><span>обеспечение спецодеждой;</span></li> | ||
315 | <li><span>коллективное питание;</span></li> | ||
316 | <li><span>пакет социальных льгот и гарантий:– расширенный ДМС со стоматологией;– | ||
317 | компенсация курортно-санаторного лечения;– компенсация путевок в детские | ||
318 | оздоровительные лагеря для детей сотрудников;</span></li> | ||
319 | <li><span>возможности профессионального развития с помощью корпоративных программ | ||
320 | обучения;</span></li> | ||
321 | <li><span>яркие корпоративные мероприятия и регулярные круглые столы с | ||
322 | представителями руководства компании.</span></li> | ||
323 | </ul> | ||
324 | </div> | ||
325 | </div> | ||
326 | <div class="main__employer-page-two-item-text"> | ||
327 | <div class="main__employer-page-two-item-text-name">Наши ожидания:</div> | ||
328 | <div class="main__employer-page-two-item-text-body"> | ||
329 | <ul> | ||
330 | <li><span>наличие действующих дипломов, соответствующих должности;</span></li> | ||
331 | <li><span>опыт работы в должности;</span></li> | ||
332 | <li><span>наличие речных документов (желательно);</span></li> | ||
333 | <li><span>знание английского языка.</span></li> | ||
334 | </ul> | ||
335 | </div> | ||
336 | </div> | ||
337 | <div class="main__employer-page-two-item-text"> | ||
338 | <div class="main__employer-page-two-item-text-name">Резюме направляйте на почту:</div> | ||
339 | <div class="main__employer-page-two-item-text-body"> | ||
340 | <ul> | ||
341 | <li><a href="#">hr@volgaflot.com</a></li> | ||
342 | <li><a href="#">D.Kornilova@volgaflot.com</a></li> | ||
343 | <li><a href="#">A.Ryabova@volgaflot.com</a></li> | ||
344 | </ul> | ||
345 | </div> | ||
346 | </div> | ||
347 | <div class="main__employer-page-two-item-text"> | ||
348 | <div class="main__employer-page-two-item-text-name">Или звоните:</div> | ||
349 | <div class="main__employer-page-two-item-text-body"> | ||
350 | <ul> | ||
351 | <li><a href="#">+7 (987) 548-38-31 Дарья</a></li> | ||
352 | <li><a href="#">+7 (986) 742-23-04 Александра</a></li> | ||
353 | </ul> | ||
354 | </div> | ||
355 | </div> | ||
356 | <div class="main__employer-page-two-item-tags"> | ||
357 | <span class="main__employer-page-two-item-tag">#второй_механик</span> | ||
358 | <span class="main__employer-page-two-item-tag">#моторист</span> | ||
359 | </div> | ||
360 | <div class="main__employer-page-two-item-buttons"> | ||
361 | <button type="button" | ||
362 | class="button main__employer-page-two-item-button">Откликнуться</button> | ||
363 | <a href="#" class="button button_light main__employer-page-two-item-button">Подробнее</a> | ||
364 | </div> | ||
365 | <div class="main__employer-page-two-item-bottom"> | ||
366 | <div class="main__employer-page-two-item-bottom-date">07.09.23 - 15:39</div> | ||
367 | <button type="button" class="like main__employer-page-two-item-bottom-like js-toggle"> | ||
368 | <svg> | ||
369 | <use xlink:href="images/sprite.svg#heart"></use> | ||
370 | </svg> | ||
371 | </button> | ||
372 | </div> | ||
373 | </div> | ||
374 | <div class="pagination"> | ||
375 | <a href="#" class="pagination__nav pagination__nav_prev"> | ||
376 | <svg> | ||
377 | <use xlink:href="images/sprite.svg#arrow-bold"></use> | ||
378 | </svg> | ||
379 | </a> | ||
380 | <span class="pagination__item active">1</span> | ||
381 | <a href="#" class="pagination__item">2</a> | ||
382 | <a href="#" class="pagination__item">3</a> | ||
383 | <a href="#" class="pagination__item">4</a> | ||
384 | <a href="#" class="pagination__item">5</a> | ||
385 | <span class="pagination__dots"> | ||
386 | <svg> |
resources/views/pages.blade.php
File was created | 1 | @extends('layout.frontend', ['title' => $page->name.'- РекаМоре']) | |
2 | |||
3 | @section('scripts') | ||
4 | @endsection | ||
5 | |||
6 | @section('content') | ||
7 | <section class="thing"> | ||
8 | <div class="container"> | ||
9 | <div class="thing__body"> | ||
10 | <ul class="breadcrumbs thing__breadcrumbs"> | ||
11 | <li><a href="{{ route('index') }}">Главная</a></li> | ||
12 | <li><b>{{ $page->name }}</b></li> | ||
13 | </ul> | ||
14 | @isset($page->image) | ||
15 | <img src=" {{ asset(Storage::url($page->image)) }}" alt="" class="thing__pic thing__pic_two"> | ||
16 | @endif | ||
17 | <h1 class="thing__title">{{ $page->name }}</h1> | ||
18 | <p class="thing__text">{!! $page->anons !!}</p> | ||
19 | </div> | ||
20 | </div> | ||
21 | </section> | ||
22 | <main class="main"> | ||
23 | <div class="container"> | ||
24 | <div class="main__content"> | ||
25 | <div class="main__content-item"> | ||
26 | {!! $page->text !!} | ||
27 | </div> | ||
28 | </div> | ||
29 | </div> | ||
30 | </main> | ||
31 | </div> | ||
32 | @endsection | ||
33 |
resources/views/paginate.blade.php
File was created | 1 | @if ($paginator->hasPages()) | |
2 | <div class="pagination"> | ||
3 | @if ($paginator->onFirstPage()) | ||
4 | |||
5 | @else | ||
6 | <a href="{{ $paginator->previousPageUrl() }}" class="pagination__nav pagination__nav_prev"> | ||
7 | <svg> | ||
8 | <use xlink:href="{{ asset('images/sprite.svg#arrow-bold') }}"></use> | ||
9 | </svg> | ||
10 | </a> | ||
11 | @endif | ||
12 | |||
13 | @foreach ($elements as $element) | ||
14 | @if (is_string($element)) | ||
15 | <span>{{ $element }}</span> | ||
16 | @endif | ||
17 | |||
18 | @if (is_array($element)) | ||
19 | @php $count_element = count($element); | ||
20 | $i = 0; | ||
21 | @endphp | ||
22 | @foreach ($element as $page => $url) | ||
23 | @if ($page == $paginator->currentPage()) | ||
24 | <span class="pagination__item active">{{ $page }}</span> | ||
25 | @else | ||
26 | @if (($i == $count_element - 1) && ($count_element > 5)) | ||
27 | <span class="pagination__dots"> | ||
28 | <svg> | ||
29 | <use xlink:href="{{ asset('images/sprite.svg#dots') }}"></use> | ||
30 | </svg> | ||
31 | </span> | ||
32 | @endif | ||
33 | |||
34 | <a href="{{ $url }}" class="pagination__item">{{ $page }}</a> | ||
35 | @endif | ||
36 | @php $i++; @endphp | ||
37 | @endforeach | ||
38 | @endif | ||
39 | @endforeach | ||
40 | |||
41 | @if ($paginator->hasMorePages()) | ||
42 | <a href="{{ $paginator->nextPageUrl() }}" class="pagination__nav pagination__nav_next"> | ||
43 | <svg> | ||
44 | <use xlink:href="{{ asset('images/sprite.svg#arrow-bold') }}"></use> | ||
45 | </svg> | ||
46 | </a> | ||
47 | @else | ||
48 | |||
49 | @endif | ||
50 | </div> | ||
51 | @endif | ||
52 | |||
53 |
resources/views/vacance-item.blade.php
File was created | 1 | @extends('layout.frontend', ['title' => $title]) | |
2 | |||
3 | @section('scripts') | ||
4 | |||
5 | @endsection | ||
6 | |||
7 | @section('content') | ||
8 | <main class="main"> | ||
9 | <div class="container"> | ||
10 | <ul class="breadcrumbs main__breadcrumbs"> | ||
11 | <li><a href="{{ route('index') }}">Главная</a></li> | ||
12 | <li><a href="{{ route('vacancies') }}">Вакансии</a></li> | ||
13 | <li><b>{{ $title }}</b></li> | ||
14 | </ul> | ||
15 | <div class="main__employer-page"> | ||
16 | |||
17 | @if (isset($Query[0]->employer)) | ||
18 | <h2 class="main__employer-page-title">О компании</h2> | ||
19 | <div class="main__employer-page-two-item-toper"> | ||
20 | <img src="{{ asset(Storage::url($Query[0]->employer->logo)) }}" alt="{{ $Query[0]->employer->name }}"> | ||
21 | <span>{{ $Query[0]->employer->name_company }}</span> | ||
22 | </div> | ||
23 | |||
24 | <div class="main__employer-page-info"> | ||
25 | <div class="main__employer-page-item"> | ||
26 | <b> Адрес компании</b> | ||
27 | <span> | ||
28 | {{ $Query[0]->employer->address }} | ||
29 | </span> | ||
30 | </div> | ||
31 | <div class="main__employer-page-item"> | ||
32 | <b>Сайт</b> | ||
33 | <span> | ||
34 | <a href="{{ $Query[0]->employer->site }}">{{ $Query[0]->employer->site }}</a> | ||
35 | </span> | ||
36 | </div> | ||
37 | <div class="main__employer-page-item"> | ||
38 | <b>Почта</b> | ||
39 | <span> | ||
40 | <a href="{{ $Query[0]->employer->email }}">{{ $Query[0]->employer->email }}</a> | ||
41 | </span> | ||
42 | </div> | ||
43 | <div class="main__employer-page-item"> | ||
44 | <b>Телефон</b> | ||
45 | <span> | ||
46 | <a href="tel:{{ $Query[0]->employer->telephone }}">{{ $Query[0]->employer->telephone }}</a> | ||
47 | </span> | ||
48 | </div> | ||
49 | </div> | ||
50 | @else | ||
51 | <div class="main__employer-page-info"> | ||
52 | <div class="main__employer-page-item"> | ||
53 | <b>Ничего не найдено</b> | ||
54 | <span> | ||
55 | Нет данных о компании | ||
56 | </span> | ||
57 | </div> | ||
58 | </div> | ||
59 | @endif | ||
60 | <h2 class="main__employer-page-title">Описание вакансии</h2> | ||
61 | </div> | ||
62 | |||
63 | @foreach ($Query as $Q) | ||
64 | <div class="main__vacancies-item-page main__employer-page-two-item"> | ||
65 | <div class="main__employer-page-two-item-text"> | ||
66 | <div class="main__employer-page-two-item-text-name">Судоходная компания ведет набор | ||
67 | специалистов на следующие должности:</div> | ||
68 | <div class="main__employer-page-two-item-text-links"> | ||
69 | @if (isset($Q->jobs)) | ||
70 | @foreach ($Q->jobs as $key => $j) | ||
71 | <a>“{{ $j->name }}” – з/п от @if (isset($Q->jobs_code[$key]->min_salary)) {{ $Q->jobs_code[$key]->min_salary }} @endif - @if (isset($Q->jobs_code[$key]->max_salary)) {{ $Q->jobs_code[$key]->max_salary }} @endif рублей (на руки)</a> | ||
72 | @endforeach | ||
73 | @endif | ||
74 | </div> | ||
75 | </div> | ||
76 | <div class="main__employer-page-two-item-text"> | ||
77 | <div class="main__employer-page-two-item-text-name">Мы предлагаем:</div> | ||
78 | <div class="main__employer-page-two-item-text-body"> | ||
79 | {!! $Q->text !!} | ||
80 | </div> | ||
81 | </div> | ||
82 | <div class="main__employer-page-two-item-text"> | ||
83 | <div class="main__employer-page-two-item-text-name">Наши ожидания:</div> | ||
84 | <div class="main__employer-page-two-item-text-body"> | ||
85 | {!! $Q->description !!} | ||
86 | </div> | ||
87 | </div> | ||
88 | <div class="main__employer-page-two-item-text"> | ||
89 | <div class="main__employer-page-two-item-text-name">Резюме направляйте на почту:</div> | ||
90 | <div class="main__employer-page-two-item-text-body"> | ||
91 | {!! $Q->contacts_emails !!} | ||
92 | </div> | ||
93 | <div class="main__employer-page-two-item-text"> | ||
94 | <div class="main__employer-page-two-item-text-name">Или звоните:</div> | ||
95 | <div class="main__employer-page-two-item-text-body"> | ||
96 | {!! $Q->contacts_telephones !!} | ||
97 | </div> | ||
98 | </div> | ||
99 | <div class="main__employer-page-two-item-tags"> | ||
100 | @if (isset($Q->jobs)) | ||
101 | @foreach ($Q->jobs as $key => $j) | ||
102 | <span class="main__employer-page-two-item-tag">#{{ $j->name }}</span> | ||
103 | @endforeach | ||
104 | @endif | ||
105 | </div> | ||
106 | <div class="main__employer-page-two-item-buttons"> | ||
107 | <button type="button" class="button main__employer-page-two-item-button">Откликнуться</button> | ||
108 | </div> | ||
109 | <div class="main__employer-page-two-item-bottom"> | ||
110 | <div class="main__employer-page-two-item-bottom-date">{{ $Q->created_at }}</div> | ||
111 | <button type="button" class="like main__employer-page-two-item-bottom-like js-toggle"> | ||
112 | <svg> | ||
113 | <use xlink:href="{{ asset('images/sprite.svg#heart') }}"></use> | ||
114 | </svg> | ||
115 | </button> | ||
116 | </div> | ||
117 | </div> | ||
118 | |||
119 | @endforeach | ||
120 | |||
121 | </div> <a href="{{ redirect()->back()->getTargetUrl() }}" class="back"> | ||
122 | <svg> | ||
123 | <use xlink:href="{{ asset('images/sprite.svg#back') }}"></use> | ||
124 | </svg> | ||
125 | <span> | ||
126 | Вернуться к списку вакансий | ||
127 | </span> | ||
128 | </a> | ||
129 | </main> | ||
130 | </div> | ||
131 | @endsection | ||
132 |
resources/views/vacancies.blade.php
1 | @extends('layout.frontend', ['title' => 'Вакансии РекаМоре']) | 1 | @extends('layout.frontend', ['title' => 'Вакансии РекаМоре']) |
2 | 2 | ||
3 | @section('scripts') | 3 | @section('scripts') |
4 | <script> | 4 | <script> |
5 | console.log('Test system'); | 5 | console.log('Test system'); |
6 | $(document).on('change', '.jobs', function() { | 6 | $(document).on('change', '.jobs', function() { |
7 | var val = $(this).val(); | 7 | var val = $(this).val(); |
8 | 8 | ||
9 | console.log('Click change...'); | 9 | console.log('Click change...'); |
10 | $.ajax({ | 10 | $.ajax({ |
11 | type: "GET", | 11 | type: "GET", |
12 | url: "{{ route('vacancies') }}", | 12 | url: "{{ route('vacancies') }}", |
13 | data: "job="+val, | 13 | data: "job="+val, |
14 | success: function (data) { | 14 | success: function (data) { |
15 | console.log('Выбор должности'); | 15 | console.log('Выбор должности'); |
16 | console.log(data); | 16 | console.log(data); |
17 | $('#block_ajax').html(data); | 17 | $('#block_ajax').html(data); |
18 | }, | 18 | }, |
19 | headers: { | 19 | headers: { |
20 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') | 20 | 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') |
21 | }, | 21 | }, |
22 | error: function (data) { | 22 | error: function (data) { |
23 | data = JSON.stringify(data); | 23 | data = JSON.stringify(data); |
24 | console.log('Error: ' + data); | 24 | console.log('Error: ' + data); |
25 | } | 25 | } |
26 | }); | 26 | }); |
27 | }); | 27 | }); |
28 | </script> | 28 | </script> |
29 | @endsection | 29 | @endsection |
30 | 30 | ||
31 | @section('content') | 31 | @section('content') |
32 | <section class="thing"> | 32 | <section class="thing"> |
33 | <div class="container"> | 33 | <div class="container"> |
34 | <form class="thing__body"> | 34 | <form class="thing__body"> |
35 | <ul class="breadcrumbs thing__breadcrumbs"> | 35 | <ul class="breadcrumbs thing__breadcrumbs"> |
36 | <li><a href="{{ route('index') }}">Главная</a></li> | 36 | <li><a href="{{ route('index') }}">Главная</a></li> |
37 | <li><b>Вакансии</b></li> | 37 | <li><b>Вакансии</b></li> |
38 | </ul> | 38 | </ul> |
39 | <h1 class="thing__title">Вакансии</h1> | 39 | <h1 class="thing__title">Вакансии</h1> |
40 | <p class="thing__text">С другой стороны, социально-экономическое развитие не оставляет шанса для | 40 | <p class="thing__text">С другой стороны, социально-экономическое развитие не оставляет шанса для |
41 | существующих финансовых и административных условий.</p> | 41 | существующих финансовых и административных условий.</p> |
42 | <div class="select select_search thing__select"> | 42 | <div class="select select_search thing__select"> |
43 | <div class="select__icon"> | 43 | <div class="select__icon"> |
44 | <svg> | 44 | <svg> |
45 | <use xlink:href="{{ asset('images/sprite.svg#search') }}"></use> | 45 | <use xlink:href="{{ asset('images/sprite.svg#search') }}"></use> |
46 | </svg> | 46 | </svg> |
47 | </div> | 47 | </div> |
48 | <select class="js-select2 jobs" id="jobs" name="jobs"> | 48 | <select class="js-select2 jobs" id="jobs" name="jobs"> |
49 | <option value="0" disabled selected>Выберите должность</option> | 49 | <option value="0" disabled selected>Выберите должность</option> |
50 | @if ($Job_title->count()) | 50 | @if ($Job_title->count()) |
51 | @foreach($Job_title as $JT) | 51 | @foreach($Job_title as $JT) |
52 | <option value="{{ $JT->id }}">{{ $JT->name }}</option> | 52 | <option value="{{ $JT->id }}">{{ $JT->name }}</option> |
53 | @endforeach | 53 | @endforeach |
54 | @endif | 54 | @endif |
55 | </select> | 55 | </select> |
56 | </div> | 56 | </div> |
57 | </form> | 57 | </form> |
58 | </div> | 58 | </div> |
59 | </section> | 59 | </section> |
60 | <main class="main"> | 60 | <main class="main"> |
61 | <div class="container"> | 61 | <div class="container"> |
62 | <div class="main__vacancies"> | 62 | <div class="main__vacancies"> |
63 | <h2 class="main__vacancies-title">Категории вакансий</h2> | 63 | <h2 class="main__vacancies-title">Категории вакансий</h2> |
64 | <div class="vacancies__body"> | 64 | <div class="vacancies__body"> |
65 | <!--<button class="vacancies__more button button_more button_light js-toggle js-parent-toggle"> | 65 | <!--<button class="vacancies__more button button_more button_light js-toggle js-parent-toggle"> |
66 | <span>Показать ещё</span> | 66 | <span>Показать ещё</span> |
67 | <span>Скрыть</span> | 67 | <span>Скрыть</span> |
68 | </button>--> | 68 | </button>--> |
69 | <div class="vacancies__list" id="block_ajax" name="block_ajax"> | 69 | <div class="vacancies__list" id="block_ajax" name="block_ajax"> |
70 | @php $colors = Array('#F4C4C2', '#FBF1C8', '#ECFDEF', '#F3ECF6', '#ECFDEF'); | 70 | @php $colors = Array('#F4C4C2', '#FBF1C8', '#ECFDEF', '#F3ECF6', '#ECFDEF'); |
71 | $i = 0; | 71 | $i = 0; |
72 | @endphp | 72 | @endphp |
73 | @if ($categories->count()) | 73 | @if ($categories->count()) |
74 | @foreach ($categories as $cat) | 74 | @foreach ($categories as $cat) |
75 | <a href="{{ route('') }}" class="vacancies__item"> | 75 | <a href="{{ route('list-vacancies', ['categories' => $cat->id]) }}" class="vacancies__item"> |
76 | <span style="border-color:{{$colors[$i]}}"> | 76 | <span style="border-color:{{$colors[$i]}}"> |
77 | <b>{{ $cat->name }}</b> | 77 | <b>{{ $cat->name }}</b> |
78 | <u>{{ $cat->min_salary }} — {{ $cat->max_salary }} ₽</u> | 78 | <u>{{ $cat->min_salary }} — {{ $cat->max_salary }} ₽</u> |
79 | <i>Вакансий: <span>{{ $cat->cnt }}</span></i> | 79 | <i>Вакансий: <span>{{ $cat->cnt }}</span></i> |
80 | </span> | 80 | </span> |
81 | </a> | 81 | </a> |
82 | @php $i++; | 82 | @php $i++; |
83 | if ($i > 4) {$i = 0;} | 83 | if ($i > 4) {$i = 0;} |
84 | @endphp | 84 | @endphp |
85 | @endforeach | 85 | @endforeach |
86 | @else | 86 | @else |
87 | Тут пока нет никаких вакансий | 87 | Тут пока нет никаких вакансий |
88 | @endif | 88 | @endif |
89 | </div> | 89 | </div> |
90 | </div> | 90 | </div> |
91 | </div> | 91 | </div> |
92 | </div> | 92 | </div> |
93 | </main> | 93 | </main> |
94 | </div> | 94 | </div> |
95 | @endsection | 95 | @endsection |
96 | 96 |
routes/web.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | use App\Http\Controllers\AdEmployerController; | 3 | use App\Http\Controllers\AdEmployerController; |
4 | use App\Http\Controllers\Admin\AdminController; | 4 | use App\Http\Controllers\Admin\AdminController; |
5 | use App\Http\Controllers\Admin\CategoryController; | 5 | use App\Http\Controllers\Admin\CategoryController; |
6 | use App\Http\Controllers\Admin\CategoryEmpController; | 6 | use App\Http\Controllers\Admin\CategoryEmpController; |
7 | use App\Http\Controllers\Admin\EducationController; | 7 | use App\Http\Controllers\Admin\EducationController; |
8 | use App\Http\Controllers\Admin\EmployersController; | 8 | use App\Http\Controllers\Admin\EmployersController; |
9 | use App\Http\Controllers\EmployerController as FrontEmployersController; | ||
9 | use App\Http\Controllers\Admin\InfoBloksController; | 10 | use App\Http\Controllers\Admin\InfoBloksController; |
10 | use App\Http\Controllers\Admin\JobTitlesController; | 11 | use App\Http\Controllers\Admin\JobTitlesController; |
11 | use App\Http\Controllers\Admin\UsersController; | 12 | use App\Http\Controllers\Admin\UsersController; |
12 | use App\Http\Controllers\Admin\WorkersController; | 13 | use App\Http\Controllers\Admin\WorkersController; |
13 | use App\Http\Controllers\Auth\ForgotPasswordController; | 14 | use App\Http\Controllers\Auth\ForgotPasswordController; |
14 | use App\Http\Controllers\Auth\LoginController; | 15 | use App\Http\Controllers\Auth\LoginController; |
15 | use App\Http\Controllers\Auth\RegisterController; | 16 | use App\Http\Controllers\Auth\RegisterController; |
16 | use App\Http\Controllers\CKEditorController; | 17 | use App\Http\Controllers\CKEditorController; |
17 | use App\Http\Controllers\MediaController; | 18 | use App\Http\Controllers\MediaController; |
18 | use App\Http\Controllers\WorkerController; | 19 | use App\Http\Controllers\WorkerController; |
19 | use App\Models\User; | 20 | use App\Models\User; |
20 | use App\Http\Controllers\MainController; | 21 | use App\Http\Controllers\MainController; |
21 | use App\Http\Controllers\HomeController; | 22 | use App\Http\Controllers\HomeController; |
22 | use Illuminate\Support\Facades\Route; | 23 | use Illuminate\Support\Facades\Route; |
23 | use App\Http\Controllers\Admin\CompanyController; | 24 | use App\Http\Controllers\Admin\CompanyController; |
24 | use App\Http\Controllers\Admin\Ad_EmployersController; | 25 | use App\Http\Controllers\Admin\Ad_EmployersController; |
25 | use App\Http\Controllers\Admin\MsgAnswersController; | 26 | use App\Http\Controllers\Admin\MsgAnswersController; |
26 | use App\Http\Controllers\Admin\GroupsController; | 27 | use App\Http\Controllers\Admin\GroupsController; |
27 | use App\Http\Controllers\PagesController; | 28 | use App\Http\Controllers\PagesController; |
28 | use Illuminate\Support\Facades\Storage; | 29 | use Illuminate\Support\Facades\Storage; |
29 | use App\Http\Controllers\EmployerController; | 30 | use App\Http\Controllers\EmployerController; |
31 | use App\Http\Controllers\CompanyController as FrontCompanyController; | ||
30 | 32 | ||
31 | 33 | ||
32 | /* | 34 | /* |
33 | |-------------------------------------------------------------------------- | 35 | |-------------------------------------------------------------------------- |
34 | | Web Routes | 36 | | Web Routes |
35 | |-------------------------------------------------------------------------- | 37 | |-------------------------------------------------------------------------- |
36 | | | 38 | | |
37 | | Here is where you can register web routes for your application. These | 39 | | Here is where you can register web routes for your application. These |
38 | | routes are loaded by the RouteServiceProvider within a group which | 40 | | routes are loaded by the RouteServiceProvider within a group which |
39 | | contains the "web" middleware group. Now create something great! | 41 | | contains the "web" middleware group. Now create something great! |
40 | | | 42 | | |
41 | */ | 43 | */ |
42 | /* | 44 | /* |
43 | Route::get('/', function () { | 45 | Route::get('/', function () { |
44 | return view('welcome'); | 46 | return view('welcome'); |
45 | })->name('index'); | 47 | })->name('index'); |
46 | */ | 48 | */ |
47 | Route::get('/', [MainController::class, 'index'])->name('index'); | 49 | Route::get('/', [MainController::class, 'index'])->name('index'); |
48 | 50 | ||
49 | //Роуты авторизации, регистрации, восстановления, аутентификации | 51 | //Роуты авторизации, регистрации, восстановления, аутентификации |
50 | Auth::routes(['verify' => true]); | 52 | Auth::routes(['verify' => true]); |
51 | 53 | ||
52 | // роуты регистрации, авторизации, восстановления пароля, верификации почты | 54 | // роуты регистрации, авторизации, восстановления пароля, верификации почты |
53 | /*Route::group([ | 55 | /*Route::group([ |
54 | 'as' => 'auth.', //имя маршрута, например auth.index | 56 | 'as' => 'auth.', //имя маршрута, например auth.index |
55 | 'prefix' => 'auth', // префикс маршрута, например, auth/index | 57 | 'prefix' => 'auth', // префикс маршрута, например, auth/index |
56 | ], function () { | 58 | ], function () { |
57 | //форма регистрации | 59 | //форма регистрации |
58 | Route::get('register', [RegisterController::class, 'register'])->name('register'); | 60 | Route::get('register', [RegisterController::class, 'register'])->name('register'); |
59 | 61 | ||
60 | //создание пользователя | 62 | //создание пользователя |
61 | Route::post('register', [RegisterController::class, 'create'])->name('create'); | 63 | Route::post('register', [RegisterController::class, 'create'])->name('create'); |
62 | 64 | ||
63 | //форма входа авторизации | 65 | //форма входа авторизации |
64 | Route::get('login', [LoginController::class, 'login'])->name('login'); | 66 | Route::get('login', [LoginController::class, 'login'])->name('login'); |
65 | 67 | ||
66 | //аутентификация | 68 | //аутентификация |
67 | Route::post('login', [LoginController::class, 'authenticate'])->name('auth'); | 69 | Route::post('login', [LoginController::class, 'authenticate'])->name('auth'); |
68 | 70 | ||
69 | //выход | 71 | //выход |
70 | Route::get('logout', [LoginController::class, 'logout'])->name('logout'); | 72 | Route::get('logout', [LoginController::class, 'logout'])->name('logout'); |
71 | 73 | ||
72 | //форма ввода адреса почты | 74 | //форма ввода адреса почты |
73 | Route::get('forgot-password', [ForgotPasswordController::class, 'form'])->name('forgot-form'); | 75 | Route::get('forgot-password', [ForgotPasswordController::class, 'form'])->name('forgot-form'); |
74 | 76 | ||
75 | //письмо на почту | 77 | //письмо на почту |
76 | Route::post('forgot-password', [ForgotPasswordController::class, 'mail'])->name('forgot-mail'); | 78 | Route::post('forgot-password', [ForgotPasswordController::class, 'mail'])->name('forgot-mail'); |
77 | 79 | ||
78 | //форма восстановления пароля | 80 | //форма восстановления пароля |
79 | Route::get('reset-password/token/{token}/email/{email}', | 81 | Route::get('reset-password/token/{token}/email/{email}', |
80 | [ResetPasswordController::class, 'form'] | 82 | [ResetPasswordController::class, 'form'] |
81 | )->name('reset-form'); | 83 | )->name('reset-form'); |
82 | 84 | ||
83 | //восстановление пароля | 85 | //восстановление пароля |
84 | Route::post('reset-password', | 86 | Route::post('reset-password', |
85 | [ResetPasswordController::class, 'reset'] | 87 | [ResetPasswordController::class, 'reset'] |
86 | )->name('reset-password'); | 88 | )->name('reset-password'); |
87 | 89 | ||
88 | //сообщение о необходимости проверки адреса почты | 90 | //сообщение о необходимости проверки адреса почты |
89 | Route::get('verify-message', [VerifyEmailController::class, 'message'])->name('verify-message'); | 91 | Route::get('verify-message', [VerifyEmailController::class, 'message'])->name('verify-message'); |
90 | 92 | ||
91 | //подтверждение адреса почты нового пользователя | 93 | //подтверждение адреса почты нового пользователя |
92 | Route::get('verify-email/token/{token}/id/{id}', [VerifyEmailController::class, 'verify']) | 94 | Route::get('verify-email/token/{token}/id/{id}', [VerifyEmailController::class, 'verify']) |
93 | ->where('token', '[a-f0-9]{32}') | 95 | ->where('token', '[a-f0-9]{32}') |
94 | ->where('id', '[0-9]+') | 96 | ->where('id', '[0-9]+') |
95 | ->name('verify-email'); | 97 | ->name('verify-email'); |
96 | });*/ | 98 | });*/ |
97 | 99 | ||
98 | //Личный кабинет пользователя | 100 | //Личный кабинет пользователя |
99 | Route::get('/home', [HomeController::class, 'index'])->name('home'); | 101 | Route::get('/home', [HomeController::class, 'index'])->name('home'); |
100 | 102 | ||
101 | /* | 103 | /* |
102 | Route::post('resend/verification-email', function (\Illuminate\Http\Request $request) { | 104 | Route::post('resend/verification-email', function (\Illuminate\Http\Request $request) { |
103 | $user = User::where('email',$request->input('email'))->first(); | 105 | $user = User::where('email',$request->input('email'))->first(); |
104 | 106 | ||
105 | $user->sendEmailVerificationNotification(); | 107 | $user->sendEmailVerificationNotification(); |
106 | 108 | ||
107 | return 'your response'; | 109 | return 'your response'; |
108 | })->middleware('throttle:6,1')->name('verification.resend'); | 110 | })->middleware('throttle:6,1')->name('verification.resend'); |
109 | */ | 111 | */ |
110 | 112 | ||
111 | // Авторизация, регистрация в админку | 113 | // Авторизация, регистрация в админку |
112 | Route::group([ | 114 | Route::group([ |
113 | 'as' => 'admin.', // имя маршрута, например auth.index | 115 | 'as' => 'admin.', // имя маршрута, например auth.index |
114 | 'prefix' => 'admin', // префикс маршрута, например auth/index | 116 | 'prefix' => 'admin', // префикс маршрута, например auth/index |
115 | 'middleware' => ['guest'], | 117 | 'middleware' => ['guest'], |
116 | ], function () { | 118 | ], function () { |
117 | // Форма регистрации | 119 | // Форма регистрации |
118 | Route::get('register', [AdminController::class, 'register'])->name('register'); | 120 | Route::get('register', [AdminController::class, 'register'])->name('register'); |
119 | // Создание пользователя | 121 | // Создание пользователя |
120 | Route::post('register', [AdminController::class, 'create'])->name('create'); | 122 | Route::post('register', [AdminController::class, 'create'])->name('create'); |
121 | 123 | ||
122 | //Форма входа | 124 | //Форма входа |
123 | Route::get('login', [AdminController::class, 'login'])->name('login'); | 125 | Route::get('login', [AdminController::class, 'login'])->name('login'); |
124 | 126 | ||
125 | // аутентификация | 127 | // аутентификация |
126 | Route::post('login', [AdminController::class, 'autenticate'])->name('auth'); | 128 | Route::post('login', [AdminController::class, 'autenticate'])->name('auth'); |
127 | 129 | ||
128 | }); | 130 | }); |
129 | 131 | ||
130 | // Личный кабинет админки | 132 | // Личный кабинет админки |
131 | Route::group([ | 133 | Route::group([ |
132 | 'as' => 'admin.', // имя маршрута, например auth.index | 134 | 'as' => 'admin.', // имя маршрута, например auth.index |
133 | 'prefix' => 'admin', // префикс маршрута, например auth/index | 135 | 'prefix' => 'admin', // префикс маршрута, например auth/index |
134 | 'middleware' => ['auth'], ['admin'], | 136 | 'middleware' => ['auth'], ['admin'], |
135 | ], function() { | 137 | ], function() { |
136 | 138 | ||
137 | // выход | 139 | // выход |
138 | Route::get('logout', [AdminController::class, 'logout'])->name('logout'); | 140 | Route::get('logout', [AdminController::class, 'logout'])->name('logout'); |
139 | 141 | ||
140 | // кабинет главная страница | 142 | // кабинет главная страница |
141 | Route::get('cabinet', [AdminController::class, 'index'])->name('index'); | 143 | Route::get('cabinet', [AdminController::class, 'index'])->name('index'); |
142 | 144 | ||
143 | // кабинет профиль админа - форма | 145 | // кабинет профиль админа - форма |
144 | Route::get('profile', [AdminController::class, 'profile'])->name('profile'); | 146 | Route::get('profile', [AdminController::class, 'profile'])->name('profile'); |
145 | // кабинет профиль админа - сохранение формы | 147 | // кабинет профиль админа - сохранение формы |
146 | Route::post('profile', [AdminController::class, 'store_profile'])->name('store_profile'); | 148 | Route::post('profile', [AdminController::class, 'store_profile'])->name('store_profile'); |
147 | 149 | ||
148 | //кабинет сообщения админа | 150 | //кабинет сообщения админа |
149 | //Route::get('messages', [AdminController::class, 'profile'])->name('profile'); | 151 | //Route::get('messages', [AdminController::class, 'profile'])->name('profile'); |
150 | 152 | ||
151 | 153 | ||
152 | // кабинет профиль - форма пароли | 154 | // кабинет профиль - форма пароли |
153 | Route::get('password', [AdminController::class, 'profile_password'])->name('password'); | 155 | Route::get('password', [AdminController::class, 'profile_password'])->name('password'); |
154 | // кабинет профиль - сохранение формы пароля | 156 | // кабинет профиль - сохранение формы пароля |
155 | Route::post('password', [AdminController::class, 'profile_password_new'])->name('password'); | 157 | Route::post('password', [AdminController::class, 'profile_password_new'])->name('password'); |
156 | 158 | ||
157 | 159 | ||
158 | // кабинет профиль пользователя - форма | 160 | // кабинет профиль пользователя - форма |
159 | Route::get('user-profile/{user}', [AdminController::class, 'profile_user'])->name('user-profile'); | 161 | Route::get('user-profile/{user}', [AdminController::class, 'profile_user'])->name('user-profile'); |
160 | // кабинет профиль пользователя - сохранение формы | 162 | // кабинет профиль пользователя - сохранение формы |
161 | Route::post('user-profile/{user}', [AdminController::class, 'store_profile_user'])->name('user-store_profile'); | 163 | Route::post('user-profile/{user}', [AdminController::class, 'store_profile_user'])->name('user-store_profile'); |
162 | 164 | ||
163 | // кабинет профиль работодатель - форма | 165 | // кабинет профиль работодатель - форма |
164 | Route::get('employer-profile/{employer}', [EmployersController::class, 'form_update_employer'])->name('employer-profile'); | 166 | Route::get('employer-profile/{employer}', [EmployersController::class, 'form_update_employer'])->name('employer-profile'); |
165 | // кабинет профиль работодатель - сохранение формы | 167 | // кабинет профиль работодатель - сохранение формы |
166 | Route::post('employer-profile/{employer}', [EmployersController::class, 'update_employer'])->name('update-employer-profile'); | 168 | Route::post('employer-profile/{employer}', [EmployersController::class, 'update_employer'])->name('update-employer-profile'); |
167 | // кабинет удаление профиль работодателя и юзера | 169 | // кабинет удаление профиль работодателя и юзера |
168 | Route::delete('employers/delete/{employer}/{user}', [EmployersController::class, 'delete_employer'])->name('delete-employer'); | 170 | Route::delete('employers/delete/{employer}/{user}', [EmployersController::class, 'delete_employer'])->name('delete-employer'); |
169 | 171 | ||
170 | // кабинет профиль работник - форма | 172 | // кабинет профиль работник - форма |
171 | Route::get('worker-profile/add/{user}', [WorkersController::class, 'form_add_worker'])->name('worker-profile-add'); | 173 | Route::get('worker-profile/add/{user}', [WorkersController::class, 'form_add_worker'])->name('worker-profile-add'); |
172 | Route::post('worker-profile/add/{user}', [WorkersController::class, 'form_store_worker'])->name('worker-profile-store'); | 174 | Route::post('worker-profile/add/{user}', [WorkersController::class, 'form_store_worker'])->name('worker-profile-store'); |
173 | Route::get('worker-profile/{worker}', [WorkersController::class, 'form_edit_worker'])->name('worker-profile-edit'); | 175 | Route::get('worker-profile/{worker}', [WorkersController::class, 'form_edit_worker'])->name('worker-profile-edit'); |
174 | // кабинет профиль работник - сохранение формы | 176 | // кабинет профиль работник - сохранение формы |
175 | Route::post('worker-profile/{worker}', [WorkersController::class, 'form_update_worker'])->name('worker-profile-update'); | 177 | Route::post('worker-profile/{worker}', [WorkersController::class, 'form_update_worker'])->name('worker-profile-update'); |
176 | 178 | ||
177 | // Медиа | 179 | // Медиа |
178 | Route::get('media', [MediaController::class, 'index'])->name('media'); | 180 | Route::get('media', [MediaController::class, 'index'])->name('media'); |
179 | Route::delete('media/{media}', [MediaController::class, 'delete'])->name('delete-media'); | 181 | Route::delete('media/{media}', [MediaController::class, 'delete'])->name('delete-media'); |
180 | 182 | ||
181 | // кабинет настройки сайта - форма | 183 | // кабинет настройки сайта - форма |
182 | Route::get('config', [AdminController::class, 'config_form'])->name('config'); | 184 | Route::get('config', [AdminController::class, 'config_form'])->name('config'); |
183 | // кабинет настройки сайта сохранение формы | 185 | // кабинет настройки сайта сохранение формы |
184 | Route::post('config', [AdminController::class, 'store_config'])->name('store_config'); | 186 | Route::post('config', [AdminController::class, 'store_config'])->name('store_config'); |
185 | 187 | ||
186 | // кабинет - пользователи | 188 | // кабинет - пользователи |
187 | Route::get('users', [UsersController::class, 'index'])->name('users'); | 189 | Route::get('users', [UsersController::class, 'index'])->name('users'); |
188 | 190 | ||
189 | // кабинет - пользователи | 191 | // кабинет - пользователи |
190 | Route::get('admin-users', [AdminController::class, 'index_admin'])->name('admin-users'); | 192 | Route::get('admin-users', [AdminController::class, 'index_admin'])->name('admin-users'); |
191 | 193 | ||
192 | // кабинет - работодатели | 194 | // кабинет - работодатели |
193 | Route::get('employers', [EmployersController::class, 'index'])->name('employers'); | 195 | Route::get('employers', [EmployersController::class, 'index'])->name('employers'); |
194 | 196 | ||
195 | Route::get('employers/comment/{employer}', [EmployersController::class, 'comment_read'])->name('comment-employer'); | 197 | Route::get('employers/comment/{employer}', [EmployersController::class, 'comment_read'])->name('comment-employer'); |
196 | 198 | ||
199 | Route::get('flot/add/{employer}', [EmployersController::class, 'add_flot'])->name('flot_add'); | ||
200 | Route::post('flot/add', [EmployersController::class, 'save_add_flot'])->name('flot_add_save'); | ||
201 | Route::get('flot/{flot}/{employer}', [EmployersController::class, 'edit_flot'])->name('flot'); | ||
202 | Route::put('flot/{flot}', [EmployersController::class, 'edit_save_flot'])->name('flot_edit'); | ||
203 | Route::get('flot/{flot}/{employer_id}/delete', [EmployersController::class, 'delete_flot'])->name('flot_delete'); | ||
204 | |||
197 | // кабинет - соискатели | 205 | // кабинет - соискатели |
198 | Route::get('workers', [WorkersController::class, 'index'])->name('workers'); | 206 | Route::get('workers', [WorkersController::class, 'index'])->name('workers'); |
199 | 207 | ||
200 | // кабинет - база данных | 208 | // кабинет - база данных |
201 | Route::get('basedata', [UsersController::class, 'index_bd'])->name('basedata'); | 209 | Route::get('basedata', [UsersController::class, 'index_bd'])->name('basedata'); |
202 | Route::get('basedata/add', [UsersController::class, 'add_bd'])->name('add-basedata'); | 210 | Route::get('basedata/add', [UsersController::class, 'add_bd'])->name('add-basedata'); |
203 | Route::post('basedata/add', [UsersController::class, 'add_store_bd'])->name('add-store-basedata'); | 211 | Route::post('basedata/add', [UsersController::class, 'add_store_bd'])->name('add-store-basedata'); |
204 | Route::get('basedata/edit/{user}', [UsersController::class, 'edit_bd'])->name('edit-basedata'); | 212 | Route::get('basedata/edit/{user}', [UsersController::class, 'edit_bd'])->name('edit-basedata'); |
205 | Route::put('basedata/edit/{user}', [UsersController::class, 'update_bd'])->name('update-basedata'); | 213 | Route::put('basedata/edit/{user}', [UsersController::class, 'update_bd'])->name('update-basedata'); |
206 | Route::delete('basedata/delete/{user}', [UsersController::class, 'destroy_bd'])->name('delete-basedata'); | 214 | Route::delete('basedata/delete/{user}', [UsersController::class, 'destroy_bd'])->name('delete-basedata'); |
207 | Route::get('basedata/doc/{user}', [UsersController::class, 'doc_bd'])->name('doc-basedata'); | 215 | Route::get('basedata/doc/{user}', [UsersController::class, 'doc_bd'])->name('doc-basedata'); |
208 | 216 | ||
209 | // кабинет - вакансии | 217 | // кабинет - вакансии |
210 | Route::get('ad-employers', [Ad_EmployersController::class, 'index'])->name('ad-employers'); | 218 | Route::get('ad-employers', [Ad_EmployersController::class, 'index'])->name('ad-employers'); |
211 | Route::get('ad-employers/add', [Ad_EmployersController::class, 'create'])->name('add-ad-employers'); | 219 | Route::get('ad-employers/add', [Ad_EmployersController::class, 'create'])->name('add-ad-employers'); |
212 | Route::post('ad-employers/add', [Ad_EmployersController::class, 'store'])->name('store-ad-employers'); | 220 | Route::post('ad-employers/add', [Ad_EmployersController::class, 'store'])->name('store-ad-employers'); |
213 | Route::get('ad-employers/edit/{ad_employer}', [Ad_EmployersController::class, 'edit'])->name('edit-ad-employers'); | 221 | Route::get('ad-employers/edit/{ad_employer}', [Ad_EmployersController::class, 'edit'])->name('edit-ad-employers'); |
214 | Route::post('ad-employers/edit/{ad_employer}', [Ad_EmployersController::class, 'update'])->name('update-ad-employers'); | 222 | Route::post('ad-employers/edit/{ad_employer}', [Ad_EmployersController::class, 'update'])->name('update-ad-employers'); |
215 | Route::delete('ad-employers/delete/{ad_employer}', [Ad_EmployersController::class, 'destroy'])->name('delete-ad-employer'); | 223 | Route::delete('ad-employers/delete/{ad_employer}', [Ad_EmployersController::class, 'destroy'])->name('delete-ad-employer'); |
216 | 224 | ||
225 | // Редактирование должности в вакансии | ||
226 | Route::put('update-jobs/{ad_jobs}', [Ad_EmployersController::class, 'update_ad_jobs'])->name('update_jobs'); | ||
227 | Route::get('edit-jobs/{ad_jobs}', [Ad_EmployersController::class, 'edit_jobs'])->name('edit_jobs'); | ||
228 | |||
229 | |||
217 | // кабинет - категории | 230 | // кабинет - категории |
218 | //Route::get('categories', [AdminController::class, 'index'])->name('categories'); | 231 | //Route::get('categories', [AdminController::class, 'index'])->name('categories'); |
219 | /* | 232 | /* |
220 | * CRUD-операции над Справочником Категории | 233 | * CRUD-операции над Справочником Категории |
221 | */ | 234 | */ |
222 | Route::resource('categories', CategoryController::class, ['except' => ['show']]); | 235 | Route::resource('categories', CategoryController::class, ['except' => ['show']]); |
223 | 236 | ||
224 | // CRUD-операции над справочником Категории для работодателей | 237 | // CRUD-операции над справочником Категории для работодателей |
225 | Route::resource('category-emp', CategoryEmpController::class, ['except' => ['show']]); | 238 | Route::resource('category-emp', CategoryEmpController::class, ['except' => ['show']]); |
226 | 239 | ||
227 | // CRUD-операции над справочником Образование | 240 | // CRUD-операции над справочником Образование |
228 | Route::resource('education', EducationController::class, ['except' => ['show']]); | 241 | Route::resource('education', EducationController::class, ['except' => ['show']]); |
229 | 242 | ||
230 | Route::get('rename-program-education', [EducationController::class, 'rename_program'])->name('rename-program-education'); | 243 | Route::get('rename-program-education', [EducationController::class, 'rename_program'])->name('rename-program-education'); |
231 | Route::get('program-education', [EducationController::class, 'add_program'])->name('add-program-education'); | 244 | Route::get('program-education', [EducationController::class, 'add_program'])->name('add-program-education'); |
232 | Route::post('program-education', [EducationController::class, 'store_program'])->name('store-program-education'); | 245 | Route::post('program-education', [EducationController::class, 'store_program'])->name('store-program-education'); |
233 | 246 | ||
234 | Route::get('program-education/edit/{program}/{education}', [EducationController::class, 'edit_program'])->name('edit-program-education'); | 247 | Route::get('program-education/edit/{program}/{education}', [EducationController::class, 'edit_program'])->name('edit-program-education'); |
235 | Route::post('program-education/edit/{program}/{education}', [EducationController::class, 'update_program'])->name('update-program-education'); | 248 | Route::post('program-education/edit/{program}/{education}', [EducationController::class, 'update_program'])->name('update-program-education'); |
236 | 249 | ||
237 | Route::get('program-education/delete/{program}/{education}', [EducationController::class, 'delete_program'])->name('delete-program-education'); | 250 | Route::get('program-education/delete/{program}/{education}', [EducationController::class, 'delete_program'])->name('delete-program-education'); |
238 | 251 | ||
239 | //Route::get('job-titles', [AdminController::class, 'index'])->name('job-titles'); | 252 | //Route::get('job-titles', [AdminController::class, 'index'])->name('job-titles'); |
240 | /* | 253 | /* |
241 | * кабинет - CRUD-операции по справочнику должности | 254 | * кабинет - CRUD-операции по справочнику должности |
242 | * | 255 | * |
243 | */ | 256 | */ |
244 | Route::resource('job-titles', JobTitlesController::class, ['except' => ['show']]); | 257 | Route::resource('job-titles', JobTitlesController::class, ['except' => ['show']]); |
245 | 258 | ||
246 | // кабинет - сообщения (чтение чужих) | 259 | // кабинет - сообщения (чтение чужих) |
247 | Route::get('messages', [MsgAnswersController::class, 'messages'])->name('messages'); | 260 | Route::get('messages', [MsgAnswersController::class, 'messages'])->name('messages'); |
248 | // кабинет - просмотр сообщения чужого (чтение) | 261 | // кабинет - просмотр сообщения чужого (чтение) |
249 | Route::get('messages/{message}', [MsgAnswersController::class, 'read_message'])->name('read-message'); | 262 | Route::get('messages/{message}', [MsgAnswersController::class, 'read_message'])->name('read-message'); |
250 | 263 | ||
251 | // кабинет - сообщения (админские) | 264 | // кабинет - сообщения (админские) |
252 | Route::get('admin-messages', [MsgAnswersController::class, 'admin_messages'])->name('admin-messages'); | 265 | Route::get('admin-messages', [MsgAnswersController::class, 'admin_messages'])->name('admin-messages'); |
253 | // кабинет - сообщения (админские) | 266 | // кабинет - сообщения (админские) |
254 | Route::post('admin-messages', [MsgAnswersController::class, 'admin_messages_post'])->name('admin-messages-post'); | 267 | Route::post('admin-messages', [MsgAnswersController::class, 'admin_messages_post'])->name('admin-messages-post'); |
255 | // кабинет - sql - конструкция запросов | 268 | // кабинет - sql - конструкция запросов |
256 | Route::get('messages-sql', [MsgAnswersController::class, 'messages_sql'])->name('messages-sql'); | 269 | Route::get('messages-sql', [MsgAnswersController::class, 'messages_sql'])->name('messages-sql'); |
257 | 270 | ||
258 | /* | 271 | /* |
259 | * Расписанный подход в описании каждой директорий групп пользователей. | 272 | * Расписанный подход в описании каждой директорий групп пользователей. |
260 | */ | 273 | */ |
261 | // кабинет - группы пользователей | 274 | // кабинет - группы пользователей |
262 | Route::get('groups', [GroupsController::class, 'index'])->name('groups'); | 275 | Route::get('groups', [GroupsController::class, 'index'])->name('groups'); |
263 | // кабинет - добавление форма группы пользователей | 276 | // кабинет - добавление форма группы пользователей |
264 | Route::get('groups/add', [GroupsController::class, 'add'])->name('add-group'); | 277 | Route::get('groups/add', [GroupsController::class, 'add'])->name('add-group'); |
265 | // кабинет - сохранение формы группы пользователей | 278 | // кабинет - сохранение формы группы пользователей |
266 | Route::post('groups/add', [GroupsController::class, 'store'])->name('add-group-store'); | 279 | Route::post('groups/add', [GroupsController::class, 'store'])->name('add-group-store'); |
267 | // кабинет - редактирование форма группы пользователей | 280 | // кабинет - редактирование форма группы пользователей |
268 | Route::get('groups/edit/{group}', [GroupsController::class, 'edit'])->name('edit-group'); | 281 | Route::get('groups/edit/{group}', [GroupsController::class, 'edit'])->name('edit-group'); |
269 | // кабинет - сохранение редактированной формы группы пользователей | 282 | // кабинет - сохранение редактированной формы группы пользователей |
270 | Route::post('groups/edit/{group}', [GroupsController::class, 'update'])->name('update-group'); | 283 | Route::post('groups/edit/{group}', [GroupsController::class, 'update'])->name('update-group'); |
271 | // кабинет - удаление группы пользователей | 284 | // кабинет - удаление группы пользователей |
272 | Route::delete('groups/delete/{group}', [GroupsController::class, 'destroy'])->name('delete-group'); | 285 | Route::delete('groups/delete/{group}', [GroupsController::class, 'destroy'])->name('delete-group'); |
273 | 286 | ||
274 | 287 | ||
275 | // кабинет - список админов | 288 | // кабинет - список админов |
276 | Route::get('group-admin', [AdminController::class, 'index'])->name('group-admin'); | 289 | Route::get('group-admin', [AdminController::class, 'index'])->name('group-admin'); |
277 | 290 | ||
278 | 291 | ||
279 | /////редактор////// кабинет - редактор сайта//////////////////////// | 292 | /////редактор////// кабинет - редактор сайта//////////////////////// |
280 | Route::get('editor-site', function() { | 293 | Route::get('editor-site', function() { |
281 | return view('admin.editor.index'); | 294 | return view('admin.editor.index'); |
282 | })->name('editor-site'); | 295 | })->name('editor-site'); |
283 | 296 | ||
284 | 297 | ||
285 | // кабинет - редактор шапки-футера сайта | 298 | // кабинет - редактор шапки-футера сайта |
286 | Route::get('edit-blocks', [CompanyController::class, 'editblocks'])->name('edit-blocks'); | 299 | Route::get('edit-blocks', [CompanyController::class, 'editblocks'])->name('edit-blocks'); |
287 | Route::get('edit-bloks/add', [CompanyController::class, 'editblock_add'])->name('add-block'); | 300 | Route::get('edit-bloks/add', [CompanyController::class, 'editblock_add'])->name('add-block'); |
288 | Route::post('edit-bloks/add', [CompanyController::class, 'editblock_store'])->name('add-block-store'); | 301 | Route::post('edit-bloks/add', [CompanyController::class, 'editblock_store'])->name('add-block-store'); |
289 | Route::get('edit-bloks/ajax', [CompanyController::class, 'editblock_ajax'])->name('ajax.block'); | 302 | Route::get('edit-bloks/ajax', [CompanyController::class, 'editblock_ajax'])->name('ajax.block'); |
290 | Route::get('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_edit'])->name('edit-block'); | 303 | Route::get('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_edit'])->name('edit-block'); |
291 | Route::put('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_update'])->name('update-block'); | 304 | Route::put('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_update'])->name('update-block'); |
292 | Route::delete('edit-bloks/delete/{block}', [CompanyController::class, 'editblock_destroy'])->name('delete-block'); | 305 | Route::delete('edit-bloks/delete/{block}', [CompanyController::class, 'editblock_destroy'])->name('delete-block'); |
293 | 306 | ||
294 | 307 | ||
295 | // кабинет - редактор должности на главной | 308 | // кабинет - редактор должности на главной |
296 | Route::get('job-titles-main', [CompanyController::class, 'job_titles_main'])->name('job-titles-main'); | 309 | Route::get('job-titles-main', [CompanyController::class, 'job_titles_main'])->name('job-titles-main'); |
297 | 310 | ||
298 | // кабинет - редактор работодатели на главной | 311 | // кабинет - редактор работодатели на главной |
299 | Route::get('employers-main', [CompanyController::class, 'employers_main'])->name('employers-main'); | 312 | Route::get('employers-main', [CompanyController::class, 'employers_main'])->name('employers-main'); |
300 | 313 | ||
301 | 314 | ||
302 | // кабинет - редактор seo-сайта | 315 | // кабинет - редактор seo-сайта |
303 | Route::get('editor-seo', [CompanyController::class, 'editor_seo'])->name('editor-seo'); | 316 | Route::get('editor-seo', [CompanyController::class, 'editor_seo'])->name('editor-seo'); |
304 | Route::get('editor-seo/add', [CompanyController::class, 'editor_seo_add'])->name('add-seo'); | 317 | Route::get('editor-seo/add', [CompanyController::class, 'editor_seo_add'])->name('add-seo'); |
305 | Route::post('editor-seo/add', [CompanyController::class, 'editor_seo_store'])->name('add-seo-store'); | 318 | Route::post('editor-seo/add', [CompanyController::class, 'editor_seo_store'])->name('add-seo-store'); |
306 | Route::get('editor-seo/ajax', [CompanyController::class, 'editor_seo_ajax'])->name('ajax.seo'); | 319 | Route::get('editor-seo/ajax', [CompanyController::class, 'editor_seo_ajax'])->name('ajax.seo'); |
307 | Route::get('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_edit'])->name('edit-seo'); | 320 | Route::get('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_edit'])->name('edit-seo'); |
308 | Route::put('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_update'])->name('update-seo'); | 321 | Route::put('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_update'])->name('update-seo'); |
309 | Route::delete('editor-seo/delete/{page}', [CompanyController::class, 'editor_seo_destroy'])->name('delete-seo'); | 322 | Route::delete('editor-seo/delete/{page}', [CompanyController::class, 'editor_seo_destroy'])->name('delete-seo'); |
310 | 323 | ||
311 | 324 | ||
312 | // кабинет - редактор страниц | 325 | // кабинет - редактор страниц |
313 | Route::get('editor-pages', [CompanyController::class, 'editor_pages'])->name('editor-pages'); | 326 | Route::get('editor-pages', [CompanyController::class, 'editor_pages'])->name('editor-pages'); |
314 | // кабинет - добавление страницы | 327 | // кабинет - добавление страницы |
315 | Route::get('editor-pages/add', [CompanyController::class, 'editor_pages_add'])->name('add-page'); | 328 | Route::get('editor-pages/add', [CompanyController::class, 'editor_pages_add'])->name('add-page'); |
316 | // кабинет - сохранение формы страницы | 329 | // кабинет - сохранение формы страницы |
317 | Route::post('editor-page/add', [CompanyController::class, 'editor_pages_store'])->name('add-page-store'); | 330 | Route::post('editor-page/add', [CompanyController::class, 'editor_pages_store'])->name('add-page-store'); |
318 | // кабинет - редактирование форма страницы | 331 | // кабинет - редактирование форма страницы |
319 | Route::get('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_edit'])->name('edit-page'); | 332 | Route::get('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_edit'])->name('edit-page'); |
320 | // кабинет - сохранение редактированной формы страницы | 333 | // кабинет - сохранение редактированной формы страницы |
321 | Route::put('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_update'])->name('update-page'); | 334 | Route::put('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_update'])->name('update-page'); |
322 | // кабинет - удаление страницы | 335 | // кабинет - удаление страницы |
323 | Route::delete('editor-pages/delete/{page}', [CompanyController::class, 'editor_pages_destroy'])->name('delete-page'); | 336 | Route::delete('editor-pages/delete/{page}', [CompanyController::class, 'editor_pages_destroy'])->name('delete-page'); |
324 | 337 | ||
325 | 338 | ||
326 | // кабинет - реклама сайта | 339 | // кабинет - реклама сайта |
327 | Route::get('reclames', [CompanyController::class, 'reclames'])->name('reclames'); | 340 | Route::get('reclames', [CompanyController::class, 'reclames'])->name('reclames'); |
328 | Route::get('reclames/add', [CompanyController::class, 'reclames_add'])->name('add-reclames'); | 341 | Route::get('reclames/add', [CompanyController::class, 'reclames_add'])->name('add-reclames'); |
329 | Route::post('reclames/add', [CompanyController::class, 'reclames_store'])->name('add-reclames-store'); | 342 | Route::post('reclames/add', [CompanyController::class, 'reclames_store'])->name('add-reclames-store'); |
330 | Route::get('reclames/edit/{reclame}', [CompanyController::class, 'reclames_edit'])->name('edit-reclames'); | 343 | Route::get('reclames/edit/{reclame}', [CompanyController::class, 'reclames_edit'])->name('edit-reclames'); |
331 | Route::put('reclames/edit/{reclame}', [CompanyController::class, 'reclames_update'])->name('update-reclames'); | 344 | Route::put('reclames/edit/{reclame}', [CompanyController::class, 'reclames_update'])->name('update-reclames'); |
332 | Route::delete('reclames/delete/{reclame}', [CompanyController::class, 'reclames_destroy'])->name('delete-reclames'); | 345 | Route::delete('reclames/delete/{reclame}', [CompanyController::class, 'reclames_destroy'])->name('delete-reclames'); |
333 | //////////////////////////////////////////////////////////////////////// | 346 | //////////////////////////////////////////////////////////////////////// |
334 | 347 | ||
335 | 348 | ||
336 | // кабинет - отзывы о работодателе для модерации | 349 | // кабинет - отзывы о работодателе для модерации |
337 | Route::get('answers', [EmployersController::class, 'answers'])->name('answers'); | 350 | Route::get('answers', [EmployersController::class, 'answers'])->name('answers'); |
338 | 351 | ||
339 | // Общая страница статистики | 352 | // Общая страница статистики |
340 | Route::get('statics', function () { | 353 | Route::get('statics', function () { |
341 | return view('admin.static.index'); | 354 | return view('admin.static.index'); |
342 | })->name('statics'); | 355 | })->name('statics'); |
343 | 356 | ||
344 | // кабинет - статистика работников | 357 | // кабинет - статистика работников |
345 | Route::get('static-workers', [WorkersController::class, 'static_workers'])->name('static-workers'); | 358 | Route::get('static-workers', [WorkersController::class, 'static_workers'])->name('static-workers'); |
346 | 359 | ||
347 | // кабинет - статистика вакансий работодателя | 360 | // кабинет - статистика вакансий работодателя |
348 | Route::get('static-ads', [EmployersController::class, 'static_ads'])->name('static-ads'); | 361 | Route::get('static-ads', [EmployersController::class, 'static_ads'])->name('static-ads'); |
349 | 362 | ||
350 | // кабинет - справочник - блоки информации (дипломы и документы) для резюме работника | 363 | // кабинет - справочник - блоки информации (дипломы и документы) для резюме работника |
351 | /* | 364 | /* |
352 | * CRUD-операции над справочником дипломы и документы | 365 | * CRUD-операции над справочником дипломы и документы |
353 | */ | 366 | */ |
354 | //Route::get('infobloks', [WorkersController::class, 'infobloks'])->name('infobloks'); | 367 | //Route::get('infobloks', [WorkersController::class, 'infobloks'])->name('infobloks'); |
355 | Route::resource('infobloks', InfoBloksController::class, ['except' => ['show']]); | 368 | Route::resource('infobloks', InfoBloksController::class, ['except' => ['show']]); |
356 | 369 | ||
357 | // кабинет - роли пользователя | 370 | // кабинет - роли пользователя |
358 | Route::get('roles', [UsersController::class, 'roles'])->name('roles'); | 371 | Route::get('roles', [UsersController::class, 'roles'])->name('roles'); |
359 | 372 | ||
360 | Route::get('admin_roles', [UsersController::class, 'admin_roles'])->name('admin_roles'); | 373 | Route::get('admin_roles', [UsersController::class, 'admin_roles'])->name('admin_roles'); |
361 | 374 | ||
362 | Route::get('logs', function() { | 375 | Route::get('logs', function() { |
363 | $files = Storage::files('logs/laravel.log'); | 376 | $files = Storage::files('logs/laravel.log'); |
364 | print_r($files); | 377 | print_r($files); |
365 | })->name('logs'); | 378 | })->name('logs'); |
366 | }); | 379 | }); |
367 | 380 | ||
368 | // Инструментальные страницы | 381 | // Инструментальные страницы |
369 | Route::post('ckeditor/upload', [CKEditorController::class, 'upload'])->name('ckeditor.image-upload'); | 382 | Route::post('ckeditor/upload', [CKEditorController::class, 'upload'])->name('ckeditor.image-upload'); |
370 | 383 | ||
371 | Route::get('redis/', [PagesController::class, 'redis'])->name('redis'); | 384 | Route::get('redis/', [PagesController::class, 'redis'])->name('redis'); |
372 | 385 | ||
373 | Route::get('excel/', [PagesController::class, 'excel'])->name('excel'); | 386 | Route::get('excel/', [PagesController::class, 'excel'])->name('excel'); |
374 | 387 | ||
375 | // Страницы с произвольным контентом | 388 | // Страницы с произвольным контентом |
376 | Route::get('pages/{pages:slug}', [PagesController::class, 'pages'])->name('page'); | 389 | Route::get('pages/{pages:slug}', [PagesController::class, 'pages'])->name('page'); |
377 | 390 | ||
378 | // Публичные страницы соискателя | 391 | // Публичные страницы соискателя |
379 | Route::get('workers/profile/{worker}', [WorkerController::class, 'profile'])->name('worker_page'); | 392 | Route::get('workers/profile/{worker}', [WorkerController::class, 'profile'])->name('worker_page'); |
380 | 393 | ||
381 | //Страница вакансии | 394 | //Страница вакансии |
382 | Route::get('employer/ad/{ad_employer}', [AdEmployerController::class, 'ad_employer'])->name('ad-employer'); | 395 | Route::get('employer/ad/{ad_employer}', [AdEmployerController::class, 'ad_employer'])->name('ad-employer'); |
383 | 396 | ||
384 | //Вакансии | 397 | //Вакансии |
385 | Route::get('vacancies', [MainController::class, 'vacancies'])->name('vacancies'); | 398 | Route::get('vacancies', [MainController::class, 'vacancies'])->name('vacancies'); |
386 | 399 | ||
387 | //Вакансии категория детальная | 400 | //Вакансии категория детальная |
388 | Route::get('list-vacancies/{categories}/{job_titles?}', [MainController::class, 'list_vacancies'])->name('list-vacancies'); | 401 | Route::get('list-vacancies/{categories}', [MainController::class, 'list_vacancies'])->name('list-vacancies'); |
402 | |||
403 | //Детальная страница вакансии - работодателя | ||
404 | Route::get('vacancie/{vacancy}', [FrontEmployersController::class, 'vacancie'])->name('vacancie'); | ||
389 | 405 | ||
390 | //Судоходные компании | 406 | //Судоходные компании |
391 | Route::get('shipping-companies', [MainController::class, 'shipping_companies'])->name('shipping_companies'); | 407 | Route::get('shipping-companies', [FrontCompanyController::class, 'shipping_companies'])->name('shipping_companies'); |
408 | |||
409 | //Детальная инфа о компании | ||
410 | Route::get('info-company/{company}', [FrontCompanyController::class, 'info_company'])->name('info_company'); | ||
392 | 411 | ||
393 | //Образование | 412 | //Образование |
394 | Route::get('education', [MainController::class, 'education'])->name('education'); | 413 | Route::get('education', [MainController::class, 'education'])->name('education'); |
395 | 414 | ||
396 | //Условия размещения для соискателей | ||
397 | Route::get('if-public', [MainController::class, 'if_public'])->name('if_public'); | ||
398 | |||
399 | //Новости | 415 | //Новости |
400 | Route::get('news', [MainController::class, 'news'])->name('news'); | 416 | Route::get('news', [MainController::class, 'news'])->name('news'); |
401 | 417 | ||
402 | //Контакты | 418 | //Контакты |
403 | Route::get('contacts', [MainController::class, 'contacts'])->name('contacts'); | 419 | Route::get('contacts', [MainController::class, 'contacts'])->name('contacts'); |
404 | 420 | ||
405 | //Публичная оферта | ||
406 | Route::get('public-offer', [WorkerController::class, 'public_offer'])->name('public_offer'); | ||
407 | |||
408 | //База резюме | 421 | //База резюме |
409 | Route::get('bd-resume', [MainController::class, 'bd_resume'])->name('bd_resume'); | 422 | Route::get('bd-resume', [MainController::class, 'bd_resume'])->name('bd_resume'); |