Commit d152a3a68ea75a05369b83e08b3dfbd276998a38

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

Создание основных страниц публичной части сайта

Showing 60 changed files with 2320 additions and 608 deletions Inline Diff

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
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 }} &mdash; {{ $cat->max_salary }} ₽</u> 9 <u>{{ $cat->min_salary }} &mdash; {{ $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 &copy; 2023 &mdash; 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>&copy; 2023 &mdash; 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 &copy; 2023 &mdash; RekaMore.su 134 &copy; 2023 &mdash; 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>&copy; 2023 &mdash; RekaMore.su</div> 197 <div>&copy; 2023 &mdash; 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 }} &mdash; {{ $cat->max_salary }} ₽</u> 78 <u>{{ $cat->min_salary }} &mdash; {{ $cat->max_salary }} ₽</u>
79 <i>Вакансий: <span>{{ $cat->cnt }}</span></i> 79 <i>Вакансий: <span>{{ $cat->cnt }}</span></i>
80 </span> 80 </span>
81 </a> 81 </a>
82 @php $i++; 82 @php $i++;
83 if ($i > 4) {$i = 0;} 83 if ($i > 4) {$i = 0;}
84 @endphp 84 @endphp
85 @endforeach 85 @endforeach
86 @else 86 @else
87 Тут пока нет никаких вакансий 87 Тут пока нет никаких вакансий
88 @endif 88 @endif
89 </div> 89 </div>
90 </div> 90 </div>
91 </div> 91 </div>
92 </div> 92 </div>
93 </main> 93 </main>
94 </div> 94 </div>
95 @endsection 95 @endsection
96 96
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');