Commit c6c0e4a0a8419560f532e709e81232d2b81cd23e

Authored by Андрей Ларионов

Merge branch 'master' of http://gitlab.nologostudio.ru/alarionov/rekamore-su into septembe

Showing 19 changed files Inline Diff

app/Console/Commands/DeleteExpiredAutoliftOptions.php
1 <?php 1 <?php
2 2
3 namespace App\Console\Commands; 3 namespace App\Console\Commands;
4 4
5 use App\Models\EmployerAutoliftOption; 5 use App\Models\EmployerAutoliftOption;
6 use App\Models\WorkerAutoliftOption; 6 use App\Models\WorkerAutoliftOption;
7 use Illuminate\Console\Command; 7 use Illuminate\Console\Command;
8 8
9 class DeleteExpiredAutoliftOptions extends Command 9 class DeleteExpiredAutoliftOptions extends Command
10 { 10 {
11 protected $signature = 'vacancy:delete_expired'; 11 protected $signature = 'vacancy:delete_expired';
12 12
13 protected $description = 'Command description'; 13 protected $description = 'Command description';
14 14
15 public function handle() 15 public function handle()
16 { 16 {
17 EmployerAutoliftOption::query() 17 EmployerAutoliftOption::query()
18 ->whereRaw('`updated_at` < DATE_SUB(NOW(), INTERVAL `days_repeat` DAY)') 18 ->whereRaw('`updated_at` < DATE_SUB(NOW(), INTERVAL `days_repeat` DAY)')
19 ->update([ 19 ->delete();
20 'is_enabled' => false
21 ]);
22 WorkerAutoliftOption::query() 20 WorkerAutoliftOption::query()
23 ->whereRaw('`updated_at` < DATE_SUB(NOW(), INTERVAL `days_repeat` DAY)') 21 ->whereRaw('`updated_at` < DATE_SUB(NOW(), INTERVAL `days_repeat` DAY)')
24 ->update([ 22 ->delete();
25 'is_enabled' => false
26 ]);
27 return Command::SUCCESS; 23 return Command::SUCCESS;
28 } 24 }
29 } 25 }
30 26
app/Console/Commands/DispatchResumeLiftJobCommand.php
1 <?php 1 <?php
2 2
3 namespace App\Console\Commands; 3 namespace App\Console\Commands;
4 4
5 use App\Jobs\LiftVacancyJob; 5 use App\Jobs\LiftResumeJob;
6 use App\Jobs\SendVacancyToTelegramJob;
7 use App\Models\EmployerAutoliftOption;
8 use App\Models\WorkerAutoliftOption; 6 use App\Models\WorkerAutoliftOption;
9 use Illuminate\Console\Command; 7 use Illuminate\Console\Command;
10 8
11 class DispatchResumeLiftJobCommand extends Command 9 class DispatchResumeLiftJobCommand extends Command
12 { 10 {
13 protected $signature ='resume:dispatch'; 11 protected $signature ='resume:dispatch';
14 12
15 public function handle() 13 public function handle()
16 { 14 {
17 $now = now()->timezone('Europe/Moscow')->format('H:i'); 15 $now = now()->timezone('Europe/Moscow')->format('H:i');
18 16
19 $workers = WorkerAutoliftOption::query() 17 $workers = WorkerAutoliftOption::query()
20 ->where(function ($query) use ($now) { 18 ->where(function ($query) use ($now) {
21 $query->where('times_per_day', 1) 19 $query->where('times_per_day', 1)
22 ->where('time_send_first', $now); 20 ->where('time_send_first', $now);
23 }) 21 })
24 ->orWhere(function ($query) use ($now) { 22 ->orWhere(function ($query) use ($now) {
25 $query->where('times_per_day', 2) 23 $query->where('times_per_day', 2)
26 ->where(function ($query) use ($now) { 24 ->where(function ($query) use ($now) {
27 $query->where('time_send_first', $now) 25 $query->where('time_send_first', $now)
28 ->orWhere('time_send_second', $now); 26 ->orWhere('time_send_second', $now);
29 }); 27 });
30 }) 28 })
31 ->orWhere(function ($query) use ($now) { 29 ->orWhere(function ($query) use ($now) {
32 $query->where('times_per_day', 3) 30 $query->where('times_per_day', 3)
33 ->where(function ($query) use ($now) { 31 ->where(function ($query) use ($now) {
34 $query->where('time_send_first', $now) 32 $query->where('time_send_first', $now)
35 ->orWhere('time_send_second', $now) 33 ->orWhere('time_send_second', $now)
36 ->orWhere('time_send_third', $now); 34 ->orWhere('time_send_third', $now);
37 }); 35 });
38
39 }) 36 })
40 ->get(); 37 ->get();
41 38
42 LiftVacancyJob::dispatch($workers->pluck('worker_id')->toArray()); 39 LiftResumeJob::dispatch($workers->pluck('worker_id')->toArray());
43 40
44 return Command::SUCCESS; 41 return Command::SUCCESS;
45 } 42 }
46 } 43 }
47 44
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\Classes\RusDate; 5 use App\Classes\RusDate;
6 use App\Classes\Tools; 6 use App\Classes\Tools;
7 use App\Http\Requests\BaseUser_min_Request; 7 use App\Http\Requests\BaseUser_min_Request;
8 use App\Http\Requests\FlotRequest; 8 use App\Http\Requests\FlotRequest;
9 use App\Http\Requests\MessagesRequiest; 9 use App\Http\Requests\MessagesRequiest;
10 use App\Http\Requests\VacancyRequestEdit; 10 use App\Http\Requests\VacancyRequestEdit;
11 use App\Mail\MailCreateEmployer; 11 use App\Mail\MailCreateEmployer;
12 use App\Mail\MailSotrudnichestvo; 12 use App\Mail\MailSotrudnichestvo;
13 use App\Mail\MassSendingMessages; 13 use App\Mail\MassSendingMessages;
14 use App\Mail\SendAllMessages; 14 use App\Mail\SendAllMessages;
15 use App\Models\Ad_employer; 15 use App\Models\Ad_employer;
16 use App\Models\ad_response; 16 use App\Models\ad_response;
17 use App\Models\Category; 17 use App\Models\Category;
18 use App\Models\Chat; 18 use App\Models\Chat;
19 use App\Models\Employer; 19 use App\Models\Employer;
20 use App\Models\EmployerAutoliftOption; 20 use App\Models\EmployerAutoliftOption;
21 use App\Models\Flot; 21 use App\Models\Flot;
22 use App\Models\Job_title; 22 use App\Models\Job_title;
23 use App\Models\Like_worker; 23 use App\Models\Like_worker;
24 use App\Models\Message; 24 use App\Models\Message;
25 use App\Models\Worker; 25 use App\Models\Worker;
26 use App\Models\MessagesRequests; 26 use App\Models\MessagesRequests;
27 use Carbon\Carbon; 27 use Carbon\Carbon;
28 use Illuminate\Auth\Events\Registered; 28 use Illuminate\Auth\Events\Registered;
29 use Illuminate\Database\Eloquent\Builder; 29 use Illuminate\Database\Eloquent\Builder;
30 use Illuminate\Http\RedirectResponse; 30 use Illuminate\Http\RedirectResponse;
31 use Illuminate\Http\Request; 31 use Illuminate\Http\Request;
32 use Illuminate\Support\Facades\Auth; 32 use Illuminate\Support\Facades\Auth;
33 use Illuminate\Support\Facades\Hash; 33 use Illuminate\Support\Facades\Hash;
34 use Illuminate\Support\Facades\Log; 34 use Illuminate\Support\Facades\Log;
35 use Illuminate\Support\Facades\Mail; 35 use Illuminate\Support\Facades\Mail;
36 use Illuminate\Support\Facades\Storage; 36 use Illuminate\Support\Facades\Storage;
37 use App\Models\User as User_Model; 37 use App\Models\User as User_Model;
38 use Illuminate\Support\Facades\Validator; 38 use Illuminate\Support\Facades\Validator;
39 use App\Enums\DbExportColumns; 39 use App\Enums\DbExportColumns;
40 use Illuminate\View\View; 40 use Illuminate\View\View;
41 use JsonException; 41 use JsonException;
42 use Throwable; 42 use Throwable;
43 43
44 class EmployerController extends Controller 44 class EmployerController extends Controller
45 { 45 {
46 public function vacancie($vacancy, Request $request) { 46 public function vacancie($vacancy, Request $request) {
47 $title = 'Заголовок вакансии'; 47 $title = 'Заголовок вакансии';
48 $Query = Ad_employer::with('jobs')-> 48 $Query = Ad_employer::with('jobs')->
49 with('cat')-> 49 with('cat')->
50 with('employer')-> 50 with('employer')->
51 with('jobs_code')-> 51 with('jobs_code')->
52 select('ad_employers.*')-> 52 select('ad_employers.*')->
53 where('id', '=', $vacancy)->get(); 53 where('id', '=', $vacancy)->get();
54 54
55 if (isset(Auth()->user()->id)) 55 if (isset(Auth()->user()->id))
56 $uid = Auth()->user()->id; 56 $uid = Auth()->user()->id;
57 else 57 else
58 $uid = 0; 58 $uid = 0;
59 $title = $Query[0]->name; 59 $title = $Query[0]->name;
60 if ($request->ajax()) { 60 if ($request->ajax()) {
61 return view('ajax.vacance-item', compact('Query','uid')); 61 return view('ajax.vacance-item', compact('Query','uid'));
62 } else { 62 } else {
63 return view('vacance-item', compact('title', 'Query', 'uid')); 63 return view('vacance-item', compact('title', 'Query', 'uid'));
64 } 64 }
65 } 65 }
66 66
67 public function logout() { 67 public function logout() {
68 Auth::logout(); 68 Auth::logout();
69 return redirect()->route('index') 69 return redirect()->route('index')
70 ->with('success', 'Вы вышли из личного кабинета'); 70 ->with('success', 'Вы вышли из личного кабинета');
71 } 71 }
72 72
73 public function employer_info() { 73 public function employer_info() {
74 // код юзера 74 // код юзера
75 $user_info = Auth()->user(); 75 $user_info = Auth()->user();
76 // вьюшка для вывода данных 76 // вьюшка для вывода данных
77 return view('employers.info', compact('user_info')); 77 return view('employers.info', compact('user_info'));
78 } 78 }
79 79
80 public function employer_info_save(User_Model $user, BaseUser_min_Request $request) { 80 public function employer_info_save(User_Model $user, BaseUser_min_Request $request) {
81 // Все данные через реквест 81 // Все данные через реквест
82 $all = $request->all(); 82 $all = $request->all();
83 unset($all['_token']); 83 unset($all['_token']);
84 // обновление 84 // обновление
85 $user->update($all); 85 $user->update($all);
86 return redirect()->route('employer.employer_info'); 86 return redirect()->route('employer.employer_info');
87 } 87 }
88 88
89 public function cabinet() { 89 public function cabinet() {
90 $id = Auth()->user()->id; 90 $id = Auth()->user()->id;
91 $Employer = Employer::query()->with('users')->with('ads')->with('flots')-> 91 $Employer = Employer::query()->with('users')->with('ads')->with('flots')->
92 WhereHas('users', 92 WhereHas('users',
93 function (Builder $query) use ($id) {$query->Where('id', $id); 93 function (Builder $query) use ($id) {$query->Where('id', $id);
94 })->get(); 94 })->get();
95 return view('employers.cabinet45', compact('Employer')); 95 return view('employers.cabinet45', compact('Employer'));
96 } 96 }
97 97
98 public function slider_flot() { 98 public function slider_flot() {
99 $id = Auth()->user()->id; 99 $id = Auth()->user()->id;
100 $Employer = Employer::query()->with('users')->with('ads')->with('flots')-> 100 $Employer = Employer::query()->with('users')->with('ads')->with('flots')->
101 WhereHas('users', 101 WhereHas('users',
102 function (Builder $query) use ($id) {$query->Where('id', $id); 102 function (Builder $query) use ($id) {$query->Where('id', $id);
103 })->get(); 103 })->get();
104 return view('employers.fly-flot', compact('Employer')); 104 return view('employers.fly-flot', compact('Employer'));
105 } 105 }
106 106
107 public function cabinet_save(Employer $Employer, Request $request) { 107 public function cabinet_save(Employer $Employer, Request $request) {
108 $params = $request->all(); 108 $params = $request->all();
109 $params['user_id'] = Auth()->user()->id; 109 $params['user_id'] = Auth()->user()->id;
110 $id = $Employer->id; 110 $id = $Employer->id;
111 111
112 if ($request->has('logo')) { 112 if ($request->has('logo')) {
113 if (!empty($Employer->logo)) { 113 if (!empty($Employer->logo)) {
114 Storage::delete($Employer->logo); 114 Storage::delete($Employer->logo);
115 } 115 }
116 $params['logo'] = $request->file('logo')->store("employer/$id", 'public'); 116 $params['logo'] = $request->file('logo')->store("employer/$id", 'public');
117 } 117 }
118 118
119 $Employer->update($params); 119 $Employer->update($params);
120 120
121 return redirect()->route('employer.cabinet')->with('success', 'Данные были успешно сохранены'); 121 return redirect()->route('employer.cabinet')->with('success', 'Данные были успешно сохранены');
122 } 122 }
123 123
124 public function save_add_flot(FlotRequest $request) { 124 public function save_add_flot(FlotRequest $request) {
125 // отмена 125 // отмена
126 $params = $request->all(); 126 $params = $request->all();
127 127
128 if ($request->has('image')) { 128 if ($request->has('image')) {
129 $params['image'] = $request->file('image')->store("flot", 'public'); 129 $params['image'] = $request->file('image')->store("flot", 'public');
130 } 130 }
131 Flot::create($params); 131 Flot::create($params);
132 $data_flots = Flot::query()->where('employer_id', $request->get('employer_if'))->get(); 132 $data_flots = Flot::query()->where('employer_id', $request->get('employer_if'))->get();
133 return redirect()->route('employer.slider_flot')->with('success', 'Новый корабль был добавлен'); 133 return redirect()->route('employer.slider_flot')->with('success', 'Новый корабль был добавлен');
134 } 134 }
135 135
136 public function edit_flot(Flot $Flot, Employer $Employer) { 136 public function edit_flot(Flot $Flot, Employer $Employer) {
137 return view('employers.edit-flot', compact('Flot', 'Employer')); 137 return view('employers.edit-flot', compact('Flot', 'Employer'));
138 } 138 }
139 139
140 public function update_flot(FlotRequest $request, Flot $Flot) { 140 public function update_flot(FlotRequest $request, Flot $Flot) {
141 $params = $request->all(); 141 $params = $request->all();
142 142
143 if ($request->has('image')) { 143 if ($request->has('image')) {
144 if (!empty($flot->image)) { 144 if (!empty($flot->image)) {
145 Storage::delete($flot->image); 145 Storage::delete($flot->image);
146 } 146 }
147 $params['image'] = $request->file('image')->store("flot", 'public'); 147 $params['image'] = $request->file('image')->store("flot", 'public');
148 } else { 148 } else {
149 if (!empty($flot->image)) $params['image'] = $flot->image; 149 if (!empty($flot->image)) $params['image'] = $flot->image;
150 } 150 }
151 151
152 $Flot->update($params); 152 $Flot->update($params);
153 return redirect()->route('employer.slider_flot')->with('success', 'Новый корабль был добавлен'); 153 return redirect()->route('employer.slider_flot')->with('success', 'Новый корабль был добавлен');
154 } 154 }
155 155
156 public function delete_flot(Flot $Flot) { 156 public function delete_flot(Flot $Flot) {
157 $data_flots = Flot::query()->where('employer_id', $Flot->employer_id)->get(); 157 $data_flots = Flot::query()->where('employer_id', $Flot->employer_id)->get();
158 158
159 if (isset($Flot->id)) $Flot->delete(); 159 if (isset($Flot->id)) $Flot->delete();
160 return redirect()->route('employer.slider_flot')->with('success', 'Корабль был удален'); 160 return redirect()->route('employer.slider_flot')->with('success', 'Корабль был удален');
161 } 161 }
162 162
163 // Форма добавления вакансий 163 // Форма добавления вакансий
164 public function cabinet_vacancie() { 164 public function cabinet_vacancie() {
165 /** @var User_Model $user */ 165 /** @var User_Model $user */
166 $user = Auth()->user(); 166 $user = Auth()->user();
167 167
168 if ($user->is_public) { 168 if ($user->is_public) {
169 $categories = Category::query()->active()->get(); 169 $categories = Category::query()->active()->get();
170 170
171 $jobs = Job_title::query() 171 $jobs = Job_title::query()
172 ->orderByDesc('sort') 172 ->orderByDesc('sort')
173 ->OrderBy('name') 173 ->OrderBy('name')
174 ->where('is_remove', '=', '0') 174 ->where('is_remove', '=', '0')
175 ->where('is_bd', '=', '0') 175 ->where('is_bd', '=', '0')
176 ->get(); 176 ->get();
177 177
178 $Employer = Employer::query() 178 $Employer = Employer::query()
179 ->with(['users', 'ads', 'flots']) 179 ->with(['users', 'ads', 'flots'])
180 ->whereHas('users', fn (Builder $query) => $query->where('id', $user->id)) 180 ->whereHas('users', fn (Builder $query) => $query->where('id', $user->id))
181 ->get(); 181 ->get();
182 182
183 return view('employers.add_vacancy', compact('Employer', 'jobs', 'categories')); 183 return view('employers.add_vacancy', compact('Employer', 'jobs', 'categories'));
184 } 184 }
185 185
186 return redirect()->route('employer.cabinet_vacancie_danger'); 186 return redirect()->route('employer.cabinet_vacancie_danger');
187 } 187 }
188 188
189 // Форма предупреждения об оплате 189 // Форма предупреждения об оплате
190 public function cabinet_vacancie_danger() { 190 public function cabinet_vacancie_danger() {
191 return view('employers.add_vacancy_danger'); 191 return view('employers.add_vacancy_danger');
192 } 192 }
193 193
194 // Сохранение вакансии 194 // Сохранение вакансии
195 public function cabinet_vacancy_save1(VacancyRequestEdit $request) { 195 public function cabinet_vacancy_save1(VacancyRequestEdit $request) {
196 $params_emp = $request->all(); 196 $params_emp = $request->all();
197 197
198 $params_job["job_title_id"] = $params_emp['job_title_id']; 198 $params_job["job_title_id"] = $params_emp['job_title_id'];
199 199
200 $ad_jobs = Ad_employer::create($params_emp); 200 $ad_jobs = Ad_employer::create($params_emp);
201 $ad_jobs->jobs()->sync($request->get('job_title_id')); 201 $ad_jobs->jobs()->sync($request->get('job_title_id'));
202 202
203 return redirect()->route('employer.vacancy_list'); 203 return redirect()->route('employer.vacancy_list');
204 } 204 }
205 205
206 // Список вакансий 206 // Список вакансий
207 public function vacancy_list(Request $request) { 207 public function vacancy_list(Request $request) {
208 $id = Auth()->user()->id; 208 $id = Auth()->user()->id;
209 209
210 $Employer = Employer::query()->where('user_id', $id)->first(); 210 $Employer = Employer::query()->where('user_id', $id)->first();
211 $vacancy_list = Ad_employer::query() 211 $vacancy_list = Ad_employer::query()
212 ->with('jobs') 212 ->with('jobs')
213 ->with('jobs_code') 213 ->with('jobs_code')
214 ->where('employer_id', $Employer->id) 214 ->where('employer_id', $Employer->id)
215 ->where('is_remove', 0) 215 ->where('is_remove', 0)
216 ->orderbyDesc('updated_at') 216 ->orderbyDesc('updated_at')
217 ; 217 ;
218 218
219 if (($request->has('search')) && (!empty($request->get('search')))) { 219 if (($request->has('search')) && (!empty($request->get('search')))) {
220 $search = $request->get('search'); 220 $search = $request->get('search');
221 $vacancy_list = $vacancy_list->where('name', 'LIKE', "%$search%"); 221 $vacancy_list = $vacancy_list->where('name', 'LIKE', "%$search%");
222 } 222 }
223 223
224 if ($request->get('sort')) { 224 if ($request->get('sort')) {
225 $sort = $request->get('sort'); 225 $sort = $request->get('sort');
226 switch ($sort) { 226 switch ($sort) {
227 case 'nopublic': $vacancy_list->orderByDesc('updated_at') 227 case 'nopublic': $vacancy_list->orderByDesc('updated_at')
228 ->where('active_is', 0); 228 ->where('active_is', 0);
229 break; 229 break;
230 case 'public': $vacancy_list->orderByDesc('updated_at') 230 case 'public': $vacancy_list->orderByDesc('updated_at')
231 ->where('active_is',1); 231 ->where('active_is',1);
232 break; 232 break;
233 default: $vacancy_list->orderByDesc('updated_at'); 233 default: $vacancy_list->orderByDesc('updated_at');
234 break; 234 break;
235 } 235 }
236 } else { 236 } else {
237 $vacancy_list = $vacancy_list->orderByDesc('updated_at')->orderBy('id'); 237 $vacancy_list = $vacancy_list->orderByDesc('updated_at')->orderBy('id');
238 } 238 }
239 239
240 $vacancy_list = $vacancy_list->paginate(10); 240 $vacancy_list = $vacancy_list->paginate(10);
241 241
242 if ($request->ajax()) { 242 if ($request->ajax()) {
243 return view('employers.ajax.list_vacancy', compact('vacancy_list', 'Employer')); 243 return view('employers.ajax.list_vacancy', compact('vacancy_list', 'Employer'));
244 } else { 244 } else {
245 return view('employers.list_vacancy', compact('vacancy_list', 'Employer')); 245 return view('employers.list_vacancy', compact('vacancy_list', 'Employer'));
246 } 246 }
247 } 247 }
248 248
249 // Карточка вакансии 249 // Карточка вакансии
250 public function vacancy_edit(Ad_employer $ad_employer) { 250 public function vacancy_edit(Ad_employer $ad_employer) {
251 $id = Auth()->user()->id; 251 $id = Auth()->user()->id;
252 $Positions = Category::query()->where('is_remove', '=', '0')->get(); 252 $Positions = Category::query()->where('is_remove', '=', '0')->get();
253 253
254 $jobs = Job_title::query()->orderByDesc('sort')->OrderBy('name')-> 254 $jobs = Job_title::query()->orderByDesc('sort')->OrderBy('name')->
255 where('is_remove', '=', '0')-> 255 where('is_remove', '=', '0')->
256 where('is_bd', '=', '0')->get(); 256 where('is_bd', '=', '0')->get();
257 257
258 $Employer = Employer::query()->with('users')->with('ads')-> 258 $Employer = Employer::query()->with('users')->with('ads')->
259 with('flots')->where('user_id', $id)->first(); 259 with('flots')->where('user_id', $id)->first();
260 260
261 return view('employers.edit_vacancy', compact('ad_employer', 'Positions','Employer', 'jobs')); 261 return view('employers.edit_vacancy', compact('ad_employer', 'Positions','Employer', 'jobs'));
262 } 262 }
263 263
264 // Сохранение-редактирование записи 264 // Сохранение-редактирование записи
265 public function vacancy_save_me(VacancyRequestEdit $request, Ad_employer $ad_employer) { 265 public function vacancy_save_me(VacancyRequestEdit $request, Ad_employer $ad_employer) {
266 $params = $request->all(); 266 $params = $request->all();
267 $params_job["job_title_id"] = $params['job_title_id'];
268 267
269 $ad_employer->update($params); 268 $ad_employer->update($params);
269 $ad_employer->active_is = 1;
270 $ad_employer->save();
270 $ad_employer->jobs()->sync($request->get('job_title_id')); 271 $ad_employer->jobs()->sync($request->get('job_title_id'));
271 272
272 $id = Auth()->user()->id; 273 $id = Auth()->user()->id;
273 $Positions = Category::query()->where('is_remove', '=', '0')->get(); 274 $Positions = Category::query()->where('is_remove', '=', '0')->get();
274 $jobs = Job_title::query()->orderByDesc('sort')->OrderBy('name') 275 $jobs = Job_title::query()->orderByDesc('sort')->OrderBy('name')
275 ->where('is_remove', '=', '0') 276 ->where('is_remove', '=', '0')
276 ->where('is_bd', '=', '0') 277 ->where('is_bd', '=', '0')
277 ->get(); 278 ->get();
278 279
279 $Employer = Employer::query() 280 $Employer = Employer::query()
280 ->with('users')->with('ads')->with('flots')->where('user_id', $id)->first(); 281 ->with('users')->with('ads')->with('flots')->where('user_id', $id)->first();
281 return view('employers.edit_vacancy', compact('ad_employer', 'Positions','Employer', 'jobs')); 282 return view('employers.edit_vacancy', compact('ad_employer', 'Positions','Employer', 'jobs'));
282 } 283 }
283 284
284 // Сохранение карточки вакансии 285 // Сохранение карточки вакансии
285 public function vacancy_save(Request $request, Ad_employer $ad_employer) { 286 public function vacancy_save(Request $request, Ad_employer $ad_employer) {
286 $all = $request->all(); 287 $all = $request->all();
287 $ad_employer->update($all); 288 $ad_employer->update($all);
288 return redirect()->route('employer.cabinet_vacancie'); 289 return redirect()->route('employer.cabinet_vacancie');
289 } 290 }
290 291
291 // Удаление карточки вакансии 292 // Удаление карточки вакансии
292 public function vacancy_delete(Ad_employer $ad_employer) { 293 public function vacancy_delete(Ad_employer $ad_employer) {
293 $ad_employer->delete(); 294 $ad_employer->delete();
294 295
295 return redirect()->route('employer.vacancy_list') 296 return redirect()->route('employer.vacancy_list')
296 ->with('success', 'Данные были успешно сохранены'); 297 ->with('success', 'Данные были успешно сохранены');
297 } 298 }
298 299
299 // Обновление даты 300 // Обновление даты
300 public function vacancy_up(Ad_employer $ad_employer) { 301 public function vacancy_up(Ad_employer $ad_employer) {
301 $up = date('m/d/Y h:i:s', time()); 302 $up = date('m/d/Y h:i:s', time());
302 $ad_employer->updated_at = $up; 303 $ad_employer->updated_at = $up;
303 $ad_employer->save(); 304 $ad_employer->save();
304 305
305 return redirect()->back(); 306 return redirect()->back();
306 } 307 }
307 308
308 //Видимость вакансии 309 //Видимость вакансии
309 public function vacancy_eye(Ad_employer $ad_employer, $status) { 310 public function vacancy_eye(Ad_employer $ad_employer, $status) {
310 $vac_emp = Ad_employer::findOrFail($ad_employer->id); 311 $vac_emp = Ad_employer::findOrFail($ad_employer->id);
311 $vac_emp->active_is = $status; 312 $vac_emp->active_is = $status;
312 $vac_emp->save(); 313 $vac_emp->save();
313 314
314 return redirect()->route('employer.vacancy_list'); 315 return redirect()->route('employer.vacancy_list');
315 } 316 }
316 317
317 //Вакансия редактирования (шаблон) 318 //Вакансия редактирования (шаблон)
318 public function vacancy_update(Ad_employer $id) { 319 public function vacancy_update(Ad_employer $id) {
319 320
320 } 321 }
321 322
322 //Отклики на вакансию - лист 323 //Отклики на вакансию - лист
323 public function answers(Employer $employer, Request $request) { 324 public function answers(Employer $employer, Request $request) {
324 $user_id = Auth()->user()->id; 325 $user_id = Auth()->user()->id;
325 $answer = Ad_employer::query()->where('employer_id', $employer->id); 326 $answer = Ad_employer::query()->where('employer_id', $employer->id);
326 if ($request->has('search')) { 327 if ($request->has('search')) {
327 $search = trim($request->get('search')); 328 $search = trim($request->get('search'));
328 if (!empty($search)) $answer = $answer->where('name', 'LIKE', "%$search%"); 329 if (!empty($search)) $answer = $answer->where('name', 'LIKE', "%$search%");
329 } 330 }
330 331
331 $answer = $answer->with('response')->OrderByDESC('id')->get(); 332 $answer = $answer->with('response')->OrderByDESC('id')->get();
332 333
333 return view('employers.list_answer', compact('answer', 'user_id', 'employer')); 334 return view('employers.list_answer', compact('answer', 'user_id', 'employer'));
334 } 335 }
335 336
336 //Обновление статуса 337 //Обновление статуса
337 public function supple_status(employer $employer, ad_response $ad_response, $flag) { 338 public function supple_status(employer $employer, ad_response $ad_response, $flag) {
338 $ad_response->update(Array('flag' => $flag)); 339 $ad_response->update(Array('flag' => $flag));
339 return redirect()->route('employer.answers', ['employer' => $employer->id]); 340 return redirect()->route('employer.answers', ['employer' => $employer->id]);
340 } 341 }
341 342
342 //Страницы сообщений список 343 //Страницы сообщений список
343 public function messages($type_message) { 344 public function messages($type_message) {
344 $user_id = Auth()->user()->id; 345 $user_id = Auth()->user()->id;
345 346
346 $chats = Chat::get_user_chats($user_id); 347 $chats = Chat::get_user_chats($user_id);
347 $user_type = 'employer'; 348 $user_type = 'employer';
348 $admin_chat = false; 349 $admin_chat = false;
349 350
350 return view('employers.messages', compact('chats', 'admin_chat', 'user_id', 'user_type')); 351 return view('employers.messages', compact('chats', 'admin_chat', 'user_id', 'user_type'));
351 } 352 }
352 353
353 // Диалог между пользователями 354 // Диалог между пользователями
354 public function dialog(Chat $chat, Request $request) { 355 public function dialog(Chat $chat, Request $request) {
355 // Получение параметров. 356 // Получение параметров.
356 if ($request->has('ad_employer')){ 357 if ($request->has('ad_employer')){
357 $ad_employer = $request->get('ad_employer'); 358 $ad_employer = $request->get('ad_employer');
358 } else { 359 } else {
359 $ad_employer = 0; 360 $ad_employer = 0;
360 } 361 }
361 362
362 $sender = User_Model::query()->with('workers')->with('employers')->where('id', $chat->user_id)->first(); 363 $sender = User_Model::query()->with('workers')->with('employers')->where('id', $chat->user_id)->first();
363 $companion = User_Model::query()->with('workers')->with('employers')->where('id', $chat->to_user_id)->first(); 364 $companion = User_Model::query()->with('workers')->with('employers')->where('id', $chat->to_user_id)->first();
364 365
365 $Messages = Chat::get_chat_messages($chat); 366 $Messages = Chat::get_chat_messages($chat);
366 367
367 Message::where('user_id', '=', $chat->to_user_id)->where('to_user_id', '=', $chat->user_id)->update(['flag_new' => 0]); 368 Message::where('user_id', '=', $chat->to_user_id)->where('to_user_id', '=', $chat->user_id)->update(['flag_new' => 0]);
368 369
369 return view('employers.dialog', compact('companion', 'sender', 'ad_employer', 'Messages')); 370 return view('employers.dialog', compact('companion', 'sender', 'ad_employer', 'Messages'));
370 } 371 }
371 372
372 public function pin_chat(Request $request){ 373 public function pin_chat(Request $request){
373 $chat_id = $request->get('id'); 374 $chat_id = $request->get('id');
374 $is_fixed = $request->get('is_fixed'); 375 $is_fixed = $request->get('is_fixed');
375 376
376 Chat::pin_chat($chat_id, $is_fixed); 377 Chat::pin_chat($chat_id, $is_fixed);
377 } 378 }
378 379
379 public function remove_chat(Request $request){ 380 public function remove_chat(Request $request){
380 $chat_id = $request->get('id'); 381 $chat_id = $request->get('id');
381 Chat::remove_chat($chat_id); 382 Chat::remove_chat($chat_id);
382 } 383 }
383 384
384 // Регистрация работодателя 385 // Регистрация работодателя
385 public function register_employer(Request $request) { 386 public function register_employer(Request $request) {
386 $params = $request->all(); 387 $params = $request->all();
387 388
388 $rules = [ 389 $rules = [
389 //'surname' => ['required', 'string', 'max:255'], 390 //'surname' => ['required', 'string', 'max:255'],
390 //'name_man' => ['required', 'string', 'max:255'], 391 //'name_man' => ['required', 'string', 'max:255'],
391 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 392 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
392 'name_company' => ['required', 'string', 'max:255'], 393 'name_company' => ['required', 'string', 'max:255'],
393 'password' => ['required', 'string', 'min:6'], 394 'password' => ['required', 'string', 'min:6'],
394 ]; 395 ];
395 396
396 $messages = [ 397 $messages = [
397 'required' => 'Укажите обязательное поле', 398 'required' => 'Укажите обязательное поле',
398 'min' => [ 399 'min' => [
399 'string' => 'Поле «:attribute» должно быть не меньше :min символов', 400 'string' => 'Поле «:attribute» должно быть не меньше :min символов',
400 'integer' => 'Поле «:attribute» должно быть :min или больше', 401 'integer' => 'Поле «:attribute» должно быть :min или больше',
401 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' 402 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт'
402 ], 403 ],
403 'max' => [ 404 'max' => [
404 'string' => 'Поле «:attribute» должно быть не больше :max символов', 405 'string' => 'Поле «:attribute» должно быть не больше :max символов',
405 'integer' => 'Поле «:attribute» должно быть :max или меньше', 406 'integer' => 'Поле «:attribute» должно быть :max или меньше',
406 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' 407 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт'
407 ] 408 ]
408 ]; 409 ];
409 410
410 $email = $request->get('email'); 411 $email = $request->get('email');
411 if (!preg_match("/^[a-zA-Z0-9_\-.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-.]+$/", $email)) { 412 if (!preg_match("/^[a-zA-Z0-9_\-.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-.]+$/", $email)) {
412 return json_encode(Array("ERROR" => "Error: Отсутствует емайл или некорректный емайл")); 413 return json_encode(Array("ERROR" => "Error: Отсутствует емайл или некорректный емайл"));
413 } 414 }
414 415
415 if ($request->get('password') !== $request->get('confirmed')){ 416 if ($request->get('password') !== $request->get('confirmed')){
416 return json_encode(Array("ERROR" => "Error: Не совпадают пароль и подтверждение пароля")); 417 return json_encode(Array("ERROR" => "Error: Не совпадают пароль и подтверждение пароля"));
417 } 418 }
418 419
419 if (strlen($request->get('password')) < 6) { 420 if (strlen($request->get('password')) < 6) {
420 return json_encode(Array("ERROR" => "Error: Недостаточная длина пароля! Увеличьте себе длину пароля!")); 421 return json_encode(Array("ERROR" => "Error: Недостаточная длина пароля! Увеличьте себе длину пароля!"));
421 } 422 }
422 423
423 if (empty($request->get('surname'))) { 424 if (empty($request->get('surname'))) {
424 $params['surname'] = 'Неизвестно'; 425 $params['surname'] = 'Неизвестно';
425 } 426 }
426 if (empty($request->get('name_man'))) { 427 if (empty($request->get('name_man'))) {
427 $params['name_man'] = 'Неизвестно'; 428 $params['name_man'] = 'Неизвестно';
428 } 429 }
429 $validator = Validator::make($params, $rules, $messages); 430 $validator = Validator::make($params, $rules, $messages);
430 431
431 if ($validator->fails()) { 432 if ($validator->fails()) {
432 return json_encode(Array("ERROR" => "Error: Регистрация оборвалась ошибкой! Не все обязательные поля заполнены. Либо вы уже были зарегистрированы в системе.")); 433 return json_encode(Array("ERROR" => "Error: Регистрация оборвалась ошибкой! Не все обязательные поля заполнены. Либо вы уже были зарегистрированы в системе."));
433 } else { 434 } else {
434 $user = $this->create($params); 435 $user = $this->create($params);
435 event(new Registered($user)); 436 event(new Registered($user));
436 437
437 try { 438 try {
438 Mail::to(env('EMAIL_ADMIN'))->send(new MailCreateEmployer($params)); 439 Mail::to(env('EMAIL_ADMIN'))->send(new MailCreateEmployer($params));
439 } catch (Throwable $e) { 440 } catch (Throwable $e) {
440 Log::error($e); 441 Log::error($e);
441 } 442 }
442 443
443 Auth::guard()->login($user); 444 Auth::guard()->login($user);
444 } 445 }
445 446
446 if ($user) { 447 if ($user) {
447 return json_encode(Array("REDIRECT" => redirect()->route('employer.cabinet')->getTargetUrl()));; 448 return json_encode(Array("REDIRECT" => redirect()->route('employer.cabinet')->getTargetUrl()));;
448 } else { 449 } else {
449 return json_encode(Array("ERROR" => "Error2: Данные были утеряны!")); 450 return json_encode(Array("ERROR" => "Error2: Данные были утеряны!"));
450 } 451 }
451 } 452 }
452 453
453 // Создание пользователя 454 // Создание пользователя
454 protected function create(array $data) 455 protected function create(array $data)
455 { 456 {
456 $Use = new User_Model(); 457 $Use = new User_Model();
457 $Code_user = $Use->create([ 458 $Code_user = $Use->create([
458 'name' => $data['surname']." ".$data['name_man'], 459 'name' => $data['surname']." ".$data['name_man'],
459 'name_man' => $data['name_man'], 460 'name_man' => $data['name_man'],
460 'surname' => $data['surname'], 461 'surname' => $data['surname'],
461 'surname2' => $data['surname2'], 462 'surname2' => $data['surname2'],
462 'subscribe_email' => $data['email'], 463 'subscribe_email' => $data['email'],
463 'email' => $data['email'], 464 'email' => $data['email'],
464 'telephone' => $data['telephone'], 465 'telephone' => $data['telephone'],
465 'is_worker' => 0, 466 'is_worker' => 0,
466 'password' => Hash::make($data['password']), 467 'password' => Hash::make($data['password']),
467 'pubpassword' => base64_encode($data['password']), 468 'pubpassword' => base64_encode($data['password']),
468 'email_verified_at' => Carbon::now() 469 'email_verified_at' => Carbon::now()
469 ]); 470 ]);
470 471
471 if ($Code_user->id > 0) { 472 if ($Code_user->id > 0) {
472 $Employer = new Employer(); 473 $Employer = new Employer();
473 $Employer->user_id = $Code_user->id; 474 $Employer->user_id = $Code_user->id;
474 $Employer->name_company = $data['name_company']; 475 $Employer->name_company = $data['name_company'];
475 $Employer->email = $data['email']; 476 $Employer->email = $data['email'];
476 $Employer->telephone = $data['telephone']; 477 $Employer->telephone = $data['telephone'];
477 $Employer->code = Tools::generator_id(10); 478 $Employer->code = Tools::generator_id(10);
478 $Employer->save(); 479 $Employer->save();
479 480
480 return $Code_user; 481 return $Code_user;
481 } 482 }
482 } 483 }
483 484
484 // Отправка сообщения от работодателя 485 // Отправка сообщения от работодателя
485 public function send_message(MessagesRequiest $request) { 486 public function send_message(MessagesRequiest $request) {
486 $params = $request->all(); 487 $params = $request->all();
487 dd($params); 488 dd($params);
488 $user1 = $params['user_id']; 489 $user1 = $params['user_id'];
489 $user2 = $params['to_user_id']; 490 $user2 = $params['to_user_id'];
490 491
491 if ($request->has('file')) { 492 if ($request->has('file')) {
492 $params['file'] = $request->file('file')->store("messages", 'public'); 493 $params['file'] = $request->file('file')->store("messages", 'public');
493 } 494 }
494 Message::create($params); 495 Message::create($params);
495 return redirect()->route('employer.dialog', ['user1' => $user1, 'user2' => $user2]); 496 return redirect()->route('employer.dialog', ['user1' => $user1, 'user2' => $user2]);
496 } 497 }
497 498
498 public function test123(Request $request) { 499 public function test123(Request $request) {
499 $params = $request->all(); 500 $params = $request->all();
500 $user1 = $params['user_id']; 501 $user1 = $params['user_id'];
501 $user2 = $params['to_user_id']; 502 $user2 = $params['to_user_id'];
502 503
503 $rules = [ 504 $rules = [
504 'text' => 'nullable|required_without:file|min:1|max:150000', 505 'text' => 'nullable|required_without:file|min:1|max:150000',
505 'file' => 'nullable|file|mimes:doc,docx,xlsx,csv,txt,xlx,xls,pdf|max:150000' 506 'file' => 'nullable|file|mimes:doc,docx,xlsx,csv,txt,xlx,xls,pdf|max:150000'
506 ]; 507 ];
507 $messages = [ 508 $messages = [
508 'required_without' => 'Поле «:attribute» обязательно, если файл не прикреплен', 509 'required_without' => 'Поле «:attribute» обязательно, если файл не прикреплен',
509 'min' => [ 510 'min' => [
510 'string' => 'Поле «:attribute» должно быть не меньше :min символов', 511 'string' => 'Поле «:attribute» должно быть не меньше :min символов',
511 'integer' => 'Поле «:attribute» должно быть :min или больше', 512 'integer' => 'Поле «:attribute» должно быть :min или больше',
512 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' 513 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт'
513 ], 514 ],
514 'max' => [ 515 'max' => [
515 'string' => 'Поле «:attribute» должно быть не больше :max символов', 516 'string' => 'Поле «:attribute» должно быть не больше :max символов',
516 'integer' => 'Поле «:attribute» должно быть :max или меньше', 517 'integer' => 'Поле «:attribute» должно быть :max или меньше',
517 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' 518 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт'
518 ] 519 ]
519 ]; 520 ];
520 521
521 $validator = Validator::make($request->all(), $rules, $messages); 522 $validator = Validator::make($request->all(), $rules, $messages);
522 523
523 if ($validator->fails()) { 524 if ($validator->fails()) {
524 return redirect()->route('cabinet.messages', ['type_message' => 'input'])->withErrors($validator); 525 return redirect()->route('cabinet.messages', ['type_message' => 'input'])->withErrors($validator);
525 } 526 }
526 527
527 $new_message = Message::add_message($request, $user1, $user2, $request->all(), file_store_path: 'messages'); 528 $new_message = Message::add_message($request, $user1, $user2, $request->all(), file_store_path: 'messages');
528 return redirect()->route('employer.dialog', ['chat' => $new_message->chat_id_from]); 529 return redirect()->route('employer.dialog', ['chat' => $new_message->chat_id_from]);
529 530
530 } 531 }
531 532
532 //Избранные люди 533 //Избранные люди
533 public function favorites(Request $request) 534 public function favorites(Request $request)
534 { 535 {
535 $likedWorkersIds = Like_worker::query() 536 $likedWorkersIds = Like_worker::query()
536 ->where('user_id', Auth::user()->id) 537 ->where('user_id', Auth::user()->id)
537 ->get() 538 ->get()
538 ->pluck('code_record') 539 ->pluck('code_record')
539 ->toArray(); 540 ->toArray();
540 541
541 $workerBuilder = Worker::query() 542 $workerBuilder = Worker::query()
542 ->whereIn('id', $likedWorkersIds); 543 ->whereIn('id', $likedWorkersIds);
543 544
544 if (($request->has('search')) && (!empty($request->get('search')))) { 545 if (($request->has('search')) && (!empty($request->get('search')))) {
545 $search = $request->get('search'); 546 $search = $request->get('search');
546 547
547 $workerBuilder->whereHas('users', function (Builder $query) use ($search) { 548 $workerBuilder->whereHas('users', function (Builder $query) use ($search) {
548 $query->where('surname', 'LIKE', "%$search%") 549 $query->where('surname', 'LIKE', "%$search%")
549 ->orWhere('name_man', 'LIKE', "%$search%") 550 ->orWhere('name_man', 'LIKE', "%$search%")
550 ->orWhere('surname2', 'LIKE', "%$search%"); 551 ->orWhere('surname2', 'LIKE', "%$search%");
551 }); 552 });
552 } 553 }
553 554
554 $Workers = $workerBuilder->get(); 555 $Workers = $workerBuilder->get();
555 556
556 return view('employers.favorite', compact('Workers')); 557 return view('employers.favorite', compact('Workers'));
557 } 558 }
558 559
559 // База данных 560 // База данных
560 public function bd(Request $request) { 561 public function bd(Request $request) {
561 $users = User_Model::query()->with('workers')->with('jobtitles'); 562 $users = User_Model::query()->with('workers')->with('jobtitles');
562 563
563 if ($request->has('search')) { 564 if ($request->has('search')) {
564 $find_key = $request->get('search'); 565 $find_key = $request->get('search');
565 $users = $users->where('name', 'LIKE', "%$find_key%") 566 $users = $users->where('name', 'LIKE', "%$find_key%")
566 ->orWhere('surname', 'LIKE', "%$find_key%") 567 ->orWhere('surname', 'LIKE', "%$find_key%")
567 ->orWhere('name_man', 'LIKE', "%$find_key%") 568 ->orWhere('name_man', 'LIKE', "%$find_key%")
568 ->orWhere('email', 'LIKE', "%$find_key%") 569 ->orWhere('email', 'LIKE', "%$find_key%")
569 ->orWhere('telephone', 'LIKE', "%$find_key%"); 570 ->orWhere('telephone', 'LIKE', "%$find_key%");
570 } 571 }
571 572
572 // Данные 573 // Данные
573 $users = $users 574 $users = $users
574 ->Baseuser() 575 ->Baseuser()
575 ->orderByDesc(Worker::select('created_at') 576 ->orderByDesc(Worker::select('created_at')
576 ->whereColumn('workers.user_id', 'users.id')); 577 ->whereColumn('workers.user_id', 'users.id'));
577 $count_users = $users->count(); 578 $count_users = $users->count();
578 $users = $users->paginate(10); 579 $users = $users->paginate(10);
579 580
580 $export_options = DbExportColumns::toArray(); 581 $export_options = DbExportColumns::toArray();
581 582
582 $jobs_titles = Job_title::select('id', 'name') 583 $jobs_titles = Job_title::select('id', 'name')
583 ->where('is_remove', '=', 0) 584 ->where('is_remove', '=', 0)
584 ->where('is_bd', '=', 2) 585 ->where('is_bd', '=', 2)
585 ->orderByDesc('sort') 586 ->orderByDesc('sort')
586 ->orderBy('name', 'asc') 587 ->orderBy('name', 'asc')
587 ->get() 588 ->get()
588 ->toArray() 589 ->toArray()
589 ; 590 ;
590 591
591 return view('employers.bd', compact('users', 'count_users', 'export_options', 'jobs_titles')); 592 return view('employers.bd', compact('users', 'count_users', 'export_options', 'jobs_titles'));
592 } 593 }
593 594
594 //Настройка уведомлений 595 //Настройка уведомлений
595 public function subscribe() { 596 public function subscribe() {
596 return view('employers.subcribe'); 597 return view('employers.subcribe');
597 } 598 }
598 599
599 //Установка уведомлений сохранение 600 //Установка уведомлений сохранение
600 public function save_subscribe(Request $request) { 601 public function save_subscribe(Request $request) {
601 dd($request->all()); 602 dd($request->all());
602 $msg = $request->validate([ 603 $msg = $request->validate([
603 'subscribe_email' => 'required|email|min:5|max:255', 604 'subscribe_email' => 'required|email|min:5|max:255',
604 ]); 605 ]);
605 return redirect()->route('employer.subscribe')->with('Вы успешно подписались на рассылку'); 606 return redirect()->route('employer.subscribe')->with('Вы успешно подписались на рассылку');
606 } 607 }
607 608
608 //Сбросить форму с паролем 609 //Сбросить форму с паролем
609 public function password_reset() { 610 public function password_reset() {
610 $email = Auth()->user()->email; 611 $email = Auth()->user()->email;
611 return view('employers.password-reset', compact('email')); 612 return view('employers.password-reset', compact('email'));
612 } 613 }
613 614
614 //Обновление пароля 615 //Обновление пароля
615 public function new_password(Request $request) { 616 public function new_password(Request $request) {
616 $use = Auth()->user(); 617 $use = Auth()->user();
617 $request->validate([ 618 $request->validate([
618 'password' => 'required|string', 619 'password' => 'required|string',
619 'new_password' => 'required|string', 620 'new_password' => 'required|string',
620 'new_password2' => 'required|string' 621 'new_password2' => 'required|string'
621 ]); 622 ]);
622 623
623 if ($request->get('new_password') == $request->get('new_password2')) 624 if ($request->get('new_password') == $request->get('new_password2'))
624 if ($request->get('password') !== $request->get('new_password')) { 625 if ($request->get('password') !== $request->get('new_password')) {
625 $credentials = $request->only('email', 'password'); 626 $credentials = $request->only('email', 'password');
626 if (Auth::attempt($credentials)) { 627 if (Auth::attempt($credentials)) {
627 628
628 if (!is_null($use->email_verified_at)){ 629 if (!is_null($use->email_verified_at)){
629 630
630 $user_data = User_Model::find($use->id); 631 $user_data = User_Model::find($use->id);
631 $user_data->update([ 632 $user_data->update([
632 'password' => Hash::make($request->get('new_password')), 633 'password' => Hash::make($request->get('new_password')),
633 'pubpassword' => base64_encode($request->get('new_password')), 634 'pubpassword' => base64_encode($request->get('new_password')),
634 ]); 635 ]);
635 return redirect() 636 return redirect()
636 ->route('employer.password_reset') 637 ->route('employer.password_reset')
637 ->with('success', 'Поздравляю! Вы обновили свой пароль!'); 638 ->with('success', 'Поздравляю! Вы обновили свой пароль!');
638 } 639 }
639 640
640 return redirect() 641 return redirect()
641 ->route('employer.password_reset') 642 ->route('employer.password_reset')
642 ->withError('Данная учетная запись не было верифицированна!'); 643 ->withError('Данная учетная запись не было верифицированна!');
643 } 644 }
644 } 645 }
645 646
646 return redirect() 647 return redirect()
647 ->route('employer.password_reset') 648 ->route('employer.password_reset')
648 ->withErrors('Не совпадение данных, обновите пароли!'); 649 ->withErrors('Не совпадение данных, обновите пароли!');
649 } 650 }
650 651
651 652
652 653
653 // Форма Удаление пипла 654 // Форма Удаление пипла
654 public function delete_people() { 655 public function delete_people() {
655 $login = Auth()->user()->email; 656 $login = Auth()->user()->email;
656 return view('employers.delete_people', compact('login')); 657 return view('employers.delete_people', compact('login'));
657 } 658 }
658 659
659 // Удаление аккаунта 660 // Удаление аккаунта
660 public function action_delete_user(Request $request) { 661 public function action_delete_user(Request $request) {
661 $Answer = $request->all(); 662 $Answer = $request->all();
662 $user_id = Auth()->user()->id; 663 $user_id = Auth()->user()->id;
663 $request->validate([ 664 $request->validate([
664 'password' => 'required|string', 665 'password' => 'required|string',
665 ]); 666 ]);
666 667
667 $credentials = $request->only('email', 'password'); 668 $credentials = $request->only('email', 'password');
668 if (Auth::attempt($credentials)) { 669 if (Auth::attempt($credentials)) {
669 Auth::logout(); 670 Auth::logout();
670 $it = User_Model::find($user_id); 671 $it = User_Model::find($user_id);
671 $it->delete(); 672 $it->delete();
672 return redirect()->route('index')->with('success', 'Вы успешно удалили свой аккаунт'); 673 return redirect()->route('index')->with('success', 'Вы успешно удалили свой аккаунт');
673 } else { 674 } else {
674 return redirect()->route('employer.delete_people') 675 return redirect()->route('employer.delete_people')
675 ->withErrors( 'Неверный пароль! Нужен корректный пароль'); 676 ->withErrors( 'Неверный пароль! Нужен корректный пароль');
676 } 677 }
677 } 678 }
678 679
679 public function ajax_delete_user(Request $request) { 680 public function ajax_delete_user(Request $request) {
680 $Answer = $request->all(); 681 $Answer = $request->all();
681 $user_id = Auth()->user()->id; 682 $user_id = Auth()->user()->id;
682 $request->validate([ 683 $request->validate([
683 'password' => 'required|string', 684 'password' => 'required|string',
684 ]); 685 ]);
685 $credentials = $request->only('email', 'password'); 686 $credentials = $request->only('email', 'password');
686 if (Auth::attempt($credentials)) { 687 if (Auth::attempt($credentials)) {
687 688
688 return json_encode(Array('SUCCESS' => 'Вы успешно удалили свой аккаунт', 689 return json_encode(Array('SUCCESS' => 'Вы успешно удалили свой аккаунт',
689 'email' => $request->get('email'), 690 'email' => $request->get('email'),
690 'password' => $request->get('password'))); 691 'password' => $request->get('password')));
691 } else { 692 } else {
692 return json_encode(Array('ERROR' => 'Неверный пароль! Нужен корректный пароль')); 693 return json_encode(Array('ERROR' => 'Неверный пароль! Нужен корректный пароль'));
693 } 694 }
694 } 695 }
695 696
696 // Рассылка сообщений 697 // Рассылка сообщений
697 public function send_all_messages() { 698 public function send_all_messages() {
698 $id = Auth()->user()->id; 699 $id = Auth()->user()->id;
699 $sending = Employer::query()->where('user_id', '=', "$id")->first(); 700 $sending = Employer::query()->where('user_id', '=', "$id")->first();
700 701
701 $job_titles = Job_title::query() 702 $job_titles = Job_title::query()
702 ->where('is_remove', '=', 0) 703 ->where('is_remove', '=', 0)
703 ->where('is_bd', '=', 1) 704 ->where('is_bd', '=', 1)
704 ->orderByDesc('sort') 705 ->orderByDesc('sort')
705 ->get(); 706 ->get();
706 707
707 if ($sending->sending_is) 708 if ($sending->sending_is)
708 return view('employers.send_all', compact('job_titles')); 709 return view('employers.send_all', compact('job_titles'));
709 else 710 else
710 return view('employers.send_all_danger'); 711 return view('employers.send_all_danger');
711 } 712 }
712 713
713 // Отправка сообщений для информации 714 // Отправка сообщений для информации
714 public function send_all_post(Request $request) { 715 public function send_all_post(Request $request) {
715 $data = $request->all(); 716 $data = $request->all();
716 $data['user'] = Auth()->user(); 717 $data['user'] = Auth()->user();
717 718
718 $id = MessagesRequests::create([ 719 $id = MessagesRequests::create([
719 'user_id' => $data['user']->id, 720 'user_id' => $data['user']->id,
720 'job_titles' => isset($data['job_title_ids']) ? json_encode($data['job_title_ids']) : null, 721 'job_titles' => isset($data['job_title_ids']) ? json_encode($data['job_title_ids']) : null,
721 'text' => $data['message_text'], 722 'text' => $data['message_text'],
722 ]); 723 ]);
723 724
724 try { 725 try {
725 if (!empty($id)) { 726 if (!empty($id)) {
726 Mail::to(env('EMAIL_ADMIN'))->send(new MassSendingMessages($data)); 727 Mail::to(env('EMAIL_ADMIN'))->send(new MassSendingMessages($data));
727 } 728 }
728 } catch (Throwable $e) { 729 } catch (Throwable $e) {
729 Log::error($e); 730 Log::error($e);
730 return redirect()->route('employer.send_all_messages')->with('error', 'Ошибка почтового сервера, пожалуйста, повторите рассылку позднее'); 731 return redirect()->route('employer.send_all_messages')->with('error', 'Ошибка почтового сервера, пожалуйста, повторите рассылку позднее');
731 } 732 }
732 733
733 return redirect()->route('employer.send_all_messages')->with('success', 'Запрос на рассылку был успешно отправлен.'); 734 return redirect()->route('employer.send_all_messages')->with('success', 'Запрос на рассылку был успешно отправлен.');
734 } 735 }
735 736
736 // База резюме 737 // База резюме
737 public function bd_tupe(Request $request) { 738 public function bd_tupe(Request $request) {
738 $Resume = User_Model::query()->with('workers')->where('is_bd', '=', '1')->get(); 739 $Resume = User_Model::query()->with('workers')->where('is_bd', '=', '1')->get();
739 740
740 return view('employers.bd_tupe', compact('Resume')); 741 return view('employers.bd_tupe', compact('Resume'));
741 } 742 }
742 743
743 ////////////////////////////////////////////////////////////////// 744 //////////////////////////////////////////////////////////////////
744 // Отправил сообщение 745 // Отправил сообщение
745 ////////////////////////////////////////////////////////////////// 746 //////////////////////////////////////////////////////////////////
746 public function new_message(Request $request) 747 public function new_message(Request $request)
747 { 748 {
748 $params = $request->all(); 749 $params = $request->all();
749 750
750 $id = $params['_user_id']; 751 $id = $params['_user_id'];
751 $message_params = [ 752 $message_params = [
752 'title' => $params['title'], 753 'title' => $params['title'],
753 'text' => $params['text'], 754 'text' => $params['text'],
754 'ad_employer_id' => $params['_vacancy'], 755 'ad_employer_id' => $params['_vacancy'],
755 'flag_new' => 1 756 'flag_new' => 1
756 ]; 757 ];
757 758
758 $message = Message::add_message( 759 $message = Message::add_message(
759 $request, 760 $request,
760 $params['_user_id'], 761 $params['_user_id'],
761 $params['_to_user_id'], 762 $params['_to_user_id'],
762 $message_params, 763 $message_params,
763 file_store_path: "worker/$id" 764 file_store_path: "worker/$id"
764 ); 765 );
765 766
766 return redirect()->route('employer.dialog', ['chat' => $message->chat_id_to]); 767 return redirect()->route('employer.dialog', ['chat' => $message->chat_id_to]);
767 } 768 }
768 769
769 // Восстановление пароля 770 // Восстановление пароля
770 public function repair_password(Request $request) { 771 public function repair_password(Request $request) {
771 $params = $request->get('email'); 772 $params = $request->get('email');
772 } 773 }
773 774
774 // Избранные люди на корабль 775 // Избранные люди на корабль
775 public function selected_people(Request $request) { 776 public function selected_people(Request $request) {
776 $id = $request->get('id'); 777 $id = $request->get('id');
777 $favorite_people = Job_title::query()->orderByDesc('sort')->OrderBy('name')-> 778 $favorite_people = Job_title::query()->orderByDesc('sort')->OrderBy('name')->
778 where('is_remove', '=', '0')-> 779 where('is_remove', '=', '0')->
779 where('is_bd', '=', '0')-> 780 where('is_bd', '=', '0')->
780 where('position_id', $id)-> 781 where('position_id', $id)->
781 get(); 782 get();
782 return view('favorite_people', compact('favorite_people')); 783 return view('favorite_people', compact('favorite_people'));
783 } 784 }
784 785
785 /** 786 /**
786 * @throws JsonException 787 * @throws JsonException
787 */ 788 */
788 public function vacancyAutoLiftForm(): View 789 public function vacancyAutoLiftForm(): View
789 { 790 {
790 $employer = Auth::user()->employers[0]; 791 $employer = Auth::user()->employers[0];
791 $vacancies = $employer 792 $vacancies = $employer
792 ->ads() 793 ->ads()
793 ->where('is_remove', 0) 794 ->where('is_remove', 0)
794 ->where('active_is', 1) 795 ->where('active_is', 1)
795 ->get(); 796 ->get();
796 797
797 $options = $employer->autoliftOptions ?? new EmployerAutoliftOption(); 798 $options = $employer->autoliftOptions ?? new EmployerAutoliftOption();
798 799
799 return view('employers.vacancy_autolift', compact('vacancies', 'options')); 800 return view('employers.vacancy_autolift', compact('vacancies', 'options'));
800 } 801 }
801 802
802 /** 803 /**
803 * @throws JsonException 804 * @throws JsonException
804 */ 805 */
805 public function vacancyAutoLiftSave(Request $request) 806 public function vacancyAutoLiftSave(Request $request)
806 { 807 {
807 $employer = Auth::user()->employers[0]; 808 $employer = Auth::user()->employers[0];
808 809
809 $employer->autoliftOptions()->updateOrCreate( 810 $employer->autoliftOptions()->updateOrCreate(
810 [ 811 [
811 'employer_id' => $employer->id, 812 'employer_id' => $employer->id,
812 ], 813 ],
813 [ 814 [
814 'is_enabled' => $request->get('is_enabled') === 'on', 815 'is_enabled' => $request->get('is_enabled') === 'true',
815 'times_per_day' => $request->get('times_per_day'), 816 'times_per_day' => $request->get('times_per_day'),
816 'days_repeat' => $request->get('days_repeat'), 817 'days_repeat' => $request->get('days_repeat'),
817 'time_send_first' => $request->get('time_send_first'), 818 'time_send_first' => $request->get('time_send_first'),
818 'time_send_second' => $request->get('time_send_second'), 819 'time_send_second' => $request->get('time_send_second'),
819 'time_send_third' => $request->get('time_send_third'), 820 'time_send_third' => $request->get('time_send_third'),
820 'time_send_tg' => $request->get('time_send_tg'), 821 'time_send_tg' => $request->get('time_send_tg'),
821 ] 822 ]
822 ); 823 );
823 824
824 foreach ($request->get('vacancies') as $vacancy) { 825 foreach ($request->get('vacancies') as $vacancy) {
825 Ad_employer::query() 826 Ad_employer::query()
826 ->where('id', $vacancy['id']) 827 ->where('id', $vacancy['id'])
827 ->update([ 828 ->update([
828 'autolift_site' => $vacancy['autolift_site'] === 'true', //they're arriving as strings 829 'autolift_site' => $vacancy['autolift_site'] === 'true', //they're arriving as strings
829 'autosend_tg' => $vacancy['autosend_tg'] === 'true', 830 'autosend_tg' => $vacancy['autosend_tg'] === 'true',
830 ]); 831 ]);
831 } 832 }
832 833
833 return response(['success' => true]); 834 return response(['success' => true]);
834 } 835 }
835 836
836 public function autoresponder() 837 public function autoresponder()
837 { 838 {
838 $user = Auth::user(); 839 $user = Auth::user();
839 return view('employers.autoresponder', compact('user')); 840 return view('employers.autoresponder', compact('user'));
840 } 841 }
841 842
842 public function autoresponderSave(Request $request): RedirectResponse 843 public function autoresponderSave(Request $request): RedirectResponse
843 { 844 {
844 $user = Auth::user(); 845 $user = Auth::user();
845 $user->autoresponder = $request->get('autoresponder', false) === 'on'; 846 $user->autoresponder = $request->get('autoresponder', false) === 'on';
846 $user->autoresponder_message = $request->get('autoresponder_message'); 847 $user->autoresponder_message = $request->get('autoresponder_message');
847 $user->save(); 848 $user->save();
848 849
849 return redirect(route('employer.autoresponder')); 850 return redirect(route('employer.autoresponder'));
850 } 851 }
851 } 852 }
app/Http/Controllers/WorkerController.php
1 <?php 1 <?php
2 2
3 namespace App\Http\Controllers; 3 namespace App\Http\Controllers;
4 4
5 use App\Classes\RusDate; 5 use App\Classes\RusDate;
6 use App\Classes\Tools; 6 use App\Classes\Tools;
7 use App\Http\Requests\DocumentsRequest; 7 use App\Http\Requests\DocumentsRequest;
8 use App\Http\Requests\PrevCompanyRequest; 8 use App\Http\Requests\PrevCompanyRequest;
9 use App\Http\Requests\SertificationRequest; 9 use App\Http\Requests\SertificationRequest;
10 use App\Models\Ad_employer; 10 use App\Models\Ad_employer;
11 use App\Models\ad_response; 11 use App\Models\ad_response;
12 use App\Models\Chat; 12 use App\Models\Chat;
13 use App\Models\Dop_info; 13 use App\Models\Dop_info;
14 use App\Models\Employer; 14 use App\Models\Employer;
15 use App\Models\EmployerAutoliftOption; 15 use App\Models\EmployerAutoliftOption;
16 use App\Models\infobloks; 16 use App\Models\infobloks;
17 use App\Models\Job_title; 17 use App\Models\Job_title;
18 use App\Models\Like_vacancy; 18 use App\Models\Like_vacancy;
19 use App\Models\Message; 19 use App\Models\Message;
20 use App\Models\place_works; 20 use App\Models\place_works;
21 use App\Models\PrevCompany; 21 use App\Models\PrevCompany;
22 use App\Models\ResponseWork; 22 use App\Models\ResponseWork;
23 use App\Models\sertification; 23 use App\Models\sertification;
24 use App\Models\Static_worker; 24 use App\Models\Static_worker;
25 use App\Models\Title_worker; 25 use App\Models\Title_worker;
26 use App\Models\User; 26 use App\Models\User;
27 use App\Models\User as User_Model; 27 use App\Models\User as User_Model;
28 use App\Models\Worker; 28 use App\Models\Worker;
29 use App\Models\WorkerAutoliftOption; 29 use App\Models\WorkerAutoliftOption;
30 use Barryvdh\DomPDF\Facade\Pdf; 30 use Barryvdh\DomPDF\Facade\Pdf;
31 use Carbon\Carbon; 31 use Carbon\Carbon;
32 use Illuminate\Auth\Events\Registered; 32 use Illuminate\Auth\Events\Registered;
33 use Illuminate\Database\Eloquent\Builder; 33 use Illuminate\Database\Eloquent\Builder;
34 use Illuminate\Http\RedirectResponse; 34 use Illuminate\Http\RedirectResponse;
35 use Illuminate\Http\Request; 35 use Illuminate\Http\Request;
36 use Illuminate\Pagination\LengthAwarePaginator; 36 use Illuminate\Pagination\LengthAwarePaginator;
37 use Illuminate\Support\Facades\Auth; 37 use Illuminate\Support\Facades\Auth;
38 use Illuminate\Support\Facades\DB; 38 use Illuminate\Support\Facades\DB;
39 use Illuminate\Support\Facades\Hash; 39 use Illuminate\Support\Facades\Hash;
40 use Illuminate\Support\Facades\Storage; 40 use Illuminate\Support\Facades\Storage;
41 use Illuminate\Support\Facades\Validator; 41 use Illuminate\Support\Facades\Validator;
42 use Illuminate\View\View; 42 use Illuminate\View\View;
43 use JsonException; 43 use JsonException;
44 use PhpOffice\PhpSpreadsheet\Spreadsheet; 44 use PhpOffice\PhpSpreadsheet\Spreadsheet;
45 use PhpOffice\PhpSpreadsheet\Writer\Xlsx; 45 use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
46 use Symfony\Component\HttpFoundation\StreamedResponse; 46 use Symfony\Component\HttpFoundation\StreamedResponse;
47 use App\Enums\DbExportColumns; 47 use App\Enums\DbExportColumns;
48 use App\Enums\WorkerStatuses; 48 use App\Enums\WorkerStatuses;
49 use DateTime; 49 use DateTime;
50 50
51 class WorkerController extends Controller 51 class WorkerController extends Controller
52 { 52 {
53 //профиль 53 //профиль
54 public function profile(Worker $worker) 54 public function profile(Worker $worker)
55 { 55 {
56 $get_date = date('Y.m'); 56 $get_date = date('Y.m');
57 57
58 $c = Static_worker::query()->where('year_month', '=', $get_date) 58 $c = Static_worker::query()->where('year_month', '=', $get_date)
59 ->where('user_id', '=', $worker->users->id) 59 ->where('user_id', '=', $worker->users->id)
60 ->get(); 60 ->get();
61 61
62 if ($c->count() > 0) { 62 if ($c->count() > 0) {
63 $upd = Static_worker::find($c[0]->id); 63 $upd = Static_worker::find($c[0]->id);
64 $upd->lookin = $upd->lookin + 1; 64 $upd->lookin = $upd->lookin + 1;
65 $upd->save(); 65 $upd->save();
66 } else { 66 } else {
67 $crt = new Static_worker(); 67 $crt = new Static_worker();
68 $crt->lookin = 1; 68 $crt->lookin = 1;
69 $crt->year_month = $get_date; 69 $crt->year_month = $get_date;
70 $crt->user_id = $worker->user_id; 70 $crt->user_id = $worker->user_id;
71 $crt->save(); 71 $crt->save();
72 } 72 }
73 73
74 $stat = Static_worker::query()->where('year_month', '=', $get_date) 74 $stat = Static_worker::query()->where('year_month', '=', $get_date)
75 ->where('user_id', '=', $worker->users->id) 75 ->where('user_id', '=', $worker->users->id)
76 ->get(); 76 ->get();
77 77
78 return view('public.workers.profile', compact('worker', 'stat')); 78 return view('public.workers.profile', compact('worker', 'stat'));
79 } 79 }
80 80
81 // лист база резюме 81 // лист база резюме
82 public function bd_resume(Request $request) 82 public function bd_resume(Request $request)
83 { 83 {
84 if (isset(Auth()->user()->id)) { 84 if (isset(Auth()->user()->id)) {
85 if ((Auth()->user()->is_worker) || (!Auth()->user()->is_lookin)) 85 if ((Auth()->user()->is_worker) || (!Auth()->user()->is_lookin))
86 return redirect()->route('index')->withErrors(['errors' => ['Вы не можете просматривать базу резюме. Подробнее в меню: "Условия размещения"']]); 86 return redirect()->route('index')->withErrors(['errors' => ['Вы не можете просматривать базу резюме. Подробнее в меню: "Условия размещения"']]);
87 } 87 }
88 88
89 $status_work = WorkerStatuses::getWorkerStatuses(); 89 $status_work = WorkerStatuses::getWorkerStatuses();
90 90
91 $resumes = Worker::query()->with('users')->with('job_titles')->orderByDesc('updated_at'); 91 $resumes = Worker::query()->with('users')->with('job_titles')->orderByDesc('updated_at');
92 $resumes = $resumes->whereHas('users', function (Builder $query) { 92 $resumes = $resumes->whereHas('users', function (Builder $query) {
93 $query->Where('is_worker', '=', '1') 93 $query->Where('is_worker', '=', '1')
94 ->Where('is_bd', '=', '0'); 94 ->Where('is_bd', '=', '0');
95 }); 95 });
96 96
97 if (($request->has('job')) && ($request->get('job') > 0)) { 97 if (($request->has('job')) && ($request->get('job') > 0)) {
98 $resumes = $resumes->whereHas('job_titles', function (Builder $query) use ($request) { 98 $resumes = $resumes->whereHas('job_titles', function (Builder $query) use ($request) {
99 $query->Where('job_titles.id', $request->get('job')); 99 $query->Where('job_titles.id', $request->get('job'));
100 }); 100 });
101 } 101 }
102 102
103 $Job_title = Job_title::query() 103 $Job_title = Job_title::query()
104 ->where('is_remove', '=', '0') 104 ->where('is_remove', '=', '0')
105 ->where('is_bd', '=' , '1') 105 ->where('is_bd', '=' , '1')
106 ->orderByDesc('sort') 106 ->orderByDesc('sort')
107 ->get(); 107 ->get();
108 108
109 if ($request->get('sort')) { 109 if ($request->get('sort')) {
110 $sort = $request->get('sort'); 110 $sort = $request->get('sort');
111 switch ($sort) { 111 switch ($sort) {
112 case 'looking_for_work': 112 case 'looking_for_work':
113 $resumes->where('status_work', '=', WorkerStatuses::LookingForWork->value); 113 $resumes->where('status_work', '=', WorkerStatuses::LookingForWork->value);
114 break; 114 break;
115 case 'considering_offers': 115 case 'considering_offers':
116 $resumes->where('status_work', '=', WorkerStatuses::ConsideringOffers->value); 116 $resumes->where('status_work', '=', WorkerStatuses::ConsideringOffers->value);
117 break; 117 break;
118 case 'not_looking_for_work': 118 case 'not_looking_for_work':
119 $resumes->where('status_work', '=', WorkerStatuses::NotLookingForWork->value); 119 $resumes->where('status_work', '=', WorkerStatuses::NotLookingForWork->value);
120 break; 120 break;
121 } 121 }
122 } 122 }
123 123
124 $resumes = $resumes->get()->filter(function ($worker) { 124 $resumes = $resumes->get()->filter(function ($worker) {
125 return Tools::getWorkerProfilePercent($worker) >= 50; 125 return Tools::getWorkerProfilePercent($worker) >= 50;
126 }); 126 });
127 127
128 $res_count = $resumes->count(); 128 $res_count = $resumes->count();
129 129
130 $currentPage = $_GET['page'] ?? 1; 130 $currentPage = $_GET['page'] ?? 1;
131 $resumes = new LengthAwarePaginator( 131 $resumes = new LengthAwarePaginator(
132 items: $resumes->slice(4 * ($currentPage - 1), 4), 132 items: $resumes->slice(4 * ($currentPage - 1), 4),
133 total: $res_count, 133 total: $res_count,
134 perPage: 4, 134 perPage: 4,
135 ); 135 );
136 $resumes->setPath('bd-resume'); 136 $resumes->setPath('bd-resume');
137 137
138 if ($request->ajax()) { 138 if ($request->ajax()) {
139 // Условия обставлены 139 // Условия обставлены
140 if ($request->has('block') && ($request->get('block') == 1)) { 140 if ($request->has('block') && ($request->get('block') == 1)) {
141 return view('ajax.resume_1', compact('resumes', 'status_work', 'res_count')); 141 return view('ajax.resume_1', compact('resumes', 'status_work', 'res_count'));
142 } 142 }
143 } else { 143 } else {
144 return view('resume', compact('resumes', 'status_work', 'res_count', 'Job_title')); 144 return view('resume', compact('resumes', 'status_work', 'res_count', 'Job_title'));
145 } 145 }
146 } 146 }
147 147
148 public function basic_information(){ 148 public function basic_information(){
149 if (!isset(Auth()->user()->id)) { 149 if (!isset(Auth()->user()->id)) {
150 abort(404); 150 abort(404);
151 } 151 }
152 152
153 $user_id = Auth()->user()->id; 153 $user_id = Auth()->user()->id;
154 154
155 $user = User::query() 155 $user = User::query()
156 ->with('workers') 156 ->with('workers')
157 ->with(['jobtitles' => function ($query) { 157 ->with(['jobtitles' => function ($query) {
158 $query->select('job_titles.id'); 158 $query->select('job_titles.id');
159 }]) 159 }])
160 ->where('id', '=', $user_id) 160 ->where('id', '=', $user_id)
161 ->first(); 161 ->first();
162 $user->workers[0]->job_titles = $user->workers[0]->job_titles->pluck('id')->toArray(); 162 $user->workers[0]->job_titles = $user->workers[0]->job_titles->pluck('id')->toArray();
163 163
164 $job_titles = Job_title::query() 164 $job_titles = Job_title::query()
165 ->where('is_remove', '=', 0) 165 ->where('is_remove', '=', 0)
166 ->where('is_bd', '=', 1) 166 ->where('is_bd', '=', 1)
167 ->orderByDesc('sort') 167 ->orderByDesc('sort')
168 ->get() 168 ->get()
169 ; 169 ;
170 170
171 return view('workers.form_basic_information', compact('user', 'job_titles')); 171 return view('workers.form_basic_information', compact('user', 'job_titles'));
172 } 172 }
173 173
174 public function additional_documents(){ 174 public function additional_documents(){
175 if (!isset(Auth()->user()->id)) { 175 if (!isset(Auth()->user()->id)) {
176 abort(404); 176 abort(404);
177 } 177 }
178 178
179 $user_id = Auth()->user()->id; 179 $user_id = Auth()->user()->id;
180 180
181 $info_blocks = infobloks::query()->OrderBy('name')->get(); 181 $info_blocks = infobloks::query()->OrderBy('name')->get();
182 $additional_document_statuses = [0 => 'Не указано', 1 => 'В наличии', 2 => 'Отсутствует']; 182 $additional_document_statuses = [0 => 'Не указано', 1 => 'В наличии', 2 => 'Отсутствует'];
183 183
184 $worker = Worker::query() 184 $worker = Worker::query()
185 ->with('users') 185 ->with('users')
186 ->with('infobloks') 186 ->with('infobloks')
187 ->WhereHas('users', function (Builder $query) use ($user_id) { 187 ->WhereHas('users', function (Builder $query) use ($user_id) {
188 $query->Where('id', $user_id); 188 $query->Where('id', $user_id);
189 }) 189 })
190 ->first(); 190 ->first();
191 if ($worker->dop_info->count()){ 191 if ($worker->dop_info->count()){
192 $worker->dop_info = $worker->dop_info->keyBy('infoblok_id')->toArray(); 192 $worker->dop_info = $worker->dop_info->keyBy('infoblok_id')->toArray();
193 } 193 }
194 194
195 return view('workers.form_additional_documents', compact('worker', 'info_blocks', 'additional_document_statuses')); 195 return view('workers.form_additional_documents', compact('worker', 'info_blocks', 'additional_document_statuses'));
196 } 196 }
197 197
198 //Лайк резюме 198 //Лайк резюме
199 public function like_controller() { 199 public function like_controller() {
200 200
201 } 201 }
202 202
203 // анкета соискателя 203 // анкета соискателя
204 public function resume_profile(Worker $worker) 204 public function resume_profile(Worker $worker)
205 { 205 {
206 if (isset(Auth()->user()->id)) { 206 if (isset(Auth()->user()->id)) {
207 $idiot = Auth()->user()->id; 207 $idiot = Auth()->user()->id;
208 } else { 208 } else {
209 $idiot = 0; 209 $idiot = 0;
210 } 210 }
211 211
212 $status_work = WorkerStatuses::getWorkerStatuses(); 212 $status_work = WorkerStatuses::getWorkerStatuses();
213 $Query = Worker::query()->with('users')->with('job_titles') 213 $Query = Worker::query()->with('users')->with('job_titles')
214 ->with('place_worker')->with('sertificate')->with('prev_company') 214 ->with('place_worker')->with('sertificate')->with('prev_company')
215 ->with('infobloks')->with('response'); 215 ->with('infobloks')->with('response');
216 $Query = $Query->where('id', '=', $worker->id); 216 $Query = $Query->where('id', '=', $worker->id);
217 $Query = $Query->get(); 217 $Query = $Query->get();
218 218
219 $get_date = date('Y.m'); 219 $get_date = date('Y.m');
220 220
221 $infoblocks = infobloks::query()->get(); 221 $infoblocks = infobloks::query()->get();
222 222
223 $c = Static_worker::query()->where('year_month', '=', $get_date) 223 $c = Static_worker::query()->where('year_month', '=', $get_date)
224 ->where('user_id', '=', $worker->user_id) 224 ->where('user_id', '=', $worker->user_id)
225 ->get(); 225 ->get();
226 226
227 if ($c->count() > 0) { 227 if ($c->count() > 0) {
228 $upd = Static_worker::find($c[0]->id); 228 $upd = Static_worker::find($c[0]->id);
229 $upd->lookin = $upd->lookin + 1; 229 $upd->lookin = $upd->lookin + 1;
230 $upd->save(); 230 $upd->save();
231 } else { 231 } else {
232 $crt = new Static_worker(); 232 $crt = new Static_worker();
233 $crt->lookin = 1; 233 $crt->lookin = 1;
234 $crt->year_month = $get_date; 234 $crt->year_month = $get_date;
235 $crt->user_id = $worker->user_id; 235 $crt->user_id = $worker->user_id;
236 $status = $crt->save(); 236 $status = $crt->save();
237 } 237 }
238 238
239 $stat = Static_worker::query()->where('year_month', '=', $get_date) 239 $stat = Static_worker::query()->where('year_month', '=', $get_date)
240 ->where('user_id', '=', $worker->user_id) 240 ->where('user_id', '=', $worker->user_id)
241 ->get(); 241 ->get();
242 242
243 return view('worker', compact('Query', 'infoblocks', 'status_work', 'idiot', 'stat')); 243 return view('worker', compact('Query', 'infoblocks', 'status_work', 'idiot', 'stat'));
244 } 244 }
245 245
246 // скачать анкету соискателя 246 // скачать анкету соискателя
247 public function resume_download(Worker $worker) 247 public function resume_download(Worker $worker)
248 { 248 {
249 $status_work = WorkerStatuses::getWorkerStatuses(); 249 $status_work = WorkerStatuses::getWorkerStatuses();
250 $Query = Worker::query()->with('users')->with('job_titles') 250 $Query = Worker::query()->with('users')->with('job_titles')
251 ->with('place_worker')->with('sertificate')->with('prev_company') 251 ->with('place_worker')->with('sertificate')->with('prev_company')
252 ->with('infobloks'); 252 ->with('infobloks');
253 $Query = $Query->where('id', '=', $worker->id); 253 $Query = $Query->where('id', '=', $worker->id);
254 $Query = $Query->get(); 254 $Query = $Query->get();
255 255
256 view()->share('Query',$Query); 256 view()->share('Query',$Query);
257 257
258 $status_work = WorkerStatuses::getWorkerStatuses(); 258 $status_work = WorkerStatuses::getWorkerStatuses();
259 $infoblocks = infobloks::query()->get(); 259 $infoblocks = infobloks::query()->get();
260 260
261 //return view('layout.pdf', compact('Query', 'status_work', 'infoblocks')); 261 //return view('layout.pdf', compact('Query', 'status_work', 'infoblocks'));
262 $pdf = PDF::loadView('layout.pdf', [ 262 $pdf = PDF::loadView('layout.pdf', [
263 'Query' => $Query, 263 'Query' => $Query,
264 'status_work' => $status_work, 264 'status_work' => $status_work,
265 'infoblocks' => $infoblocks 265 'infoblocks' => $infoblocks
266 ])->setPaper('a4', 'landscape'); 266 ])->setPaper('a4', 'landscape');
267 267
268 return $pdf->download(); 268 return $pdf->download();
269 } 269 }
270 270
271 public function resume_download_all(Request $request) { 271 public function resume_download_all(Request $request) {
272 $spreadsheet = new Spreadsheet(); 272 $spreadsheet = new Spreadsheet();
273 $sheet = $spreadsheet->getActiveSheet(); 273 $sheet = $spreadsheet->getActiveSheet();
274 274
275 $columnMap = range('A', 'Z'); 275 $columnMap = range('A', 'Z');
276 $columns = []; 276 $columns = [];
277 277
278 foreach (DbExportColumns::toArray() as $key => $value){ 278 foreach (DbExportColumns::toArray() as $key => $value){
279 if ($request->input($key, 0)){ 279 if ($request->input($key, 0)){
280 $sheet->setCellValue("{$columnMap[count($columns)]}1", ucfirst($value)); 280 $sheet->setCellValue("{$columnMap[count($columns)]}1", ucfirst($value));
281 $columns[] = str_replace('__', '.', $key); 281 $columns[] = str_replace('__', '.', $key);
282 } 282 }
283 } 283 }
284 284
285 if (empty($columns)) { 285 if (empty($columns)) {
286 return redirect()->back()->with('error', 'Пожалуйста выберите хотя бы 1 колонку для экспорта.'); 286 return redirect()->back()->with('error', 'Пожалуйста выберите хотя бы 1 колонку для экспорта.');
287 } 287 }
288 288
289 $jobIds = $request->input('job_title_list', []); 289 $jobIds = $request->input('job_title_list', []);
290 290
291 291
292 /* //query for mysql ver 8.0 or higher 292 /* //query for mysql ver 8.0 or higher
293 $users = DB::select( 293 $users = DB::select(
294 "select `job_titles`.`name`, `users`.`surname`, `users`.`name_man`, `users`.`surname2`, `users`.`email`, `users`.`telephone` 294 "select `job_titles`.`name`, `users`.`surname`, `users`.`name_man`, `users`.`surname2`, `users`.`email`, `users`.`telephone`
295 from users 295 from users
296 join workers on `users`.`id` = `workers`.`user_id` 296 join workers on `users`.`id` = `workers`.`user_id`
297 join `job_titles` 297 join `job_titles`
298 where `users`.`is_bd` = 1 298 where `users`.`is_bd` = 1
299 and (`workers`.`position_work` = `job_titles`.`id` 299 and (`workers`.`position_work` = `job_titles`.`id`
300 or exists (select 1 300 or exists (select 1
301 from JSON_TABLE( 301 from JSON_TABLE(
302 workers.positions_work, 302 workers.positions_work,
303 '$[*]' COLUMNS (id INT PATH '$')) pw 303 '$[*]' COLUMNS (id INT PATH '$')) pw
304 where pw.id = job_titles.id) 304 where pw.id = job_titles.id)
305 )". ((!empty($jobIds)) ? 'and job_titles.id in ('. implode(',', $jobIds).')' : '') 305 )". ((!empty($jobIds)) ? 'and job_titles.id in ('. implode(',', $jobIds).')' : '')
306 );*/ 306 );*/
307 307
308 /*$users = DB::select( 308 /*$users = DB::select(
309 "select `job_titles`.`name`, `users`.`surname`, `users`.`name_man`, `users`.`surname2`, `users`.`email`, `users`.`telephone` 309 "select `job_titles`.`name`, `users`.`surname`, `users`.`name_man`, `users`.`surname2`, `users`.`email`, `users`.`telephone`
310 from users 310 from users
311 join workers on `users`.`id` = `workers`.`user_id` 311 join workers on `users`.`id` = `workers`.`user_id`
312 join `job_titles` 312 join `job_titles`
313 where `users`.`is_bd` = 2 313 where `users`.`is_bd` = 2
314 and (`workers`.`position_work` = `job_titles`.`id` 314 and (`workers`.`position_work` = `job_titles`.`id`
315 or `workers`.`positions_work` 315 or `workers`.`positions_work`
316 )". ((!empty($jobIds)) ? 'and job_titles.id in ('. implode(',', $jobIds).')' : '') 316 )". ((!empty($jobIds)) ? 'and job_titles.id in ('. implode(',', $jobIds).')' : '')
317 );*/ 317 );*/
318 318
319 /*$users = DB::select("select `job_titles`.`name`, `users`.`surname`, `users`.`name_man`, 319 /*$users = DB::select("select `job_titles`.`name`, `users`.`surname`, `users`.`name_man`,
320 `users`.`surname2`, `users`.`email`, `users`.`telephone`, `users`.`id`, `job_titles`.`id` 320 `users`.`surname2`, `users`.`email`, `users`.`telephone`, `users`.`id`, `job_titles`.`id`
321 FROM `users` 321 FROM `users`
322 JOIN `job_titles` 322 JOIN `job_titles`
323 JOIN workers ON `users`.id = `workers`.user_id 323 JOIN workers ON `users`.id = `workers`.user_id
324 JOIN worker_jobs ON `users`.`id` = `worker_jobs`.user_id AND 324 JOIN worker_jobs ON `users`.`id` = `worker_jobs`.user_id AND
325 `job_titles`.`id` = `worker_jobs`.job_id"); 325 `job_titles`.`id` = `worker_jobs`.job_id");
326 */ 326 */
327 $first_part = "SELECT 327 $first_part = "SELECT
328 w.user_id, u.`name`, u.`surname`, u.`surname2`, 328 w.user_id, u.`name`, u.`surname`, u.`surname2`,
329 GROUP_CONCAT(j.`name` SEPARATOR ', ') AS job_titles_names, 329 GROUP_CONCAT(j.`name` SEPARATOR ', ') AS job_titles_names,
330 u.`email`, u.`telephone`, w.`positions_work` 330 u.`email`, u.`telephone`, w.`positions_work`
331 FROM 331 FROM
332 users u 332 users u
333 INNER JOIN 333 INNER JOIN
334 Workers w ON u.id = w.user_id 334 Workers w ON u.id = w.user_id
335 INNER JOIN 335 INNER JOIN
336 JSON_TABLE(w.positions_work, '$[*]' COLUMNS (pos INT PATH '$')) AS extracted_positions 336 JSON_TABLE(w.positions_work, '$[*]' COLUMNS (pos INT PATH '$')) AS extracted_positions
337 INNER JOIN 337 INNER JOIN
338 job_titles j ON j.id = extracted_positions.pos"; 338 job_titles j ON j.id = extracted_positions.pos";
339 339
340 $second_part = " "; 340 $second_part = " ";
341 if (!is_null($jobIds)) 341 if (!is_null($jobIds))
342 if (is_array($jobIds)) 342 if (is_array($jobIds))
343 if (count($jobIds) > 0) 343 if (count($jobIds) > 0)
344 { 344 {
345 $second_part = " WHERE "; 345 $second_part = " WHERE ";
346 foreach ($jobIds as $key => $it) { 346 foreach ($jobIds as $key => $it) {
347 if ($key == 0) 347 if ($key == 0)
348 $second_part .= "(j.id = ".$it.") "; 348 $second_part .= "(j.id = ".$it.") ";
349 elseif ($key > 0) 349 elseif ($key > 0)
350 $second_part .= "OR (j.id = ".$it.") "; 350 $second_part .= "OR (j.id = ".$it.") ";
351 } 351 }
352 } 352 }
353 353
354 $three_part = "GROUP BY w.user_id, w.positions_work, u.`name` 354 $three_part = "GROUP BY w.user_id, w.positions_work, u.`name`
355 HAVING COUNT(DISTINCT j.id) = JSON_LENGTH(w.positions_work)"; 355 HAVING COUNT(DISTINCT j.id) = JSON_LENGTH(w.positions_work)";
356 356
357 $users = DB::select($first_part.$second_part.$three_part); 357 $users = DB::select($first_part.$second_part.$three_part);
358 $users = collect($users); 358 $users = collect($users);
359 359
360 if ($users->count()) { 360 if ($users->count()) {
361 $i = 2; 361 $i = 2;
362 foreach ($users->toArray() as $user){ 362 foreach ($users->toArray() as $user){
363 $j = 0; 363 $j = 0;
364 foreach ($user as $field){ 364 foreach ($user as $field){
365 $sheet->setCellValue("{$columnMap[$j++]}$i", $field); 365 $sheet->setCellValue("{$columnMap[$j++]}$i", $field);
366 } 366 }
367 $i++; 367 $i++;
368 } 368 }
369 } 369 }
370 $writer = new Xlsx($spreadsheet); 370 $writer = new Xlsx($spreadsheet);
371 $fileName = 'DB.xlsx'; 371 $fileName = 'DB.xlsx';
372 372
373 $response = new StreamedResponse(function() use ($writer) { 373 $response = new StreamedResponse(function() use ($writer) {
374 $writer->save('php://output'); 374 $writer->save('php://output');
375 }); 375 });
376 376
377 $response->headers->set('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 377 $response->headers->set('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
378 $response->headers->set('Content-Disposition', 'attachment;filename="' . $fileName . '"'); 378 $response->headers->set('Content-Disposition', 'attachment;filename="' . $fileName . '"');
379 $response->headers->set('Cache-Control', 'max-age=0'); 379 $response->headers->set('Cache-Control', 'max-age=0');
380 380
381 return $response; 381 return $response;
382 } 382 }
383 383
384 // Кабинет работника 384 // Кабинет работника
385 public function cabinet(Request $request) 385 public function cabinet(Request $request)
386 { 386 {
387 // дата год и месяц 387 // дата год и месяц
388 $get_date = date('Y.m'); 388 $get_date = date('Y.m');
389 389
390 $id = Auth()->user()->id; 390 $id = Auth()->user()->id;
391 391
392 $Infobloks = infobloks::query()->get(); 392 $Infobloks = infobloks::query()->get();
393 393
394 $Worker = Worker::query() 394 $Worker = Worker::query()
395 ->with(['users', 'sertificate', 'prev_company', 'infobloks', 'place_worker']) 395 ->with(['users', 'sertificate', 'prev_company', 'infobloks', 'place_worker'])
396 ->WhereHas('users', function (Builder $query) use ($id) { 396 ->WhereHas('users', function (Builder $query) use ($id) {
397 $query->Where('id', $id); 397 $query->Where('id', $id);
398 })->first(); 398 })->first();
399 399
400 $Job_titles = Job_title::query()->where('is_remove', '=', '0') 400 $Job_titles = Job_title::query()->where('is_remove', '=', '0')
401 ->where('is_bd', '=' , '1') 401 ->where('is_bd', '=' , '1')
402 ->OrderByDesc('sort')->OrderBy('name') 402 ->OrderByDesc('sort')->OrderBy('name')
403 ->get(); 403 ->get();
404 404
405 $stat = Static_worker::query()->where('year_month', '=', $get_date) 405 $stat = Static_worker::query()->where('year_month', '=', $get_date)
406 ->where('user_id', '=', $id) 406 ->where('user_id', '=', $id)
407 ->get(); 407 ->get();
408 408
409 $persent = Tools::getWorkerProfilePercent($Worker); 409 $persent = Tools::getWorkerProfilePercent($Worker);
410 410
411 $status_work = WorkerStatuses::getWorkerStatuses(); 411 $status_work = WorkerStatuses::getWorkerStatuses();
412 $additional_document_statuses = [0 => 'Не указано', 1 => 'В наличии', 2 => 'Отсутствует']; 412 $additional_document_statuses = [0 => 'Не указано', 1 => 'В наличии', 2 => 'Отсутствует'];
413 $info_blocks = infobloks::query()->OrderBy('name')->get(); 413 $info_blocks = infobloks::query()->OrderBy('name')->get();
414 414
415 $worker = Worker::query() 415 $worker = Worker::query()
416 ->with('users') 416 ->with('users')
417 ->with('sertificate') 417 ->with('sertificate')
418 ->with('prev_company') 418 ->with('prev_company')
419 ->with('infobloks') 419 ->with('infobloks')
420 ->with('place_worker') 420 ->with('place_worker')
421 ->with('job_titles') 421 ->with('job_titles')
422 ->WhereHas('users', function (Builder $query) use ($id) { 422 ->WhereHas('users', function (Builder $query) use ($id) {
423 $query->Where('id', $id); 423 $query->Where('id', $id);
424 }) 424 })
425 ->first(); 425 ->first();
426 if ($worker->dop_info->count()){ 426 if ($worker->dop_info->count()){
427 $worker->dop_info = $worker->dop_info->keyBy('infoblok_id')->toArray(); 427 $worker->dop_info = $worker->dop_info->keyBy('infoblok_id')->toArray();
428 } 428 }
429 429
430 //dd($worker->dop_info); 430 //dd($worker->dop_info);
431 431
432 if ($request->has('print')) { 432 if ($request->has('print')) {
433 dd($Worker); 433 dd($Worker);
434 } else { 434 } else {
435 return view('workers.cabinet', compact( 'persent', 'Job_titles', 'stat', 435 return view('workers.cabinet', compact( 'persent', 'Job_titles', 'stat',
436 'worker', 'info_blocks', 'status_work', 'additional_document_statuses' 436 'worker', 'info_blocks', 'status_work', 'additional_document_statuses'
437 )); 437 ));
438 } 438 }
439 } 439 }
440 440
441 // Сохранение данных 441 // Сохранение данных
442 public function cabinet_save(Worker $worker, Request $request) 442 public function cabinet_save(Worker $worker, Request $request)
443 { 443 {
444 $id = $worker->id; 444 $id = $worker->id;
445 $params = $request->all(); 445 $params = $request->all();
446 $job_title_id = $request->get('job_title_id'); 446 $job_title_id = $request->get('job_title_id');
447 447
448 $rules = [ 448 $rules = [
449 'surname' => ['required', 'string', 'max:255'], 449 'surname' => ['required', 'string', 'max:255'],
450 'name_man' => ['required', 'string', 'max:255'], 450 'name_man' => ['required', 'string', 'max:255'],
451 'email' => ['required', 'string', 'email', 'max:255'], 451 'email' => ['required', 'string', 'email', 'max:255'],
452 452
453 ]; 453 ];
454 454
455 $messages = [ 455 $messages = [
456 'required' => 'Укажите обязательное поле', 456 'required' => 'Укажите обязательное поле',
457 'min' => [ 457 'min' => [
458 'string' => 'Поле «:attribute» должно быть не меньше :min символов', 458 'string' => 'Поле «:attribute» должно быть не меньше :min символов',
459 'integer' => 'Поле «:attribute» должно быть :min или больше', 459 'integer' => 'Поле «:attribute» должно быть :min или больше',
460 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' 460 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт'
461 ], 461 ],
462 'max' => [ 462 'max' => [
463 'string' => 'Поле «:attribute» должно быть не больше :max символов', 463 'string' => 'Поле «:attribute» должно быть не больше :max символов',
464 'integer' => 'Поле «:attribute» должно быть :max или меньше', 464 'integer' => 'Поле «:attribute» должно быть :max или меньше',
465 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' 465 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт'
466 ] 466 ]
467 ]; 467 ];
468 468
469 $validator = Validator::make($params, $rules, $messages); 469 $validator = Validator::make($params, $rules, $messages);
470 470
471 if ($validator->fails()) { 471 if ($validator->fails()) {
472 return redirect()->route('worker.cabinet')->withErrors($validator); 472 return redirect()->route('worker.cabinet')->withErrors($validator);
473 } else { 473 } else {
474 474
475 if ($request->has('photo')) { 475 if ($request->has('photo')) {
476 if (!empty($worker->photo)) { 476 if (!empty($worker->photo)) {
477 Storage::delete($worker->photo); 477 Storage::delete($worker->photo);
478 } 478 }
479 $params['photo'] = $request->file('photo')->store("worker/$id", 'public'); 479 $params['photo'] = $request->file('photo')->store("worker/$id", 'public');
480 } 480 }
481 481
482 if ($request->has('file')) { 482 if ($request->has('file')) {
483 if (!empty($worker->file)) { 483 if (!empty($worker->file)) {
484 Storage::delete($worker->file); 484 Storage::delete($worker->file);
485 } 485 }
486 $params['file'] = $request->file('file')->store("worker/$id", 'public'); 486 $params['file'] = $request->file('file')->store("worker/$id", 'public');
487 } 487 }
488 488
489 $worker->update($params); 489 $worker->update($params);
490 $use = User::find($worker->user_id); 490 $use = User::find($worker->user_id);
491 $use->surname = $request->get('surname'); 491 $use->surname = $request->get('surname');
492 $use->name_man = $request->get('name_man'); 492 $use->name_man = $request->get('name_man');
493 $use->surname2 = $request->get('surname2'); 493 $use->surname2 = $request->get('surname2');
494 494
495 $use->save(); 495 $use->save();
496 $worker->job_titles()->sync($job_title_id); 496 $worker->job_titles()->sync($job_title_id);
497 497
498 return redirect()->route('worker.cabinet')->with('success', 'Данные были успешно сохранены'); 498 return redirect()->route('worker.cabinet')->with('success', 'Данные были успешно сохранены');
499 } 499 }
500 } 500 }
501 501
502 public function cabinet_save_foto(Worker $worker, Request $request){ 502 public function cabinet_save_foto(Worker $worker, Request $request){
503 $params = ['photo' => null]; 503 $params = ['photo' => null];
504 504
505 if ($request->has('photo')) { 505 if ($request->has('photo')) {
506 if (!empty($worker->photo)) { 506 if (!empty($worker->photo)) {
507 Storage::delete($worker->photo); 507 Storage::delete($worker->photo);
508 } 508 }
509 $params['photo'] = $request->file('photo')->store("worker/$worker->id", 'public'); 509 $params['photo'] = $request->file('photo')->store("worker/$worker->id", 'public');
510 } 510 }
511 511
512 if ($request->has('file')) { 512 if ($request->has('file')) {
513 if (!empty($worker->file)) { 513 if (!empty($worker->file)) {
514 Storage::delete($worker->file); 514 Storage::delete($worker->file);
515 } 515 }
516 $params['file'] = $request->file('file')->store("worker/$worker->id", 'public'); 516 $params['file'] = $request->file('file')->store("worker/$worker->id", 'public');
517 } 517 }
518 518
519 $worker->update($params); 519 $worker->update($params);
520 520
521 return redirect()->route('worker.cabinet'); 521 return redirect()->route('worker.cabinet');
522 } 522 }
523 523
524 // Сообщения данные 524 // Сообщения данные
525 public function messages($type_message) 525 public function messages($type_message)
526 { 526 {
527 $user_id = Auth()->user()->id; 527 $user_id = Auth()->user()->id;
528 528
529 $chats = Chat::get_user_chats($user_id); 529 $chats = Chat::get_user_chats($user_id);
530 $admin_chat = Chat::get_user_admin_chat($user_id); 530 $admin_chat = Chat::get_user_admin_chat($user_id);
531 $user_type = 'worker'; 531 $user_type = 'worker';
532 532
533 return view('workers.messages', compact('chats', 'admin_chat','user_id', 'user_type')); 533 return view('workers.messages', compact('chats', 'admin_chat','user_id', 'user_type'));
534 } 534 }
535 535
536 // Избранный 536 // Избранный
537 public function favorite() 537 public function favorite()
538 { 538 {
539 return view('workers.favorite'); 539 return view('workers.favorite');
540 } 540 }
541 541
542 // Сменить пароль 542 // Сменить пароль
543 public function new_password() 543 public function new_password()
544 { 544 {
545 $email = Auth()->user()->email; 545 $email = Auth()->user()->email;
546 return view('workers.new_password', compact('email')); 546 return view('workers.new_password', compact('email'));
547 } 547 }
548 548
549 // Обновление пароля 549 // Обновление пароля
550 public function save_new_password(Request $request) { 550 public function save_new_password(Request $request) {
551 $use = Auth()->user(); 551 $use = Auth()->user();
552 $request->validate([ 552 $request->validate([
553 'password' => 'required|string', 553 'password' => 'required|string',
554 'new_password' => 'required|string', 554 'new_password' => 'required|string',
555 'new_password2' => 'required|string' 555 'new_password2' => 'required|string'
556 ]); 556 ]);
557 557
558 if ($request->get('new_password') == $request->get('new_password2')) 558 if ($request->get('new_password') == $request->get('new_password2'))
559 if ($request->get('password') !== $request->get('new_password')) { 559 if ($request->get('password') !== $request->get('new_password')) {
560 $credentials = $request->only('email', 'password'); 560 $credentials = $request->only('email', 'password');
561 if (Auth::attempt($credentials, $request->has('save_me'))) { 561 if (Auth::attempt($credentials, $request->has('save_me'))) {
562 562
563 if (!is_null($use->email_verified_at)){ 563 if (!is_null($use->email_verified_at)){
564 564
565 $user_data = User_Model::find($use->id); 565 $user_data = User_Model::find($use->id);
566 $user_data->update([ 566 $user_data->update([
567 'password' => Hash::make($request->get('new_password')), 567 'password' => Hash::make($request->get('new_password')),
568 'pubpassword' => base64_encode($request->get('new_password')), 568 'pubpassword' => base64_encode($request->get('new_password')),
569 ]); 569 ]);
570 return redirect() 570 return redirect()
571 ->route('worker.new_password') 571 ->route('worker.new_password')
572 ->with('success', 'Поздравляю! Вы обновили свой пароль!'); 572 ->with('success', 'Поздравляю! Вы обновили свой пароль!');
573 } 573 }
574 574
575 return redirect() 575 return redirect()
576 ->route('worker.new_password') 576 ->route('worker.new_password')
577 ->withError('Данная учетная запись не было верифицированна!'); 577 ->withError('Данная учетная запись не было верифицированна!');
578 } 578 }
579 } 579 }
580 580
581 return redirect() 581 return redirect()
582 ->route('worker.new_password') 582 ->route('worker.new_password')
583 ->withErrors('Не совпадение данных, обновите пароли!'); 583 ->withErrors('Не совпадение данных, обновите пароли!');
584 } 584 }
585 585
586 // Удаление профиля форма 586 // Удаление профиля форма
587 public function delete_profile() 587 public function delete_profile()
588 { 588 {
589 $login = Auth()->user()->email; 589 $login = Auth()->user()->email;
590 return view('workers.delete_profile', compact('login')); 590 return view('workers.delete_profile', compact('login'));
591 } 591 }
592 592
593 // Удаление профиля код 593 // Удаление профиля код
594 public function delete_profile_result(Request $request) { 594 public function delete_profile_result(Request $request) {
595 $Answer = $request->all(); 595 $Answer = $request->all();
596 $user_id = Auth()->user()->id; 596 $user_id = Auth()->user()->id;
597 $request->validate([ 597 $request->validate([
598 'password' => 'required|string', 598 'password' => 'required|string',
599 ]); 599 ]);
600 600
601 $credentials = $request->only('email', 'password'); 601 $credentials = $request->only('email', 'password');
602 if (Auth::attempt($credentials)) { 602 if (Auth::attempt($credentials)) {
603 Auth::logout(); 603 Auth::logout();
604 $it = User_Model::find($user_id); 604 $it = User_Model::find($user_id);
605 $it->delete(); 605 $it->delete();
606 return redirect()->route('index')->with('success', 'Вы успешно удалили свой аккаунт'); 606 return redirect()->route('index')->with('success', 'Вы успешно удалили свой аккаунт');
607 } else { 607 } else {
608 return redirect()->route('worker.delete_profile') 608 return redirect()->route('worker.delete_profile')
609 ->withErrors( 'Неверный пароль! Нужен корректный пароль'); 609 ->withErrors( 'Неверный пароль! Нужен корректный пароль');
610 } 610 }
611 } 611 }
612 612
613 // Регистрация соискателя 613 // Регистрация соискателя
614 public function register_worker(Request $request) 614 public function register_worker(Request $request)
615 { 615 {
616 $params = $request->all(); 616 $params = $request->all();
617 $params['is_worker'] = 1; 617 $params['is_worker'] = 1;
618 618
619 $rules = [ 619 $rules = [
620 'surname' => ['required', 'string', 'max:255'], 620 'surname' => ['required', 'string', 'max:255'],
621 'name_man' => ['required', 'string', 'max:255'], 621 'name_man' => ['required', 'string', 'max:255'],
622 'email' => ['required', 'email', 'max:255', 'unique:users'], 622 'email' => ['required', 'email', 'max:255', 'unique:users'],
623 'password' => ['required', 'string', 'min:6'] 623 'password' => ['required', 'string', 'min:6']
624 ]; 624 ];
625 625
626 $messages = [ 626 $messages = [
627 'required' => 'Укажите обязательное поле', 627 'required' => 'Укажите обязательное поле',
628 'min' => [ 628 'min' => [
629 'string' => 'Поле «:attribute» должно быть не меньше :min символов', 629 'string' => 'Поле «:attribute» должно быть не меньше :min символов',
630 'integer' => 'Поле «:attribute» должно быть :min или больше', 630 'integer' => 'Поле «:attribute» должно быть :min или больше',
631 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' 631 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт'
632 ], 632 ],
633 'max' => [ 633 'max' => [
634 'string' => 'Поле «:attribute» должно быть не больше :max символов', 634 'string' => 'Поле «:attribute» должно быть не больше :max символов',
635 'integer' => 'Поле «:attribute» должно быть :max или меньше', 635 'integer' => 'Поле «:attribute» должно быть :max или меньше',
636 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' 636 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт'
637 ] 637 ]
638 ]; 638 ];
639 639
640 $email = $request->get('email'); 640 $email = $request->get('email');
641 if (!preg_match("/^[a-zA-Z0-9_\-.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-.]+$/", $email)) { 641 if (!preg_match("/^[a-zA-Z0-9_\-.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-.]+$/", $email)) {
642 return json_encode(Array("ERROR" => "Error: Отсутствует емайл или некорректный емайл")); 642 return json_encode(Array("ERROR" => "Error: Отсутствует емайл или некорректный емайл"));
643 } 643 }
644 644
645 if ($request->get('password') !== $request->get('confirmed')){ 645 if ($request->get('password') !== $request->get('confirmed')){
646 return json_encode(Array("ERROR" => "Error: Не совпадают пароль и подтверждение пароля")); 646 return json_encode(Array("ERROR" => "Error: Не совпадают пароль и подтверждение пароля"));
647 } 647 }
648 648
649 if (strlen($request->get('password')) < 6) { 649 if (strlen($request->get('password')) < 6) {
650 return json_encode(Array("ERROR" => "Error: Недостаточная длина пароля! Увеличьте себе длину пароля!")); 650 return json_encode(Array("ERROR" => "Error: Недостаточная длина пароля! Увеличьте себе длину пароля!"));
651 } 651 }
652 652
653 if (($request->has('politik')) && ($request->get('politik') == 1)) { 653 if (($request->has('politik')) && ($request->get('politik') == 1)) {
654 $validator = Validator::make($params, $rules, $messages); 654 $validator = Validator::make($params, $rules, $messages);
655 655
656 if ($validator->fails()) { 656 if ($validator->fails()) {
657 return json_encode(array("ERROR" => "Error1: Регистрация оборвалась ошибкой! Не все обязательные поля заполнены. Либо вы уже были зарегистрированы в системе.")); 657 return json_encode(array("ERROR" => "Error1: Регистрация оборвалась ошибкой! Не все обязательные поля заполнены. Либо вы уже были зарегистрированы в системе."));
658 } else { 658 } else {
659 $user = $this->create($params); 659 $user = $this->create($params);
660 event(new Registered($user)); 660 event(new Registered($user));
661 Auth::guard()->login($user); 661 Auth::guard()->login($user);
662 } 662 }
663 if ($user) { 663 if ($user) {
664 return json_encode(Array("REDIRECT" => redirect()->route('worker.cabinet')->getTargetUrl()));; 664 return json_encode(Array("REDIRECT" => redirect()->route('worker.cabinet')->getTargetUrl()));;
665 } else { 665 } else {
666 return json_encode(Array("ERROR" => "Error2: Данные были утеряны!")); 666 return json_encode(Array("ERROR" => "Error2: Данные были утеряны!"));
667 } 667 }
668 668
669 } else { 669 } else {
670 return json_encode(Array("ERROR" => "Error3: Вы не согласились с политикой конфидициальности!")); 670 return json_encode(Array("ERROR" => "Error3: Вы не согласились с политикой конфидициальности!"));
671 } 671 }
672 } 672 }
673 673
674 // Звездная оценка и ответ 674 // Звездная оценка и ответ
675 public function stars_answer(Request $request) { 675 public function stars_answer(Request $request) {
676 $params = $request->all(); 676 $params = $request->all();
677 $rules = [ 677 $rules = [
678 'message' => ['required', 'string', 'max:255'], 678 'message' => ['required', 'string', 'max:255'],
679 ]; 679 ];
680 680
681 $messages = [ 681 $messages = [
682 'required' => 'Укажите обязательное поле', 682 'required' => 'Укажите обязательное поле',
683 'min' => [ 683 'min' => [
684 'string' => 'Поле «:attribute» должно быть не меньше :min символов', 684 'string' => 'Поле «:attribute» должно быть не меньше :min символов',
685 'integer' => 'Поле «:attribute» должно быть :min или больше', 685 'integer' => 'Поле «:attribute» должно быть :min или больше',
686 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' 686 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт'
687 ], 687 ],
688 'max' => [ 688 'max' => [
689 'string' => 'Поле «:attribute» должно быть не больше :max символов', 689 'string' => 'Поле «:attribute» должно быть не больше :max символов',
690 'integer' => 'Поле «:attribute» должно быть :max или меньше', 690 'integer' => 'Поле «:attribute» должно быть :max или меньше',
691 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' 691 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт'
692 ] 692 ]
693 ]; 693 ];
694 $response_worker = ResponseWork::create($params); 694 $response_worker = ResponseWork::create($params);
695 return redirect()->route('resume_profile', ['worker' => $request->get('worker_id')])->with('success', 'Ваше сообщение было отправлено!'); 695 return redirect()->route('resume_profile', ['worker' => $request->get('worker_id')])->with('success', 'Ваше сообщение было отправлено!');
696 } 696 }
697 697
698 public function TestWorker() 698 public function TestWorker()
699 { 699 {
700 $Use = new User(); 700 $Use = new User();
701 701
702 $Code_user = $Use->create([ 702 $Code_user = $Use->create([
703 'name' => 'surname name_man', 703 'name' => 'surname name_man',
704 'name_man' => 'name_man', 704 'name_man' => 'name_man',
705 'surname' => 'surname', 705 'surname' => 'surname',
706 'surname2' => 'surname2', 706 'surname2' => 'surname2',
707 'subscribe_email' => '1', 707 'subscribe_email' => '1',
708 'email' => 'email@mail.com', 708 'email' => 'email@mail.com',
709 'telephone' => '1234567890', 709 'telephone' => '1234567890',
710 'password' => Hash::make('password'), 710 'password' => Hash::make('password'),
711 'pubpassword' => base64_encode('password'), 711 'pubpassword' => base64_encode('password'),
712 'email_verified_at' => Carbon::now(), 712 'email_verified_at' => Carbon::now(),
713 'is_worker' => 1, 713 'is_worker' => 1,
714 ]); 714 ]);
715 715
716 if ($Code_user->id > 0) { 716 if ($Code_user->id > 0) {
717 $Worker = new Worker(); 717 $Worker = new Worker();
718 $Worker->user_id = $Code_user->id; 718 $Worker->user_id = $Code_user->id;
719 $Worker->position_work = 1; //'job_titles'; 719 $Worker->position_work = 1; //'job_titles';
720 $Worker->email = 'email@email.com'; 720 $Worker->email = 'email@email.com';
721 $Worker->telephone = '1234567890'; 721 $Worker->telephone = '1234567890';
722 $status = $Worker->save(); 722 $status = $Worker->save();
723 723
724 $Title_Worker = new Title_worker(); 724 $Title_Worker = new Title_worker();
725 $Title_Worker->worker_id = $Worker->id; 725 $Title_Worker->worker_id = $Worker->id;
726 $Title_Worker->job_title_id = 1; 726 $Title_Worker->job_title_id = 1;
727 $Title_Worker->save(); 727 $Title_Worker->save();
728 } 728 }
729 } 729 }
730 730
731 // Создание пользователя 731 // Создание пользователя
732 protected function create(array $data) 732 protected function create(array $data)
733 { 733 {
734 $Use = new User(); 734 $Use = new User();
735 735
736 $Code_user = $Use->create([ 736 $Code_user = $Use->create([
737 'name' => $data['surname']." ".$data['name_man'], 737 'name' => $data['surname']." ".$data['name_man'],
738 'name_man' => $data['name_man'], 738 'name_man' => $data['name_man'],
739 'surname' => $data['surname'], 739 'surname' => $data['surname'],
740 'surname2' => $data['surname2'], 740 'surname2' => $data['surname2'],
741 'subscribe_email' => $data['email'], 741 'subscribe_email' => $data['email'],
742 'email' => $data['email'], 742 'email' => $data['email'],
743 'telephone' => $data['telephone'], 743 'telephone' => $data['telephone'],
744 'password' => Hash::make($data['password']), 744 'password' => Hash::make($data['password']),
745 'pubpassword' => base64_encode($data['password']), 745 'pubpassword' => base64_encode($data['password']),
746 'email_verified_at' => Carbon::now(), 746 'email_verified_at' => Carbon::now(),
747 'is_worker' => $data['is_worker'], 747 'is_worker' => $data['is_worker'],
748 ]); 748 ]);
749 749
750 if ($Code_user->id > 0) { 750 if ($Code_user->id > 0) {
751 $Worker = new Worker(); 751 $Worker = new Worker();
752 $Worker->user_id = $Code_user->id; 752 $Worker->user_id = $Code_user->id;
753 $Worker->position_work = $data['job_titles']; 753 $Worker->position_work = $data['job_titles'];
754 $Worker->email = $data['email']; 754 $Worker->email = $data['email'];
755 $Worker->telephone = $data['telephone']; 755 $Worker->telephone = $data['telephone'];
756 $Worker->save(); 756 $Worker->save();
757 757
758 if (isset($Worker->id)) { 758 if (isset($Worker->id)) {
759 $Title_Worker = new Title_worker(); 759 $Title_Worker = new Title_worker();
760 $Title_Worker->worker_id = $Worker->id; 760 $Title_Worker->worker_id = $Worker->id;
761 $Title_Worker->job_title_id = $data['job_titles']; 761 $Title_Worker->job_title_id = $data['job_titles'];
762 $Title_Worker->save(); 762 $Title_Worker->save();
763 } 763 }
764 764
765 return $Code_user; 765 return $Code_user;
766 } 766 }
767 } 767 }
768 768
769 // Вакансии избранные 769 // Вакансии избранные
770 public function colorado(Request $request) { 770 public function colorado(Request $request) {
771 $Arr = Like_vacancy::Query() 771 $Arr = Like_vacancy::Query()
772 ->select('code_record') 772 ->select('code_record')
773 ->where('user_id', Auth::user()->id) 773 ->where('user_id', Auth::user()->id)
774 ->get(); 774 ->get();
775 775
776 if ($Arr->count()) { 776 if ($Arr->count()) {
777 $A = Array(); 777 $A = Array();
778 foreach ($Arr as $it) { 778 foreach ($Arr as $it) {
779 $A[] = $it->code_record; 779 $A[] = $it->code_record;
780 } 780 }
781 781
782 $Query = Ad_employer::query()->whereIn('id', $A); 782 $Query = Ad_employer::query()->whereIn('id', $A);
783 } else { 783 } else {
784 $Query = Ad_employer::query()->where('id', '=', '0'); 784 $Query = Ad_employer::query()->where('id', '=', '0');
785 } 785 }
786 786
787 $Query = $Query->with(['jobs', 'cat', 'employer']) 787 $Query = $Query->with(['jobs', 'cat', 'employer'])
788 ->whereHas('jobs_code', function ($query) use ($request) { 788 ->whereHas('jobs_code', function ($query) use ($request) {
789 if ($request->ajax()) { 789 if ($request->ajax()) {
790 if (null !== ($request->get('job'))) { 790 if (null !== ($request->get('job'))) {
791 $query->where('job_title_id', $request->get('job')); 791 $query->where('job_title_id', $request->get('job'));
792 } 792 }
793 } 793 }
794 }) 794 })
795 ->select('ad_employers.*'); 795 ->select('ad_employers.*');
796 796
797 if ($request->get('search') !== null) { 797 if ($request->get('search') !== null) {
798 $search = $request->get('search'); 798 $search = $request->get('search');
799 $Query->where('name', 'LIKE', "%$search%"); 799 $Query->where('name', 'LIKE', "%$search%");
800 } 800 }
801 801
802 //dd($Query->get()); 802 //dd($Query->get());
803 803
804 $Job_title = Job_title::query()->OrderBy('name')->get(); 804 $Job_title = Job_title::query()->OrderBy('name')->get();
805 805
806 $Query_count = $Query->count(); 806 $Query_count = $Query->count();
807 807
808 $Query = $Query->OrderBy('updated_at')->paginate(3); 808 $Query = $Query->OrderBy('updated_at')->paginate(3);
809 809
810 return view('workers.favorite', compact('Query', 810 return view('workers.favorite', compact('Query',
811 'Query_count', 811 'Query_count',
812 'Job_title')); 812 'Job_title'));
813 813
814 } 814 }
815 815
816 //Переписка 816 //Переписка
817 public function dialog(Chat $chat, Request $request) { 817 public function dialog(Chat $chat, Request $request) {
818 // Получение параметров. 818 // Получение параметров.
819 if ($request->has('ad_employer')){ 819 if ($request->has('ad_employer')){
820 $ad_employer = $request->get('ad_employer'); 820 $ad_employer = $request->get('ad_employer');
821 } else { 821 } else {
822 $ad_employer = 0; 822 $ad_employer = 0;
823 } 823 }
824 824
825 $sender = User_Model::query()->with('workers')->with('employers')->where('id', $chat->user_id)->first(); 825 $sender = User_Model::query()->with('workers')->with('employers')->where('id', $chat->user_id)->first();
826 $companion = User_Model::query()->with('workers')->with('employers')->where('id', $chat->to_user_id)->first(); 826 $companion = User_Model::query()->with('workers')->with('employers')->where('id', $chat->to_user_id)->first();
827 827
828 $Messages = Chat::get_chat_messages($chat); 828 $Messages = Chat::get_chat_messages($chat);
829 829
830 Message::where('chat_id_to', '=', $chat->id)->update(['flag_new' => 0]); 830 Message::where('chat_id_to', '=', $chat->id)->update(['flag_new' => 0]);
831 831
832 return view('workers.dialog', compact('companion', 'sender', 'chat', 'Messages', 'ad_employer')); 832 return view('workers.dialog', compact('companion', 'sender', 'chat', 'Messages', 'ad_employer'));
833 } 833 }
834 834
835 // Даунылоады 835 // Даунылоады
836 public function download(Worker $worker) { 836 public function download(Worker $worker) {
837 $arr_house = ['0' => 'Проверка, проверка, проверка, проверка, проверка...']; 837 $arr_house = ['0' => 'Проверка, проверка, проверка, проверка, проверка...'];
838 view()->share('house',$arr_house); 838 view()->share('house',$arr_house);
839 $pdf = PDF::loadView('layout.pdf', $arr_house)->setPaper('a4', 'landscape'); 839 $pdf = PDF::loadView('layout.pdf', $arr_house)->setPaper('a4', 'landscape');
840 return $pdf->stream(); 840 return $pdf->stream();
841 } 841 }
842 842
843 // Поднятие анкеты 843 // Поднятие анкеты
844 public function up(Worker $worker) { 844 public function up(Worker $worker) {
845 $worker->updated_at = Carbon::now(); 845 $worker->updated_at = Carbon::now();
846 $worker->save(); 846 $worker->save();
847 // 0 847 // 0
848 return redirect()->route('worker.cabinet')->with('success', 'Ваша анкета была поднята выше остальных'); 848 return redirect()->route('worker.cabinet')->with('success', 'Ваша анкета была поднята выше остальных');
849 } 849 }
850 850
851 // Форма сертификате 851 // Форма сертификате
852 public function new_sertificate(Worker $worker) { 852 public function new_sertificate(Worker $worker) {
853 return view('workers.sertificate_add', compact('worker')); 853 return view('workers.sertificate_add', compact('worker'));
854 } 854 }
855 855
856 // Добавление сертификата 856 // Добавление сертификата
857 public function add_serificate(SertificationRequest $request) { 857 public function add_serificate(SertificationRequest $request) {
858 $request->validate([ 858 $request->validate([
859 'name' => 'required|string|max:255', 859 'name' => 'required|string|max:255',
860 'end_begin' => 'required|date|date_format:d.m.Y' 860 'end_begin' => 'required|date|date_format:d.m.Y'
861 ], 861 ],
862 [ 862 [
863 'name' => 'Навание сертификата обязательно для заполнения.', 863 'name' => 'Навание сертификата обязательно для заполнения.',
864 'end_begin' => 'Формат даты должен соответствовать дд.мм.гггг' 864 'end_begin' => 'Формат даты должен соответствовать дд.мм.гггг'
865 ]); 865 ]);
866 866
867 $params = $request->all(); 867 $params = $request->all();
868 868
869 $end_begin = DateTime::createFromFormat('d.m.Y', $params['end_begin']); 869 $end_begin = DateTime::createFromFormat('d.m.Y', $params['end_begin']);
870 $params['end_begin'] = $end_begin->format('Y-m-d'); 870 $params['end_begin'] = $end_begin->format('Y-m-d');
871 871
872 $Sertificate = new sertification(); 872 $Sertificate = new sertification();
873 $Sertificate->create($params); 873 $Sertificate->create($params);
874 874
875 return response()->json([ 875 return response()->json([
876 'success' => true 876 'success' => true
877 ]); 877 ]);
878 } 878 }
879 879
880 // Удалить сертификат 880 // Удалить сертификат
881 public function delete_sertificate(sertification $doc) { 881 public function delete_sertificate(sertification $doc) {
882 $doc->delete(); 882 $doc->delete();
883 883
884 return redirect()->route('worker.cabinet'); 884 return redirect()->route('worker.cabinet');
885 } 885 }
886 886
887 // Редактирование сертификата 887 // Редактирование сертификата
888 public function edit_sertificate(Worker $worker, sertification $doc) { 888 public function edit_sertificate(Worker $worker, sertification $doc) {
889 return view('workers.sertificate_edit', compact('doc', 'worker')); 889 return view('workers.sertificate_edit', compact('doc', 'worker'));
890 } 890 }
891 891
892 // Редактирование обновление сертификата 892 // Редактирование обновление сертификата
893 public function update_serificate(SertificationRequest $request, sertification $doc) { 893 public function update_serificate(SertificationRequest $request, sertification $doc) {
894 $request->validate([ 894 $request->validate([
895 'name' => 'required|string|max:255', 895 'name' => 'required|string|max:255',
896 'end_begin' => 'required|date|date_format:d.m.Y' 896 'end_begin' => 'required|date|date_format:d.m.Y'
897 ], 897 ],
898 [ 898 [
899 'name' => 'Навание сертификата обязательно для заполнения.', 899 'name' => 'Навание сертификата обязательно для заполнения.',
900 'end_begin' => 'Формат даты должен соответствовать дд.мм.гггг' 900 'end_begin' => 'Формат даты должен соответствовать дд.мм.гггг'
901 ]); 901 ]);
902 902
903 $all = $request->all(); 903 $all = $request->all();
904 904
905 $end_begin = DateTime::createFromFormat('d.m.Y', $all['end_begin']); 905 $end_begin = DateTime::createFromFormat('d.m.Y', $all['end_begin']);
906 $all['end_begin'] = $end_begin->format('Y-m-d'); 906 $all['end_begin'] = $end_begin->format('Y-m-d');
907 907
908 $doc->worker_id = $all['worker_id']; 908 $doc->worker_id = $all['worker_id'];
909 $doc->name = $all['name']; 909 $doc->name = $all['name'];
910 $doc->end_begin = $all['end_begin']; 910 $doc->end_begin = $all['end_begin'];
911 $doc->save(); 911 $doc->save();
912 912
913 return redirect()->route('worker.cabinet')->with('success', 'Вы успешно отредактировали запись!'); 913 return redirect()->route('worker.cabinet')->with('success', 'Вы успешно отредактировали запись!');
914 } 914 }
915 915
916 public function edit_diploms(Request $request, Worker $worker) { 916 public function edit_diploms(Request $request, Worker $worker) {
917 $dop_info_data = $request->input('diploms'); 917 $dop_info_data = $request->input('diploms');
918 918
919 if (empty($dop_info_data)) { 919 if (empty($dop_info_data)) {
920 return redirect()->route('worker.additional_documents')->with('error', 'Данные не предоставлены!'); 920 return redirect()->route('worker.additional_documents')->with('error', 'Данные не предоставлены!');
921 } 921 }
922 922
923 foreach ($dop_info_data as $infoblok_id => $status) { 923 foreach ($dop_info_data as $infoblok_id => $status) {
924 Dop_info::updateOrCreate( 924 Dop_info::updateOrCreate(
925 ['worker_id' => $worker->id, 'infoblok_id' => $infoblok_id], 925 ['worker_id' => $worker->id, 'infoblok_id' => $infoblok_id],
926 ['status' => $status] 926 ['status' => $status]
927 ); 927 );
928 } 928 }
929 929
930 return redirect()->route('worker.additional_documents')->with('success', 'Успешно сохранено!'); 930 return redirect()->route('worker.additional_documents')->with('success', 'Успешно сохранено!');
931 } 931 }
932 932
933 public function delete_add_diplom(Request $request, Worker $worker) { 933 public function delete_add_diplom(Request $request, Worker $worker) {
934 $infoblok_id = $request->get('infoblok_id'); 934 $infoblok_id = $request->get('infoblok_id');
935 935
936 if (Dop_info::query()->where('worker_id', $worker->id)->where('infoblok_id', $infoblok_id)->count() > 0) 936 if (Dop_info::query()->where('worker_id', $worker->id)->where('infoblok_id', $infoblok_id)->count() > 0)
937 $id = Dop_info::query()->where('worker_id', $worker->id)->where('infoblok_id', $infoblok_id)->delete(); 937 $id = Dop_info::query()->where('worker_id', $worker->id)->where('infoblok_id', $infoblok_id)->delete();
938 else { 938 else {
939 $params['infoblok_id'] = $infoblok_id; 939 $params['infoblok_id'] = $infoblok_id;
940 $params['worker_id'] = $worker->id; 940 $params['worker_id'] = $worker->id;
941 $params['status'] = $request->get('val'); 941 $params['status'] = $request->get('val');
942 $id = Dop_info::create($params); 942 $id = Dop_info::create($params);
943 //$id = $worker->infobloks()->sync([$infoblok_id]); 943 //$id = $worker->infobloks()->sync([$infoblok_id]);
944 } 944 }
945 945
946 //$Infoblocks = infobloks::query()->get(); 946 //$Infoblocks = infobloks::query()->get();
947 return $id; //redirect()->route('worker.cabinet')->getTargetUrl(); //view('workers.ajax.diploms_dop', compact('worker', 'Infoblocks')); 947 return $id; //redirect()->route('worker.cabinet')->getTargetUrl(); //view('workers.ajax.diploms_dop', compact('worker', 'Infoblocks'));
948 } 948 }
949 949
950 950
951 951
952 // Добавление диплома 952 // Добавление диплома
953 public function add_diplom_ajax(Request $request) { 953 public function add_diplom_ajax(Request $request) {
954 // конец 954 // конец
955 $params = $request->all(); 955 $params = $request->all();
956 $count = Dop_info::query()->where('worker_id', $request->get('worker_id'))->where('infoblok_id', $request->get('infoblok_id'))->count(); 956 $count = Dop_info::query()->where('worker_id', $request->get('worker_id'))->where('infoblok_id', $request->get('infoblok_id'))->count();
957 957
958 if ($count == 0) $dop_info = Dop_info::create($params); 958 if ($count == 0) $dop_info = Dop_info::create($params);
959 $Infoblocks = infobloks::query()->get(); 959 $Infoblocks = infobloks::query()->get();
960 $Worker = Worker::query()->where('id', $request->get('worker_id'))->get(); 960 $Worker = Worker::query()->where('id', $request->get('worker_id'))->get();
961 $data = Dop_info::query()->where('worker_id', $request->has('worker_id')); 961 $data = Dop_info::query()->where('worker_id', $request->has('worker_id'));
962 return view('ajax.dop_info', compact('data', 'Infoblocks', 'Worker')); 962 return view('ajax.dop_info', compact('data', 'Infoblocks', 'Worker'));
963 } 963 }
964 964
965 // Добавление диплома без ajax 965 // Добавление диплома без ajax
966 public function add_diplom(Worker $worker) { 966 public function add_diplom(Worker $worker) {
967 $worker_id = $worker->id; 967 $worker_id = $worker->id;
968 $Infoblocks = infobloks::query()->get(); 968 $Infoblocks = infobloks::query()->get();
969 return view('workers.dop_info', compact('worker_id', 'worker', 'Infoblocks')); 969 return view('workers.dop_info', compact('worker_id', 'worker', 'Infoblocks'));
970 } 970 }
971 // Сохранить 971 // Сохранить
972 // Сохраняю диплом 972 // Сохраняю диплом
973 public function add_diplom_save(Request $request) { 973 public function add_diplom_save(Request $request) {
974 $params = $request->all(); 974 $params = $request->all();
975 $count = Dop_info::query()->where('worker_id', $request->get('worker_id'))->where('infoblok_id', $request->get('infoblok_id'))->count(); 975 $count = Dop_info::query()->where('worker_id', $request->get('worker_id'))->where('infoblok_id', $request->get('infoblok_id'))->count();
976 if ($count == 0) $dop_info = Dop_info::create($params); 976 if ($count == 0) $dop_info = Dop_info::create($params);
977 return redirect()->route('worker.cabinet'); 977 return redirect()->route('worker.cabinet');
978 } 978 }
979 979
980 // Добавление стандартного документа 980 // Добавление стандартного документа
981 public function add_document(Worker $worker) { 981 public function add_document(Worker $worker) {
982 return view('workers.docs', compact('worker')); 982 return view('workers.docs', compact('worker'));
983 } 983 }
984 984
985 //Сохранение стандартого документа 985 //Сохранение стандартого документа
986 public function add_document_save(DocumentsRequest $request) { 986 public function add_document_save(DocumentsRequest $request) {
987 $params = $request->all(); 987 $params = $request->all();
988 place_works::create($params); 988 place_works::create($params);
989 return response()->json(['success' => true]); 989 return response()->json(['success' => true]);
990 } 990 }
991 991
992 // Редактирование документа 992 // Редактирование документа
993 public function edit_document(place_works $doc, Worker $worker) { 993 public function edit_document(place_works $doc, Worker $worker) {
994 return view('workers.docs-edit', compact('doc', 'worker')); 994 return view('workers.docs-edit', compact('doc', 'worker'));
995 } 995 }
996 996
997 //Сохранение отредактированного документа 997 //Сохранение отредактированного документа
998 public function edit_document_save(DocumentsRequest $request, place_works $doc) { 998 public function edit_document_save(DocumentsRequest $request, place_works $doc) {
999 $params = $request->all(); 999 $params = $request->all();
1000 $doc->update($params); 1000 $doc->update($params);
1001 1001
1002 return redirect()->route('worker.cabinet')->with('success', 'Вы успешно отредактировали запись!'); 1002 return redirect()->route('worker.cabinet')->with('success', 'Вы успешно отредактировали запись!');
1003 } 1003 }
1004 1004
1005 // Удаление документа 1005 // Удаление документа
1006 public function delete_document(place_works $doc) { 1006 public function delete_document(place_works $doc) {
1007 $doc->delete(); 1007 $doc->delete();
1008 return redirect()->route('worker.cabinet')->with('success', 'Вы успешно удалили запись!'); 1008 return redirect()->route('worker.cabinet')->with('success', 'Вы успешно удалили запись!');
1009 } 1009 }
1010 1010
1011 //Отправка нового сообщения 1011 //Отправка нового сообщения
1012 public function new_message(Request $request) 1012 public function new_message(Request $request)
1013 { 1013 {
1014 $params = $request->all(); 1014 $params = $request->all();
1015 1015
1016 $id = $params['user_from']; 1016 $id = $params['user_from'];
1017 1017
1018 Message::add_message( 1018 Message::add_message(
1019 $request, 1019 $request,
1020 $params['user_from'], 1020 $params['user_from'],
1021 $params['user_to'], 1021 $params['user_to'],
1022 [ 1022 [
1023 'text' => $params['comment'] ?? null, 1023 'text' => $params['comment'] ?? null,
1024 'ad_employer_id' => $params['vacancy'], 1024 'ad_employer_id' => $params['vacancy'],
1025 'flag_new' => 1 1025 'flag_new' => 1
1026 ], 1026 ],
1027 file_store_path: "worker/$id" 1027 file_store_path: "worker/$id"
1028 ); 1028 );
1029 1029
1030 if ($request->ajax()) { 1030 if ($request->ajax()) {
1031 return response([]); 1031 return response([]);
1032 } 1032 }
1033 return redirect()->back(); 1033 return redirect()->back();
1034 } 1034 }
1035 1035
1036 1036
1037 public function test123(Request $request) { 1037 public function test123(Request $request) {
1038 $params = $request->all(); 1038 $params = $request->all();
1039 $user1 = $params['user_id']; 1039 $user1 = $params['user_id'];
1040 $user2 = $params['to_user_id']; 1040 $user2 = $params['to_user_id'];
1041 1041
1042 $rules = [ 1042 $rules = [
1043 'text' => 'nullable|required_without:file|min:1|max:150000', 1043 'text' => 'nullable|required_without:file|min:1|max:150000',
1044 'file' => 'nullable|file|mimes:doc,docx,xlsx,csv,txt,xlx,xls,pdf|max:150000' 1044 'file' => 'nullable|file|mimes:doc,docx,xlsx,csv,txt,xlx,xls,pdf|max:150000'
1045 ]; 1045 ];
1046 $messages = [ 1046 $messages = [
1047 'required_without' => 'Поле «:attribute» обязательно, если файл не прикреплен', 1047 'required_without' => 'Поле «:attribute» обязательно, если файл не прикреплен',
1048 'min' => [ 1048 'min' => [
1049 'string' => 'Поле «:attribute» должно быть не меньше :min символов', 1049 'string' => 'Поле «:attribute» должно быть не меньше :min символов',
1050 'integer' => 'Поле «:attribute» должно быть :min или больше', 1050 'integer' => 'Поле «:attribute» должно быть :min или больше',
1051 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' 1051 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт'
1052 ], 1052 ],
1053 'max' => [ 1053 'max' => [
1054 'string' => 'Поле «:attribute» должно быть не больше :max символов', 1054 'string' => 'Поле «:attribute» должно быть не больше :max символов',
1055 'integer' => 'Поле «:attribute» должно быть :max или меньше', 1055 'integer' => 'Поле «:attribute» должно быть :max или меньше',
1056 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' 1056 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт'
1057 ] 1057 ]
1058 ]; 1058 ];
1059 1059
1060 $validator = Validator::make($request->all(), $rules, $messages); 1060 $validator = Validator::make($request->all(), $rules, $messages);
1061 1061
1062 if ($validator->fails()) { 1062 if ($validator->fails()) {
1063 $chat = Chat::where('user_id', $user1) 1063 $chat = Chat::where('user_id', $user1)
1064 ->where('to_user_id', $user2) 1064 ->where('to_user_id', $user2)
1065 ->where('is_removed', 0) 1065 ->where('is_removed', 0)
1066 ->first(); 1066 ->first();
1067 1067
1068 if ($chat->id){ 1068 if ($chat->id){
1069 return redirect()->route('worker.dialog', ['chat' => $chat->id])->withErrors($validator); 1069 return redirect()->route('worker.dialog', ['chat' => $chat->id])->withErrors($validator);
1070 } else { 1070 } else {
1071 return redirect()->route('cabinet.messages', ['type_message' => 'input'])->withErrors($validator); 1071 return redirect()->route('cabinet.messages', ['type_message' => 'input'])->withErrors($validator);
1072 } 1072 }
1073 } else { 1073 } else {
1074 $new_message = Message::add_message($request, $user1, $user2, $request->all(), file_store_path: 'messages'); 1074 $new_message = Message::add_message($request, $user1, $user2, $request->all(), file_store_path: 'messages');
1075 1075
1076 //dd('new message', $new_message); 1076 //dd('new message', $new_message);
1077 return redirect()->route('worker.dialog', ['chat' => $new_message->chat_id_from]); 1077 return redirect()->route('worker.dialog', ['chat' => $new_message->chat_id_from]);
1078 } 1078 }
1079 } 1079 }
1080 1080
1081 // Информация о предыдущих компаниях 1081 // Информация о предыдущих компаниях
1082 public function new_prev_company(Worker $worker) { 1082 public function new_prev_company(Worker $worker) {
1083 return view('workers.prev_company_form', compact('worker')); 1083 return view('workers.prev_company_form', compact('worker'));
1084 } 1084 }
1085 1085
1086 // Добавление контакта компании 1086 // Добавление контакта компании
1087 public function add_prev_company(PrevCompanyRequest $request) { 1087 public function add_prev_company(PrevCompanyRequest $request) {
1088 // Возвращение параметров 1088 // Возвращение параметров
1089 $all = $request->all(); 1089 $all = $request->all();
1090 PrevCompany::create($all); 1090 PrevCompany::create($all);
1091 1091
1092 return response()->json(['success' => true]); 1092 return response()->json(['success' => true]);
1093 } 1093 }
1094 1094
1095 // Редактирование контакта компании 1095 // Редактирование контакта компании
1096 public function edit_prev_company(PrevCompany $doc, Worker $worker) { 1096 public function edit_prev_company(PrevCompany $doc, Worker $worker) {
1097 return view('workers.prev_company_edit_form', compact('doc', 'worker')); 1097 return view('workers.prev_company_edit_form', compact('doc', 'worker'));
1098 } 1098 }
1099 1099
1100 //Сохранение редактирования контакта компании 1100 //Сохранение редактирования контакта компании
1101 public function update_prev_company(PrevCompany $doc, Request $request){ 1101 public function update_prev_company(PrevCompany $doc, Request $request){
1102 $all = $request->all(); 1102 $all = $request->all();
1103 $doc->update($all); 1103 $doc->update($all);
1104 1104
1105 return redirect()->route('worker.cabinet')->with('success', 'Вы успешно отредактировали запись'); 1105 return redirect()->route('worker.cabinet')->with('success', 'Вы успешно отредактировали запись');
1106 } 1106 }
1107 1107
1108 // Удаление контакта предыдущей компании 1108 // Удаление контакта предыдущей компании
1109 public function delete_prev_company(PrevCompany $doc) { 1109 public function delete_prev_company(PrevCompany $doc) {
1110 $doc->delete(); 1110 $doc->delete();
1111 return redirect()->route('worker.cabinet')->with('success', 'Вы успешно удалили запись!'); 1111 return redirect()->route('worker.cabinet')->with('success', 'Вы успешно удалили запись!');
1112 } 1112 }
1113 1113
1114 public function autoresponder() 1114 public function autoresponder()
1115 { 1115 {
1116 $user = Auth::user(); 1116 $user = Auth::user();
1117 return view('workers.autoresponder', compact('user')); 1117 return view('workers.autoresponder', compact('user'));
1118 } 1118 }
1119 1119
1120 public function autoresponderSave(Request $request): RedirectResponse 1120 public function autoresponderSave(Request $request): RedirectResponse
1121 { 1121 {
1122 /** @var Employer $employer */ 1122 /** @var Employer $employer */
1123 $employer = Auth::user(); 1123 $employer = Auth::user();
1124 $employer->autoresponder = $request->get('autoresponder', false) === 'on'; 1124 $employer->autoresponder = $request->get('autoresponder', false) === 'on';
1125 $employer->autoresponder_message = $request->get('autoresponder_message'); 1125 $employer->autoresponder_message = $request->get('autoresponder_message');
1126 $employer->save(); 1126 $employer->save();
1127 1127
1128 return redirect(route('worker.autoresponder')); 1128 return redirect(route('worker.autoresponder'));
1129 } 1129 }
1130 /** 1130 /**
1131 * @throws JsonException 1131 * @throws JsonException
1132 */ 1132 */
1133 public function resumeAutoLiftForm(): View 1133 public function resumeAutoLiftForm(): View
1134 { 1134 {
1135 $worker = Auth::user()->workers[0]; 1135 $worker = Auth::user()->workers[0];
1136 1136
1137 $options = $worker->autoliftOptions ?? new WorkerAutoliftOption(); 1137 $options = $worker->autoliftOptions ?? new WorkerAutoliftOption();
1138 1138
1139 return view('workers.resume_autolift', compact('worker', 'options')); 1139 return view('workers.resume_autolift', compact('worker', 'options'));
1140 } 1140 }
1141 1141
1142 /** 1142 /**
1143 * @throws JsonException 1143 * @throws JsonException
1144 */ 1144 */
1145 public function resumeAutoLiftSave(Request $request) 1145 public function resumeAutoLiftSave(Request $request)
1146 { 1146 {
1147 $worker = Auth::user()->workers[0]; 1147 $worker = Auth::user()->workers[0];
1148 1148
1149 $worker->autoliftOptions()->updateOrCreate( 1149 $worker->autoliftOptions()->updateOrCreate(
1150 [ 1150 [
1151 'worker_id' => $worker->id, 1151 'worker_id' => $worker->id,
1152 ], 1152 ],
1153 [ 1153 [
1154 'is_enabled' => $request->get('is_enabled') === 'on', 1154 'is_enabled' => $request->get('is_enabled') === 'true',
1155 'times_per_day' => $request->get('times_per_day'), 1155 'times_per_day' => $request->get('times_per_day'),
1156 'days_repeat' => $request->get('days_repeat'), 1156 'days_repeat' => $request->get('days_repeat'),
1157 'time_send_first' => $request->get('time_send_first'), 1157 'time_send_first' => $request->get('time_send_first'),
1158 'time_send_second' => $request->get('time_send_second'), 1158 'time_send_second' => $request->get('time_send_second'),
1159 'time_send_third' => $request->get('time_send_third'), 1159 'time_send_third' => $request->get('time_send_third'),
1160 'time_send_tg' => $request->get('time_send_tg'), 1160 'time_send_tg' => $request->get('time_send_tg'),
1161 'autolift_site' => $request->get('autolift_site') === 'on', 1161 'autolift_site' => $request->get('autolift_site') === 'on',
1162 ] 1162 ]
1163 ); 1163 );
1164 1164
1165 return response()->json(['success' => true]); 1165 return response()->json(['success' => true]);
1166 } 1166 }
1167 } 1167 }
1168 1168
1169 1169
app/Jobs/LiftResumeJob.php
1 <?php 1 <?php
2 2
3 namespace App\Jobs; 3 namespace App\Jobs;
4 4
5 use App\Models\Ad_employer;
6 use App\Models\Worker; 5 use App\Models\Worker;
7 use Illuminate\Bus\Queueable; 6 use Illuminate\Bus\Queueable;
8 use Illuminate\Contracts\Queue\ShouldQueue; 7 use Illuminate\Contracts\Queue\ShouldQueue;
9 use Illuminate\Foundation\Bus\Dispatchable; 8 use Illuminate\Foundation\Bus\Dispatchable;
10 use Illuminate\Queue\InteractsWithQueue; 9 use Illuminate\Queue\InteractsWithQueue;
11 use Illuminate\Queue\SerializesModels; 10 use Illuminate\Queue\SerializesModels;
12 11
13 class LiftResumeJob implements ShouldQueue 12 class LiftResumeJob implements ShouldQueue
14 { 13 {
15 use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; 14 use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
16 15
17 private array $workerIds; 16 private array $workerIds;
18 17
19 public function __construct(array $workerIds) 18 public function __construct(array $workerIds)
20 { 19 {
21 $this->workerIds = $workerIds; 20 $this->workerIds = $workerIds;
22 } 21 }
23 22
24 public function handle() 23 public function handle()
25 { 24 {
26 Worker::query() 25 Worker::query()
27 ->whereIn('id', $this->workerIds) 26 ->whereIn('id', $this->workerIds)
28 ->update([ 27 ->update([
29 'updated_at' => now() 28 'updated_at' => now()
30 ]); 29 ]);
31 } 30 }
32 } 31 }
33 32
app/Jobs/LiftVacancyJob.php
1 <?php 1 <?php
2 2
3 namespace App\Jobs; 3 namespace App\Jobs;
4 4
5 use App\Models\Ad_employer; 5 use App\Models\Ad_employer;
6 use Illuminate\Bus\Queueable; 6 use Illuminate\Bus\Queueable;
7 use Illuminate\Contracts\Queue\ShouldQueue; 7 use Illuminate\Contracts\Queue\ShouldQueue;
8 use Illuminate\Foundation\Bus\Dispatchable; 8 use Illuminate\Foundation\Bus\Dispatchable;
9 use Illuminate\Queue\InteractsWithQueue; 9 use Illuminate\Queue\InteractsWithQueue;
10 use Illuminate\Queue\SerializesModels; 10 use Illuminate\Queue\SerializesModels;
11 11
12 class LiftVacancyJob implements ShouldQueue 12 class LiftVacancyJob implements ShouldQueue
13 { 13 {
14 use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; 14 use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
15 15
16 private array $employerIds; 16 private array $employerIds;
17 17
18 public function __construct(array $employerIds) 18 public function __construct(array $employerIds)
19 { 19 {
20 $this->employerIds = $employerIds; 20 $this->employerIds = $employerIds;
21 } 21 }
22 22
23 public function handle() 23 public function handle()
24 { 24 {
25 Ad_employer::query() 25 Ad_employer::query()
26 ->whereIn('id', $this->employerIds) 26 ->whereIn('employer_id', $this->employerIds)
27 ->where('autolift_site', 1)
28 ->where('active_is', 1)
29 ->where('is_remove', 0)
27 ->update([ 30 ->update([
28 'updated_at' => now() 31 'updated_at' => now()
29 ]); 32 ]);
30 } 33 }
31 } 34 }
32 35
app/Jobs/SendVacancyToTelegramJob.php
1 <?php 1 <?php
2 2
3 namespace App\Jobs; 3 namespace App\Jobs;
4 4
5 use App\Components\Integrations\Telegram\VacancyChannel; 5 use App\Components\Integrations\Telegram\VacancyChannel;
6 use App\Models\Ad_employer; 6 use App\Models\Ad_employer;
7 use Illuminate\Bus\Queueable; 7 use Illuminate\Bus\Queueable;
8 use Illuminate\Contracts\Queue\ShouldQueue; 8 use Illuminate\Contracts\Queue\ShouldQueue;
9 use Illuminate\Foundation\Bus\Dispatchable; 9 use Illuminate\Foundation\Bus\Dispatchable;
10 use Illuminate\Queue\InteractsWithQueue; 10 use Illuminate\Queue\InteractsWithQueue;
11 use Illuminate\Queue\SerializesModels; 11 use Illuminate\Queue\SerializesModels;
12 use Telegram\Bot\Exceptions\TelegramSDKException; 12 use Telegram\Bot\Exceptions\TelegramSDKException;
13 13
14 class SendVacancyToTelegramJob implements ShouldQueue 14 class SendVacancyToTelegramJob implements ShouldQueue
15 { 15 {
16 use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; 16 use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
17 17
18 private array $employerIds; 18 private array $employerIds;
19 private VacancyChannel $telegramSenderHelper; 19 private VacancyChannel $telegramSenderHelper;
20 20
21 public function __construct(array $employerIds) 21 public function __construct(array $employerIds)
22 { 22 {
23 $this->employerIds = $employerIds; 23 $this->employerIds = $employerIds;
24 $this->telegramSenderHelper = new VacancyChannel(); 24 $this->telegramSenderHelper = new VacancyChannel();
25 } 25 }
26 26
27 /** 27 /**
28 * @throws TelegramSDKException 28 * @throws TelegramSDKException
29 */ 29 */
30 public function handle(): void 30 public function handle(): void
31 { 31 {
32 $vacancies = Ad_employer::query() 32 $vacancies = Ad_employer::query()
33 ->whereIn('id', $this->employerIds) 33 ->whereIn('employer_id', $this->employerIds)
34 ->where('autosend_tg', 1)
35 ->where('active_is', 1)
36 ->where('is_remove', 0)
34 ->get(); 37 ->get();
35 38
36 foreach ($vacancies as $vacancy) { 39 foreach ($vacancies as $vacancy) {
37 $this->telegramSenderHelper->sendVacancy($vacancy); 40 $this->telegramSenderHelper->sendVacancy($vacancy);
38 } 41 }
39 } 42 }
40 } 43 }
41 44
1 <?php 1 <?php
2 2
3 return [ 3 return [
4 4
5 /* 5 /*
6 |-------------------------------------------------------------------------- 6 |--------------------------------------------------------------------------
7 | Authentication Defaults 7 | Authentication Defaults
8 |-------------------------------------------------------------------------- 8 |--------------------------------------------------------------------------
9 | 9 |
10 | This option controls the default authentication "guard" and password 10 | This option controls the default authentication "guard" and password
11 | reset options for your application. You may change these defaults 11 | reset options for your application. You may change these defaults
12 | as required, but they're a perfect start for most applications. 12 | as required, but they're a perfect start for most applications.
13 | 13 |
14 */ 14 */
15 15
16 'defaults' => [ 16 'defaults' => [
17 'guard' => 'web', 17 'guard' => 'web',
18 'passwords' => 'users', 18 'passwords' => 'users',
19 ], 19 ],
20 20
21 /* 21 /*
22 |-------------------------------------------------------------------------- 22 |--------------------------------------------------------------------------
23 | Authentication Guards 23 | Authentication Guards
24 |-------------------------------------------------------------------------- 24 |--------------------------------------------------------------------------
25 | 25 |
26 | Next, you may define every authentication guard for your application. 26 | Next, you may define every authentication guard for your application.
27 | Of course, a great default configuration has been defined for you 27 | Of course, a great default configuration has been defined for you
28 | here which uses session storage and the Eloquent user provider. 28 | here which uses session storage and the Eloquent user provider.
29 | 29 |
30 | All authentication drivers have a user provider. This defines how the 30 | All authentication drivers have a user provider. This defines how the
31 | users are actually retrieved out of your database or other storage 31 | users are actually retrieved out of your database or other storage
32 | mechanisms used by this application to persist your user's data. 32 | mechanisms used by this application to persist your user's data.
33 | 33 |
34 | Supported: "session" 34 | Supported: "session"
35 | 35 |
36 */ 36 */
37 37
38 'guards' => [ 38 'guards' => [
39 'web' => [ 39 'web' => [
40 'driver' => 'session', 40 'driver' => 'session',
41 'provider' => 'users', 41 'provider' => 'users',
42 ], 42 ],
43 ], 43 ],
44 44
45 /* 45 /*
46 |-------------------------------------------------------------------------- 46 |--------------------------------------------------------------------------
47 | User Providers 47 | User Providers
48 |-------------------------------------------------------------------------- 48 |--------------------------------------------------------------------------
49 | 49 |
50 | All authentication drivers have a user provider. This defines how the 50 | All authentication drivers have a user provider. This defines how the
51 | users are actually retrieved out of your database or other storage 51 | users are actually retrieved out of your database or other storage
52 | mechanisms used by this application to persist your user's data. 52 | mechanisms used by this application to persist your user's data.
53 | 53 |
54 | If you have multiple user tables or models you may configure multiple 54 | If you have multiple user tables or models you may configure multiple
55 | sources which represent each model / table. These sources may then 55 | sources which represent each model / table. These sources may then
56 | be assigned to any extra authentication guards you have defined. 56 | be assigned to any extra authentication guards you have defined.
57 | 57 |
58 | Supported: "database", "eloquent" 58 | Supported: "database", "eloquent"
59 | 59 |
60 */ 60 */
61 61
62 'providers' => [ 62 'providers' => [
63 'users' => [ 63 'users' => [
64 'driver' => 'eloquent', 64 'driver' => 'eloquent',
65 'model' => App\Models\User::class, 65 'model' => App\Models\User::class,
66 ], 66 ],
67 67
68 // 'users' => [ 68 // 'users' => [
69 // 'driver' => 'database', 69 // 'driver' => 'database',
70 // 'table' => 'users', 70 // 'table' => 'users',
71 // ], 71 // ],
72 ], 72 ],
73 73
74 /* 74 /*
75 |-------------------------------------------------------------------------- 75 |--------------------------------------------------------------------------
76 | Resetting Passwords 76 | Resetting Passwords
77 |-------------------------------------------------------------------------- 77 |--------------------------------------------------------------------------
78 | 78 |
79 | You may specify multiple password reset configurations if you have more 79 | You may specify multiple password reset configurations if you have more
80 | than one user table or model in the application and you want to have 80 | than one user table or model in the application and you want to have
81 | separate password reset settings based on the specific user types. 81 | separate password reset settings based on the specific user types.
82 | 82 |
83 | The expire time is the number of minutes that each reset token will be 83 | The expire time is the number of minutes that each reset token will be
84 | considered valid. This security feature keeps tokens short-lived so 84 | considered valid. This security feature keeps tokens short-lived so
85 | they have less time to be guessed. You may change this as needed. 85 | they have less time to be guessed. You may change this as needed.
86 | 86 |
87 */ 87 */
88 88
89 'passwords' => [ 89 'passwords' => [
90 'users' => [ 90 'users' => [
91 'provider' => 'users', 91 'provider' => 'users',
92 'table' => 'password_resets', 92 'table' => 'password_resets',
93 'expire' => 60, 93 'expire' => 60 * 24,
94 'throttle' => 60, 94 'throttle' => 60,
95 ], 95 ],
96 ], 96 ],
97 97
98 /* 98 /*
99 |-------------------------------------------------------------------------- 99 |--------------------------------------------------------------------------
100 | Password Confirmation Timeout 100 | Password Confirmation Timeout
101 |-------------------------------------------------------------------------- 101 |--------------------------------------------------------------------------
102 | 102 |
103 | Here you may define the amount of seconds before a password confirmation 103 | Here you may define the amount of seconds before a password confirmation
104 | times out and the user is prompted to re-enter their password via the 104 | times out and the user is prompted to re-enter their password via the
105 | confirmation screen. By default, the timeout lasts for three hours. 105 | confirmation screen. By default, the timeout lasts for three hours.
106 | 106 |
107 */ 107 */
108 108
109 'password_timeout' => 10800, 109 'password_timeout' => 10800,
110 110
111 ]; 111 ];
112 112
public/images/sprite.svg
1 <svg xmlns="http://www.w3.org/2000/svg" display="none"> 1 <svg xmlns="http://www.w3.org/2000/svg" display="none">
2 2
3 <symbol id="logo" viewBox="0 0 182 54" fill="none"> 3 <symbol id="logo" viewBox="0 0 182 54" fill="none">
4 <path d="M26.9375 54C41.8147 54 53.875 41.9117 53.875 27C53.875 12.0883 41.8147 0 26.9375 0C12.0603 0 0 12.0883 0 27C0 41.9117 12.0603 54 26.9375 54Z" fill="currentColor"/> 4 <path d="M26.9375 54C41.8147 54 53.875 41.9117 53.875 27C53.875 12.0883 41.8147 0 26.9375 0C12.0603 0 0 12.0883 0 27C0 41.9117 12.0603 54 26.9375 54Z" fill="currentColor"/>
5 <path d="M66.8154 37.1175C66.6503 36.5881 66.5183 36.2903 66.5183 34.6359V31.4594C66.5183 29.5734 65.8911 28.9116 64.4385 28.9116H63.3492V37.1175H60.147V16.9668H64.9667C68.2679 16.9668 69.7204 18.4889 69.7204 21.5992V23.1874C69.7204 25.2719 69.0602 26.6286 67.6407 27.2903C69.2252 27.9521 69.7534 29.4741 69.7534 31.5918V34.7021C69.7534 35.6947 69.7864 36.3896 70.1165 37.1506H66.8154V37.1175ZM63.3492 19.8455V26.033H64.6036C65.792 26.033 66.5183 25.5036 66.5183 23.9153V21.93C66.5183 20.5072 66.0231 19.8455 64.9007 19.8455H63.3492Z" fill="currentColor"/> 5 <path d="M66.8154 37.1175C66.6503 36.5881 66.5183 36.2903 66.5183 34.6359V31.4594C66.5183 29.5734 65.8911 28.9116 64.4385 28.9116H63.3492V37.1175H60.147V16.9668H64.9667C68.2679 16.9668 69.7204 18.4889 69.7204 21.5992V23.1874C69.7204 25.2719 69.0602 26.6286 67.6407 27.2903C69.2252 27.9521 69.7534 29.4741 69.7534 31.5918V34.7021C69.7534 35.6947 69.7864 36.3896 70.1165 37.1506H66.8154V37.1175ZM63.3492 19.8455V26.033H64.6036C65.792 26.033 66.5183 25.5036 66.5183 23.9153V21.93C66.5183 20.5072 66.0231 19.8455 64.9007 19.8455H63.3492Z" fill="currentColor"/>
6 <path d="M75.0356 25.4705H79.4261V28.3491H75.0356V34.2389H80.5485V37.1175H71.8334V16.9668H80.5485V19.8455H75.0356V25.4705Z" fill="currentColor"/> 6 <path d="M75.0356 25.4705H79.4261V28.3491H75.0356V34.2389H80.5485V37.1175H71.8334V16.9668H80.5485V19.8455H75.0356V25.4705Z" fill="currentColor"/>
7 <path d="M86.7218 29.1102L85.7315 30.9631V37.1506H82.5294V16.9668H85.7315V25.7352L89.924 16.9668H93.1261L88.6695 25.9337L93.1261 37.1175H89.8249L86.7218 29.1102Z" fill="currentColor"/> 7 <path d="M86.7218 29.1102L85.7315 30.9631V37.1506H82.5294V16.9668H85.7315V25.7352L89.924 16.9668H93.1261L88.6695 25.9337L93.1261 37.1175H89.8249L86.7218 29.1102Z" fill="currentColor"/>
8 <path d="M104.944 37.1175H101.709L101.148 33.4778H97.2193L96.6581 37.1175H93.7531L97.0212 16.9668H101.676L104.944 37.1175ZM97.6484 30.7315H100.719L99.167 20.5403L97.6484 30.7315Z" fill="currentColor"/> 8 <path d="M104.944 37.1175H101.709L101.148 33.4778H97.2193L96.6581 37.1175H93.7531L97.0212 16.9668H101.676L104.944 37.1175ZM97.6484 30.7315H100.719L99.167 20.5403L97.6484 30.7315Z" fill="currentColor"/>
9 <path d="M113.197 31.294L115.376 16.9999H119.833V37.1506H116.795V22.6911L114.584 37.1506H111.58L109.203 22.8896V37.1506H106.397V16.9668H110.853L113.197 31.294Z" fill="currentColor"/> 9 <path d="M113.197 31.294L115.376 16.9999H119.833V37.1506H116.795V22.6911L114.584 37.1506H111.58L109.203 22.8896V37.1506H106.397V16.9668H110.853L113.197 31.294Z" fill="currentColor"/>
10 <path d="M121.912 21.8313C121.912 18.6217 123.629 16.7688 126.765 16.7688C129.901 16.7688 131.618 18.6217 131.618 21.8313V32.3203C131.618 35.5298 129.901 37.3828 126.765 37.3828C123.629 37.3828 121.912 35.5298 121.912 32.3203V21.8313ZM125.114 32.4857C125.114 33.9085 125.742 34.471 126.765 34.471C127.788 34.471 128.415 33.9085 128.415 32.4857V21.6328C128.415 20.21 127.788 19.6475 126.765 19.6475C125.742 19.6475 125.114 20.21 125.114 21.6328V32.4857Z" fill="currentColor"/> 10 <path d="M121.912 21.8313C121.912 18.6217 123.629 16.7688 126.765 16.7688C129.901 16.7688 131.618 18.6217 131.618 21.8313V32.3203C131.618 35.5298 129.901 37.3828 126.765 37.3828C123.629 37.3828 121.912 35.5298 121.912 32.3203V21.8313ZM125.114 32.4857C125.114 33.9085 125.742 34.471 126.765 34.471C127.788 34.471 128.415 33.9085 128.415 32.4857V21.6328C128.415 20.21 127.788 19.6475 126.765 19.6475C125.742 19.6475 125.114 20.21 125.114 21.6328V32.4857Z" fill="currentColor"/>
11 <path d="M140.399 37.1175C140.234 36.5881 140.101 36.2903 140.101 34.6359V31.4594C140.101 29.5734 139.474 28.9116 138.022 28.9116H136.932V37.1175H133.697V16.9668H138.517C141.818 16.9668 143.271 18.4889 143.271 21.5992V23.1874C143.271 25.2719 142.61 26.6286 141.191 27.2903C142.775 27.9521 143.304 29.4741 143.304 31.5918V34.7021C143.304 35.6947 143.337 36.3896 143.667 37.1506H140.399V37.1175ZM136.899 19.8455V26.033H138.154C139.342 26.033 140.068 25.5036 140.068 23.9153V21.93C140.068 20.5072 139.573 19.8455 138.451 19.8455H136.899Z" fill="currentColor"/> 11 <path d="M140.399 37.1175C140.234 36.5881 140.101 36.2903 140.101 34.6359V31.4594C140.101 29.5734 139.474 28.9116 138.022 28.9116H136.932V37.1175H133.697V16.9668H138.517C141.818 16.9668 143.271 18.4889 143.271 21.5992V23.1874C143.271 25.2719 142.61 26.6286 141.191 27.2903C142.775 27.9521 143.304 29.4741 143.304 31.5918V34.7021C143.304 35.6947 143.337 36.3896 143.667 37.1506H140.399V37.1175ZM136.899 19.8455V26.033H138.154C139.342 26.033 140.068 25.5036 140.068 23.9153V21.93C140.068 20.5072 139.573 19.8455 138.451 19.8455H136.899Z" fill="currentColor"/>
12 <path d="M148.586 25.4705H152.976V28.3491H148.586V34.2389H154.099V37.1175H145.384V16.9668H154.099V19.8455H148.586V25.4705Z" fill="currentColor"/> 12 <path d="M148.586 25.4705H152.976V28.3491H148.586V34.2389H154.099V37.1175H145.384V16.9668H154.099V19.8455H148.586V25.4705Z" fill="currentColor"/>
13 <path d="M159.182 34.0737V37.1178H156.112V34.0737H159.182Z" fill="currentColor"/> 13 <path d="M159.182 34.0737V37.1178H156.112V34.0737H159.182Z" fill="currentColor"/>
14 <path d="M165.685 16.7688C168.789 16.7688 170.406 18.6217 170.406 21.8313V22.46H167.369V21.6328C167.369 20.21 166.775 19.6475 165.785 19.6475C164.761 19.6475 164.2 20.21 164.2 21.6328C164.2 25.7688 170.472 26.5629 170.472 32.3203C170.472 35.5298 168.855 37.3828 165.685 37.3828C162.549 37.3828 160.899 35.5298 160.899 32.3203V31.096H163.936V32.5188C163.936 33.9416 164.563 34.471 165.586 34.471C166.61 34.471 167.237 33.9416 167.237 32.5188C167.237 28.3828 160.965 27.5887 160.965 21.8313C160.965 18.5887 162.549 16.7688 165.685 16.7688Z" fill="currentColor"/> 14 <path d="M165.685 16.7688C168.789 16.7688 170.406 18.6217 170.406 21.8313V22.46H167.369V21.6328C167.369 20.21 166.775 19.6475 165.785 19.6475C164.761 19.6475 164.2 20.21 164.2 21.6328C164.2 25.7688 170.472 26.5629 170.472 32.3203C170.472 35.5298 168.855 37.3828 165.685 37.3828C162.549 37.3828 160.899 35.5298 160.899 32.3203V31.096H163.936V32.5188C163.936 33.9416 164.563 34.471 165.586 34.471C166.61 34.471 167.237 33.9416 167.237 32.5188C167.237 28.3828 160.965 27.5887 160.965 21.8313C160.965 18.5887 162.549 16.7688 165.685 16.7688Z" fill="currentColor"/>
15 <path d="M175.325 16.9668V32.5183C175.325 33.9411 175.952 34.4705 176.975 34.4705C177.999 34.4705 178.626 33.9411 178.626 32.5183V16.9668H181.663V32.3197C181.663 35.5293 180.045 37.3822 176.876 37.3822C173.74 37.3822 172.09 35.5293 172.09 32.3197V16.9668H175.325Z" fill="currentColor"/> 15 <path d="M175.325 16.9668V32.5183C175.325 33.9411 175.952 34.4705 176.975 34.4705C177.999 34.4705 178.626 33.9411 178.626 32.5183V16.9668H181.663V32.3197C181.663 35.5293 180.045 37.3822 176.876 37.3822C173.74 37.3822 172.09 35.5293 172.09 32.3197V16.9668H175.325Z" fill="currentColor"/>
16 <path d="M18.2556 11.5144V13.235C18.2556 15.3195 17.1662 16.4776 14.9214 16.4776H13.865V21.4078H11.6533V8.27173H14.9214C17.1662 8.27173 18.2556 9.39673 18.2556 11.5144ZM13.865 10.1247V14.5585H14.9214C15.6147 14.5585 16.0108 14.2607 16.0108 13.3342V11.382C16.0108 10.4556 15.6147 10.1578 14.9214 10.1578H13.865V10.1247Z" fill="white"/> 16 <path d="M18.2556 11.5144V13.235C18.2556 15.3195 17.1662 16.4776 14.9214 16.4776H13.865V21.4078H11.6533V8.27173H14.9214C17.1662 8.27173 18.2556 9.39673 18.2556 11.5144ZM13.865 10.1247V14.5585H14.9214C15.6147 14.5585 16.0108 14.2607 16.0108 13.3342V11.382C16.0108 10.4556 15.6147 10.1578 14.9214 10.1578H13.865V10.1247Z" fill="white"/>
17 <path d="M21.5239 13.7975H24.594V15.6835H21.5239V19.5217H25.3863V21.4078H19.2791V8.27173H25.3533V10.1578H21.5239V13.7975Z" fill="white"/> 17 <path d="M21.5239 13.7975H24.594V15.6835H21.5239V19.5217H25.3863V21.4078H19.2791V8.27173H25.3533V10.1578H21.5239V13.7975Z" fill="white"/>
18 <path d="M29.6443 16.1467L28.9511 17.3379V21.3747H26.7393V8.27173H28.9511V13.996L31.8891 8.27173H34.1009L30.9978 14.1283L34.1009 21.4078H31.8231L29.6443 16.1467Z" fill="white"/> 18 <path d="M29.6443 16.1467L28.9511 17.3379V21.3747H26.7393V8.27173H28.9511V13.996L31.8891 8.27173H34.1009L30.9978 14.1283L34.1009 21.4078H31.8231L29.6443 16.1467Z" fill="white"/>
19 <path d="M42.3209 21.375H40.0761L39.68 18.9927H36.973L36.5769 21.375H34.5302L36.808 8.23901H40.0761L42.3209 21.375ZM37.2371 17.2059H39.3829L38.3265 10.5883L37.2371 17.2059Z" fill="white"/> 19 <path d="M42.3209 21.375H40.0761L39.68 18.9927H36.973L36.5769 21.375H34.5302L36.808 8.23901H40.0761L42.3209 21.375ZM37.2371 17.2059H39.3829L38.3265 10.5883L37.2371 17.2059Z" fill="white"/>
20 <path d="M15.9117 32.2945L17.2982 22.9636H20.1372V36.0997H18.2225V26.7026L16.803 36.0997H14.8553L13.3368 26.8349V36.0997H11.5541V22.9967H14.3931L15.9117 32.2945Z" fill="white"/> 20 <path d="M15.9117 32.2945L17.2982 22.9636H20.1372V36.0997H18.2225V26.7026L16.803 36.0997H14.8553L13.3368 26.8349V36.0997H11.5541V22.9967H14.3931L15.9117 32.2945Z" fill="white"/>
21 <path d="M21.4578 26.1404C21.4578 24.0558 22.5471 22.8315 24.5609 22.8315C26.5746 22.8315 27.6639 24.0227 27.6639 26.1404V32.9565C27.6639 35.0411 26.5746 36.2654 24.5609 36.2654C22.5471 36.2654 21.4578 35.0742 21.4578 32.9565V26.1404ZM23.5045 33.0889C23.5045 34.0154 23.9006 34.3793 24.5609 34.3793C25.2211 34.3793 25.6172 34.0154 25.6172 33.0889V26.008C25.6172 25.0815 25.2211 24.7176 24.5609 24.7176C23.9006 24.7176 23.5045 25.0815 23.5045 26.008V33.0889Z" fill="white"/> 21 <path d="M21.4578 26.1404C21.4578 24.0558 22.5471 22.8315 24.5609 22.8315C26.5746 22.8315 27.6639 24.0227 27.6639 26.1404V32.9565C27.6639 35.0411 26.5746 36.2654 24.5609 36.2654C22.5471 36.2654 21.4578 35.0742 21.4578 32.9565V26.1404ZM23.5045 33.0889C23.5045 34.0154 23.9006 34.3793 24.5609 34.3793C25.2211 34.3793 25.6172 34.0154 25.6172 33.0889V26.008C25.6172 25.0815 25.2211 24.7176 24.5609 24.7176C23.9006 24.7176 23.5045 25.0815 23.5045 26.008V33.0889Z" fill="white"/>
22 <path d="M35.0257 26.239V27.9596C35.0257 30.0441 34.0353 31.2022 31.9886 31.2022H31.0313V36.1324H28.9846V22.9963H31.9886C34.0353 22.9963 35.0257 24.1213 35.0257 26.239ZM31.0313 24.8493V29.2831H31.9886C32.6488 29.2831 32.979 28.9853 32.979 28.0588V26.1066C32.979 25.1802 32.6158 24.8824 31.9886 24.8824H31.0313V24.8493Z" fill="white"/> 22 <path d="M35.0257 26.239V27.9596C35.0257 30.0441 34.0353 31.2022 31.9886 31.2022H31.0313V36.1324H28.9846V22.9963H31.9886C34.0353 22.9963 35.0257 24.1213 35.0257 26.239ZM31.0313 24.8493V29.2831H31.9886C32.6488 29.2831 32.979 28.9853 32.979 28.0588V26.1066C32.979 25.1802 32.6158 24.8824 31.9886 24.8824H31.0313V24.8493Z" fill="white"/>
23 <path d="M38.0294 28.5221H40.8354V30.4081H38.0294V34.2463H41.5617V36.1324H35.9827V22.9963H41.5617V24.8824H38.0294V28.5221Z" fill="white"/> 23 <path d="M38.0294 28.5221H40.8354V30.4081H38.0294V34.2463H41.5617V36.1324H35.9827V22.9963H41.5617V24.8824H38.0294V28.5221Z" fill="white"/>
24 <path d="M41.1323 40.169C40.9342 39.408 39.9439 39.1764 39.2176 39.6727C38.8545 39.9374 38.4914 40.2352 38.0952 40.4999C37.2369 41.0624 36.2466 40.9962 35.4213 40.3676C34.9921 40.0367 34.563 39.7058 34.1008 39.3749C33.3415 38.8786 32.5163 38.4815 31.4929 38.5146C30.5686 38.5477 29.8093 38.8786 29.1161 39.3418C28.5219 39.7389 27.9937 40.169 27.3664 40.5661C26.6072 41.0624 25.6829 40.9962 24.9566 40.4668C24.5935 40.2021 24.2303 39.9043 23.8672 39.6396C22.1176 38.2499 20.2029 38.1507 18.2882 39.408C17.8261 39.7058 17.4299 40.0367 17.0008 40.3676C16.2415 40.9301 15.4492 41.0293 14.69 40.6654C14.624 40.6323 14.5249 40.5992 14.4589 40.533C14.3929 40.4999 14.3269 40.4337 14.2608 40.4007C13.9967 40.2021 13.7657 40.0036 13.4685 39.8051C12.9404 39.4742 12.3462 39.5073 11.917 39.8712C11.5209 40.2021 11.5209 40.7315 11.95 41.1286C12.2141 41.3602 12.5112 41.5918 12.8413 41.8234C12.9074 41.8896 13.0064 41.9227 13.0724 41.9889V42.022C13.6336 42.3859 14.2608 42.5845 14.888 42.6837C14.9541 42.6837 14.9871 42.7168 15.0531 42.7168C15.0861 42.7168 15.0861 42.7168 15.1191 42.7168C15.3172 42.7499 15.5153 42.7499 15.7133 42.7499C16.6377 42.7499 17.595 42.4521 18.4533 41.8565C18.9155 41.5257 19.3446 41.1948 19.8068 40.8639C20.6981 40.2683 21.3253 40.2683 22.2166 40.897C22.6128 41.1948 23.0089 41.4926 23.405 41.7904C24.3954 42.4852 25.5178 42.8161 26.8713 42.6837C27.8616 42.5514 28.6539 42.1543 29.3802 41.658C29.8423 41.3271 30.3045 40.9632 30.7997 40.6654C31.4269 40.2683 31.922 40.2683 32.5493 40.6984C33.0775 41.0293 33.5396 41.3933 34.0348 41.7573C34.8601 42.3859 35.8174 42.7168 36.9728 42.7168C37.7321 42.6837 38.5244 42.5845 39.1846 42.1543C39.8448 41.7573 40.439 41.294 41.0333 40.7977C41.0993 40.6984 41.1653 40.4007 41.1323 40.169Z" fill="white"/> 24 <path d="M41.1323 40.169C40.9342 39.408 39.9439 39.1764 39.2176 39.6727C38.8545 39.9374 38.4914 40.2352 38.0952 40.4999C37.2369 41.0624 36.2466 40.9962 35.4213 40.3676C34.9921 40.0367 34.563 39.7058 34.1008 39.3749C33.3415 38.8786 32.5163 38.4815 31.4929 38.5146C30.5686 38.5477 29.8093 38.8786 29.1161 39.3418C28.5219 39.7389 27.9937 40.169 27.3664 40.5661C26.6072 41.0624 25.6829 40.9962 24.9566 40.4668C24.5935 40.2021 24.2303 39.9043 23.8672 39.6396C22.1176 38.2499 20.2029 38.1507 18.2882 39.408C17.8261 39.7058 17.4299 40.0367 17.0008 40.3676C16.2415 40.9301 15.4492 41.0293 14.69 40.6654C14.624 40.6323 14.5249 40.5992 14.4589 40.533C14.3929 40.4999 14.3269 40.4337 14.2608 40.4007C13.9967 40.2021 13.7657 40.0036 13.4685 39.8051C12.9404 39.4742 12.3462 39.5073 11.917 39.8712C11.5209 40.2021 11.5209 40.7315 11.95 41.1286C12.2141 41.3602 12.5112 41.5918 12.8413 41.8234C12.9074 41.8896 13.0064 41.9227 13.0724 41.9889V42.022C13.6336 42.3859 14.2608 42.5845 14.888 42.6837C14.9541 42.6837 14.9871 42.7168 15.0531 42.7168C15.0861 42.7168 15.0861 42.7168 15.1191 42.7168C15.3172 42.7499 15.5153 42.7499 15.7133 42.7499C16.6377 42.7499 17.595 42.4521 18.4533 41.8565C18.9155 41.5257 19.3446 41.1948 19.8068 40.8639C20.6981 40.2683 21.3253 40.2683 22.2166 40.897C22.6128 41.1948 23.0089 41.4926 23.405 41.7904C24.3954 42.4852 25.5178 42.8161 26.8713 42.6837C27.8616 42.5514 28.6539 42.1543 29.3802 41.658C29.8423 41.3271 30.3045 40.9632 30.7997 40.6654C31.4269 40.2683 31.922 40.2683 32.5493 40.6984C33.0775 41.0293 33.5396 41.3933 34.0348 41.7573C34.8601 42.3859 35.8174 42.7168 36.9728 42.7168C37.7321 42.6837 38.5244 42.5845 39.1846 42.1543C39.8448 41.7573 40.439 41.294 41.0333 40.7977C41.0993 40.6984 41.1653 40.4007 41.1323 40.169Z" fill="white"/>
25 <path d="M41.1323 43.8748C40.9342 43.1138 39.9439 42.8822 39.2176 43.3785C38.8545 43.6432 38.4914 43.941 38.0952 44.2057C37.2369 44.7682 36.2466 44.7021 35.4213 44.0734C34.9921 43.7425 34.563 43.4116 34.1008 43.0807C33.3415 42.5844 32.5163 42.1873 31.4929 42.2204C30.5686 42.2535 29.8093 42.5844 29.1161 43.0476C28.5219 43.4447 27.9937 43.8748 27.3664 44.2719C26.6072 44.7682 25.6829 44.7021 24.9566 44.1726C24.5935 43.9079 24.2303 43.6101 23.8672 43.3454C22.1176 41.9557 20.2029 41.8565 18.2882 43.1469C17.8261 43.4447 17.4299 43.7756 17.0008 44.1065C16.2415 44.669 15.4492 44.7682 14.69 44.4043C14.624 44.3712 14.5249 44.3381 14.4589 44.2719C14.3929 44.2388 14.3269 44.1726 14.2608 44.1396C13.9967 43.941 13.7657 43.7425 13.4685 43.544C12.9404 43.2131 12.3462 43.2462 11.917 43.6101C11.5209 43.941 11.5209 44.4704 11.95 44.8675C12.2141 45.0991 12.5112 45.3307 12.8413 45.5623C12.9074 45.6285 13.0064 45.6616 13.0724 45.7278V45.7609C13.6336 46.1248 14.2608 46.3234 14.888 46.4226C14.9541 46.4226 14.9871 46.4557 15.0531 46.4557C15.0861 46.4557 15.0861 46.4557 15.1191 46.4557C15.3172 46.4888 15.5153 46.4888 15.7133 46.4888C16.6377 46.4888 17.595 46.191 18.4533 45.5954C18.9155 45.2646 19.3446 44.9337 19.8068 44.6028C20.6981 44.0072 21.3253 44.0072 22.2166 44.6359C22.6128 44.9337 23.0089 45.2315 23.405 45.5293C24.3954 46.2241 25.5178 46.555 26.8713 46.4226C27.8616 46.2903 28.6539 45.8932 29.3802 45.3969C29.8423 45.066 30.3045 44.7021 30.7997 44.4043C31.4269 44.0072 31.922 44.0072 32.5493 44.4373C33.0775 44.7682 33.5396 45.1322 34.0348 45.4962C34.8601 46.1248 35.8174 46.4557 36.9728 46.4557C37.7321 46.4226 38.5244 46.3234 39.1846 45.8932C39.8448 45.4962 40.439 45.0329 41.0333 44.5366C41.0993 44.4043 41.1653 44.0734 41.1323 43.8748Z" fill="white"/> 25 <path d="M41.1323 43.8748C40.9342 43.1138 39.9439 42.8822 39.2176 43.3785C38.8545 43.6432 38.4914 43.941 38.0952 44.2057C37.2369 44.7682 36.2466 44.7021 35.4213 44.0734C34.9921 43.7425 34.563 43.4116 34.1008 43.0807C33.3415 42.5844 32.5163 42.1873 31.4929 42.2204C30.5686 42.2535 29.8093 42.5844 29.1161 43.0476C28.5219 43.4447 27.9937 43.8748 27.3664 44.2719C26.6072 44.7682 25.6829 44.7021 24.9566 44.1726C24.5935 43.9079 24.2303 43.6101 23.8672 43.3454C22.1176 41.9557 20.2029 41.8565 18.2882 43.1469C17.8261 43.4447 17.4299 43.7756 17.0008 44.1065C16.2415 44.669 15.4492 44.7682 14.69 44.4043C14.624 44.3712 14.5249 44.3381 14.4589 44.2719C14.3929 44.2388 14.3269 44.1726 14.2608 44.1396C13.9967 43.941 13.7657 43.7425 13.4685 43.544C12.9404 43.2131 12.3462 43.2462 11.917 43.6101C11.5209 43.941 11.5209 44.4704 11.95 44.8675C12.2141 45.0991 12.5112 45.3307 12.8413 45.5623C12.9074 45.6285 13.0064 45.6616 13.0724 45.7278V45.7609C13.6336 46.1248 14.2608 46.3234 14.888 46.4226C14.9541 46.4226 14.9871 46.4557 15.0531 46.4557C15.0861 46.4557 15.0861 46.4557 15.1191 46.4557C15.3172 46.4888 15.5153 46.4888 15.7133 46.4888C16.6377 46.4888 17.595 46.191 18.4533 45.5954C18.9155 45.2646 19.3446 44.9337 19.8068 44.6028C20.6981 44.0072 21.3253 44.0072 22.2166 44.6359C22.6128 44.9337 23.0089 45.2315 23.405 45.5293C24.3954 46.2241 25.5178 46.555 26.8713 46.4226C27.8616 46.2903 28.6539 45.8932 29.3802 45.3969C29.8423 45.066 30.3045 44.7021 30.7997 44.4043C31.4269 44.0072 31.922 44.0072 32.5493 44.4373C33.0775 44.7682 33.5396 45.1322 34.0348 45.4962C34.8601 46.1248 35.8174 46.4557 36.9728 46.4557C37.7321 46.4226 38.5244 46.3234 39.1846 45.8932C39.8448 45.4962 40.439 45.0329 41.0333 44.5366C41.0993 44.4043 41.1653 44.0734 41.1323 43.8748Z" fill="white"/>
26 </symbol> 26 </symbol>
27 27
28 <symbol id="burger" viewBox="0 0 20 14" fill="none"> 28 <symbol id="burger" viewBox="0 0 20 14" fill="none">
29 <rect width="20" height="1.75" rx="0.875" fill="currentColor"/> 29 <rect width="20" height="1.75" rx="0.875" fill="currentColor"/>
30 <rect y="6.125" width="20" height="1.75" rx="0.875" fill="currentColor"/> 30 <rect y="6.125" width="20" height="1.75" rx="0.875" fill="currentColor"/>
31 <rect y="12.25" width="20" height="1.75" rx="0.875" fill="currentColor"/> 31 <rect y="12.25" width="20" height="1.75" rx="0.875" fill="currentColor"/>
32 </symbol> 32 </symbol>
33 33
34 <symbol id="user_alt" width="24" height="24" viewBox="0 0 22 22" fill="none">
35 <path d="M3.6665 16.4997C3.6665 15.5272 4.05281 14.5946 4.74045 13.9069C5.42808 13.2193 6.36071 12.833 7.33317 12.833H14.6665C15.639 12.833 16.5716 13.2193 17.2592 13.9069C17.9469 14.5946 18.3332 15.5272 18.3332 16.4997C18.3332 16.9859 18.14 17.4522 17.7962 17.796C17.4524 18.1399 16.9861 18.333 16.4998 18.333H5.49984C5.01361 18.333 4.54729 18.1399 4.20347 17.796C3.85966 17.4522 3.6665 16.9859 3.6665 16.4997Z" stroke="#377D87" stroke-width="1.5" stroke-linejoin="round"/>
36 <path d="M11 9.1665C12.5188 9.1665 13.75 7.93529 13.75 6.4165C13.75 4.89772 12.5188 3.6665 11 3.6665C9.48122 3.6665 8.25 4.89772 8.25 6.4165C8.25 7.93529 9.48122 9.1665 11 9.1665Z" stroke="#377D87" stroke-width="1.5"/>
37 </symbol>
38
39 <symbol id="settings" width="24" height="24" viewBox="0 0 21 21" fill="none">
40 <path d="M12.6786 4.21274L13.4249 4.13812L13.4241 4.1303L13.4232 4.1225L12.6786 4.21274ZM12.6786 4.21272L11.9323 4.28734L11.9331 4.29517L11.9341 4.30297L12.6786 4.21272ZM12.7538 4.75943L12.0378 4.98271L12.0378 4.98271L12.7538 4.75943ZM14.173 5.34729L13.8246 4.68312L13.8246 4.68312L14.173 5.34729ZM14.6128 5.01388L14.1379 4.43341L14.1379 4.43341L14.6128 5.01388ZM14.8572 4.8263L14.4667 4.18593L14.4667 4.18593L14.8572 4.8263ZM15.9807 4.88233L16.4329 4.28399L16.4329 4.28399L15.9807 4.88233ZM16.2051 5.09327L15.6748 5.6236L15.6748 5.62361L16.2051 5.09327ZM16.907 5.79524L17.4374 5.26491L17.4374 5.26491L16.907 5.79524ZM17.118 6.0197L17.7164 5.56752L17.7164 5.56752L17.118 6.0197ZM17.174 7.14315L17.8144 7.53356L17.8144 7.53355L17.174 7.14315ZM16.9865 7.38749L17.5559 7.87559L17.5615 7.86906L17.5669 7.86242L16.9865 7.38749ZM16.9864 7.38751L16.417 6.89942L16.4114 6.90594L16.406 6.91258L16.9864 7.38751ZM16.653 7.82742L17.3172 8.17579L17.3172 8.17579L16.653 7.82742ZM17.2408 9.24656L17.0175 9.96254L17.0175 9.96254L17.2408 9.24656ZM17.7876 9.32181L17.713 10.0681L17.713 10.0681L17.7876 9.32181ZM18.093 9.36193L18.2698 8.63306L18.2698 8.63306L18.093 9.36193ZM18.8478 10.196L19.5907 10.0926L19.5907 10.0926L18.8478 10.196ZM18.8478 11.8044L19.5907 11.9076L19.5907 11.9076L18.8478 11.8044ZM18.0929 12.6385L18.2696 13.3674L18.2696 13.3674L18.0929 12.6385ZM17.7877 12.6786L17.8623 13.4249L17.8623 13.4249L17.7877 12.6786ZM17.2413 12.7538L17.0182 12.0377L17.0182 12.0377L17.2413 12.7538ZM16.6534 14.1732L17.3175 13.8247L17.3175 13.8247L16.6534 14.1732ZM16.9865 14.6125L16.406 15.0875L16.406 15.0875L16.9865 14.6125ZM17.1738 14.8565L16.5335 15.2471L16.5335 15.2471L17.1738 14.8565ZM17.1178 15.9803L17.716 16.4326L17.716 16.4326L17.1178 15.9803ZM16.9071 16.2045L16.3767 15.6741L16.3767 15.6741L16.9071 16.2045ZM16.2049 16.9066L16.7352 17.437L16.7352 17.437L16.2049 16.9066ZM16.2049 16.9066L16.7352 17.437L16.7352 17.437L16.2049 16.9066ZM15.9806 17.1175L16.4328 17.7158L16.4328 17.7158L15.9806 17.1175ZM14.857 17.1735L14.4665 17.8139L14.4665 17.8139L14.857 17.1735ZM14.6128 16.986L15.0877 16.4056L15.0755 16.3955L15.0628 16.386L14.6128 16.986ZM14.6128 16.986L14.1379 17.5665L14.1501 17.5765L14.1628 17.586L14.6128 16.986ZM14.1731 16.6527L13.8247 17.3169L13.8247 17.3169L14.1731 16.6527ZM12.7539 17.2406L13.4699 17.4638L13.4699 17.4638L12.7539 17.2406ZM12.6786 17.7874L13.4228 17.8804L13.424 17.8712L13.4249 17.862L12.6786 17.7874ZM12.6786 17.7874L11.9344 17.6944L11.9333 17.7036L11.9324 17.7128L12.6786 17.7874ZM12.6385 18.0931L11.9096 17.9163L11.9096 17.9163L12.6385 18.0931ZM11.8045 18.8478L11.9079 19.5906L11.9079 19.5906L11.8045 18.8478ZM10.196 18.8478L10.0926 19.5907L10.0926 19.5907L10.196 18.8478ZM9.36193 18.093L8.63306 18.2698L8.63306 18.2698L9.36193 18.093ZM9.32181 17.7876L8.57371 17.841L8.57447 17.8517L8.57553 17.8622L9.32181 17.7876ZM9.3218 17.7876L10.0699 17.7342L10.0685 17.7143L10.066 17.6946L9.3218 17.7876ZM9.3218 17.7876L8.57553 17.8622L8.57645 17.8714L8.57759 17.8806L9.3218 17.7876ZM9.24657 17.2408L8.53057 17.4641L8.53057 17.4641L9.24657 17.2408ZM7.82738 16.653L7.47899 15.9888L7.47898 15.9888L7.82738 16.653ZM7.38759 16.9864L6.91266 16.4059L6.90305 16.4138L6.89371 16.4219L7.38759 16.9864ZM7.38756 16.9864L7.86249 17.5669L7.8721 17.559L7.88144 17.5508L7.38756 16.9864ZM7.14332 17.1739L6.75289 16.5335L6.75289 16.5335L7.14332 17.1739ZM6.0198 17.1179L6.47201 16.5195L6.47201 16.5195L6.0198 17.1179ZM5.79541 16.907L6.32575 16.3766L6.31514 16.366L6.30412 16.3559L5.79541 16.907ZM5.7954 16.907L5.26507 17.4373L5.27568 17.4479L5.28669 17.4581L5.7954 16.907ZM5.09336 16.2049L5.62369 15.6746L5.61566 15.6665L5.60739 15.6588L5.09336 16.2049ZM5.09335 16.2049L4.56302 16.7352L4.57105 16.7433L4.57933 16.7511L5.09335 16.2049ZM4.88249 15.9806L4.28417 16.4328L4.28417 16.4328L4.88249 15.9806ZM4.82645 14.857L4.1861 14.4665L4.1861 14.4666L4.82645 14.857ZM5.01396 14.6128L4.43349 14.1378L4.43349 14.1378L5.01396 14.6128ZM5.3473 14.1731L6.01146 14.5215L6.01146 14.5215L5.3473 14.1731ZM4.75944 12.7538L4.9827 12.0378L4.9827 12.0378L4.75944 12.7538ZM4.21277 12.6786L4.2874 11.9323L4.28739 11.9323L4.21277 12.6786ZM3.90743 12.6385L4.08416 11.9096L4.08416 11.9096L3.90743 12.6385ZM3.1526 11.8044L3.89545 11.7011L3.89545 11.7011L3.1526 11.8044ZM3.14307 11.4966L3.89307 11.4966L3.89307 11.4966L3.14307 11.4966ZM3.14307 10.5039L2.39307 10.5039L2.39307 10.5039L3.14307 10.5039ZM3.15261 10.1959L2.40977 10.0925L2.40977 10.0925L3.15261 10.1959ZM3.90735 9.36195L3.73057 8.63308L3.73057 8.63308L3.90735 9.36195ZM4.21285 9.3218L4.28748 10.0681L4.28748 10.0681L4.21285 9.3218ZM4.75989 9.24651L4.98325 9.96248L4.98325 9.96248L4.75989 9.24651ZM5.34768 7.82746L6.01189 7.47914L6.01189 7.47914L5.34768 7.82746ZM5.01402 7.38731L4.41402 7.83731L4.42352 7.84998L4.43355 7.86224L5.01402 7.38731ZM5.01401 7.38731L5.61401 6.93731L5.5939 6.9105L5.57148 6.88558L5.01401 7.38731ZM5.01401 7.3873L4.43354 7.86223L4.44472 7.8759L4.45654 7.88902L5.01401 7.3873ZM4.82623 7.1427L5.46665 6.75237L5.46665 6.75237L4.82623 7.1427ZM4.88225 6.01944L5.48066 6.47156L5.48066 6.47155L4.88225 6.01944ZM5.0934 5.79478L5.62373 6.32511L5.62373 6.32511L5.0934 5.79478ZM5.79522 5.09295L5.26489 4.56262L5.26489 4.56262L5.79522 5.09295ZM6.01971 4.88196L6.47189 5.48032L6.47189 5.48032L6.01971 4.88196ZM7.14314 4.82592L6.75275 5.46631L6.75275 5.46631L7.14314 4.82592ZM7.3876 5.01361L6.91267 5.59408L6.91268 5.59408L7.3876 5.01361ZM7.82732 5.34697L7.47884 6.0111L7.82732 5.34697ZM9.24664 4.75907L8.53063 4.53587L8.53063 4.53587L9.24664 4.75907ZM9.32182 4.21266L8.57685 4.12501L8.57554 4.13803L9.32182 4.21266ZM9.32182 4.21265L10.0668 4.30029L10.0681 4.28727L9.32182 4.21265ZM9.36191 3.90751L8.63301 3.73084L8.63301 3.73085L9.36191 3.90751ZM10.1961 3.15259L10.0928 2.40973L10.0928 2.40973L10.1961 3.15259ZM11.8044 3.1526L11.7011 3.89545L11.7011 3.89545L11.8044 3.1526ZM12.6385 3.90744L11.9096 4.08416L11.9096 4.08416L12.6385 3.90744ZM13.4232 4.1225L13.4232 4.12247L11.9341 4.30297L11.9341 4.30299L13.4232 4.1225ZM13.4698 4.53616C13.4747 4.55189 13.4699 4.54279 13.4599 4.46578C13.4504 4.39212 13.4403 4.29257 13.4249 4.13812L11.9323 4.28737C11.9576 4.53984 11.9786 4.79264 12.0378 4.98271L13.4698 4.53616ZM13.8246 4.68312C13.6864 4.75563 13.5163 4.68516 13.4698 4.53616L12.0378 4.98271C12.3631 6.0257 13.5539 6.51898 14.5214 6.01145L13.8246 4.68312ZM14.1379 4.43341C14.0178 4.53171 13.9403 4.59502 13.8814 4.64037C13.8199 4.68778 13.81 4.69078 13.8246 4.68312L14.5214 6.01145C14.6977 5.91896 14.8914 5.75503 15.0878 5.59435L14.1379 4.43341ZM14.4667 4.18593C14.3523 4.25571 14.2425 4.34782 14.1379 4.43341L15.0878 5.59435C15.1523 5.54154 15.1904 5.51048 15.2196 5.48769C15.2471 5.46637 15.2522 5.46384 15.2476 5.46667L14.4667 4.18593ZM16.4329 4.28399C15.8597 3.85085 15.0801 3.81197 14.4667 4.18593L15.2476 5.46667C15.3352 5.41325 15.4466 5.4188 15.5285 5.48068L16.4329 4.28399ZM16.7354 4.56295C16.6398 4.46738 16.5398 4.36482 16.4329 4.28399L15.5285 5.48068C15.5241 5.4774 15.529 5.48043 15.5542 5.50437C15.581 5.52995 15.6158 5.56464 15.6748 5.6236L16.7354 4.56295ZM17.4374 5.26491L16.7354 4.56294L15.6748 5.62361L16.3767 6.32557L17.4374 5.26491ZM17.7164 5.56752C17.6355 5.46055 17.533 5.36049 17.4374 5.26491L16.3767 6.32557C16.4357 6.38454 16.4704 6.4193 16.496 6.44618C16.5199 6.47134 16.5229 6.47622 16.5197 6.47189L17.7164 5.56752ZM17.8144 7.53355C18.1884 6.9202 18.1495 6.14062 17.7164 5.56752L16.5197 6.47189C16.5815 6.55376 16.5871 6.66513 16.5337 6.75275L17.8144 7.53355ZM17.5669 7.86242C17.6525 7.7578 17.7446 7.64803 17.8144 7.53356L16.5337 6.75274C16.5365 6.74811 16.534 6.75327 16.5126 6.78068C16.4899 6.80998 16.4588 6.84802 16.406 6.91257L17.5669 7.86242ZM17.5559 7.87561L17.5559 7.87559L16.417 6.8994L16.417 6.89942L17.5559 7.87561ZM17.3172 8.17579C17.3095 8.19038 17.3125 8.18051 17.3599 8.11898C17.4053 8.06013 17.4686 7.98262 17.5669 7.86244L16.406 6.91258C16.2453 7.10902 16.0813 7.30269 15.9888 7.47905L17.3172 8.17579ZM17.4641 8.53057C17.3151 8.48411 17.2447 8.314 17.3172 8.17579L15.9888 7.47905C15.4813 8.4465 15.9746 9.63726 17.0175 9.96254L17.4641 8.53057ZM17.8623 8.57553C17.7078 8.56008 17.6082 8.55005 17.5345 8.5405C17.4575 8.53053 17.4484 8.52567 17.4641 8.53057L17.0175 9.96254C17.2076 10.0218 17.4605 10.0428 17.713 10.0681L17.8623 8.57553ZM18.2698 8.63306C18.1395 8.60146 17.9967 8.58898 17.8623 8.57553L17.713 10.0681C17.796 10.0764 17.8448 10.0813 17.8817 10.0859C17.9161 10.0902 17.9216 10.0921 17.9163 10.0908L18.2698 8.63306ZM19.5907 10.0926C19.4917 9.38111 18.9679 8.80235 18.2698 8.63306L17.9163 10.0908C18.016 10.115 18.0908 10.1977 18.105 10.2993L19.5907 10.0926ZM19.6074 10.5038C19.6074 10.3687 19.6091 10.2254 19.5907 10.0926L18.105 10.2993C18.1042 10.2939 18.1055 10.2995 18.1064 10.3342C18.1073 10.3713 18.1074 10.4205 18.1074 10.5038H19.6074ZM19.6074 11.4967V10.5038H18.1074V11.4967H19.6074ZM19.5907 11.9076C19.6091 11.7749 19.6074 11.6318 19.6074 11.4967H18.1074C18.1074 11.58 18.1073 11.6291 18.1064 11.6662C18.1055 11.7009 18.1042 11.7065 18.105 11.7011L19.5907 11.9076ZM18.2696 13.3674C18.9679 13.1981 19.4917 12.6193 19.5907 11.9076L18.105 11.7011C18.0908 11.8027 18.016 11.8854 17.9162 11.9096L18.2696 13.3674ZM17.8623 13.4249C17.9967 13.4114 18.1394 13.399 18.2696 13.3674L17.9163 11.9096C17.9215 11.9083 17.9161 11.9102 17.8816 11.9145C17.8448 11.9191 17.796 11.924 17.713 11.9323L17.8623 13.4249ZM17.4645 13.4698C17.4488 13.4747 17.4578 13.4698 17.5348 13.4599C17.6084 13.4503 17.7079 13.4403 17.8623 13.4249L17.713 11.9323C17.4607 11.9576 17.2081 11.9785 17.0182 12.0377L17.4645 13.4698ZM17.3175 13.8247C17.2449 13.6864 17.3154 13.5162 17.4645 13.4698L17.0182 12.0377C15.9749 12.3628 15.4815 13.5541 15.9893 14.5217L17.3175 13.8247ZM17.5669 14.1376C17.4687 14.0176 17.4055 13.9402 17.3602 13.8814C17.3128 13.8199 17.3098 13.8101 17.3175 13.8247L15.9893 14.5217C16.0817 14.6978 16.2455 14.8913 16.406 15.0875L17.5669 14.1376ZM17.8141 14.466C17.7444 14.3517 17.6524 14.2421 17.5669 14.1376L16.406 15.0875C16.4587 15.1519 16.4898 15.1899 16.5125 15.2192C16.5338 15.2465 16.5363 15.2517 16.5335 15.2471L17.8141 14.466ZM17.716 16.4326C18.1494 15.8594 18.1883 15.0795 17.8141 14.466L16.5335 15.2471C16.587 15.3347 16.5814 15.4461 16.5195 15.528L17.716 16.4326ZM17.4374 16.7348C17.5329 16.6393 17.6353 16.5394 17.716 16.4326L16.5195 15.528C16.5228 15.5237 16.5198 15.5285 16.4958 15.5537C16.4703 15.5805 16.4356 15.6152 16.3767 15.6741L17.4374 16.7348ZM16.7352 17.437L17.4374 16.7348L16.3767 15.6741L15.6746 16.3763L16.7352 17.437ZM16.7352 17.437L16.7352 17.437L15.6746 16.3763L15.6746 16.3763L16.7352 17.437ZM16.4328 17.7158C16.5397 17.635 16.6397 17.5325 16.7352 17.437L15.6746 16.3763C15.6156 16.4352 15.5809 16.4699 15.554 16.4955C15.5289 16.5194 15.524 16.5224 15.5283 16.5192L16.4328 17.7158ZM14.4665 17.8139C15.0799 18.1879 15.8597 18.149 16.4328 17.7158L15.5283 16.5192C15.4465 16.5811 15.3351 16.5866 15.2474 16.5332L14.4665 17.8139ZM14.1379 17.5665C14.2424 17.6521 14.3521 17.7441 14.4665 17.8139L15.2474 16.5332C15.2521 16.536 15.2469 16.5335 15.2195 16.5122C15.1903 16.4894 15.1522 16.4584 15.0877 16.4056L14.1379 17.5665ZM14.1628 17.586L14.1628 17.586L15.0628 16.386L15.0628 16.386L14.1628 17.586ZM13.8247 17.3169C13.8101 17.3092 13.82 17.3122 13.8815 17.3596C13.9403 17.4049 14.0177 17.4682 14.1379 17.5665L15.0877 16.4056C14.8914 16.2449 14.6978 16.081 14.5215 15.9886L13.8247 17.3169ZM13.4699 17.4638C13.5163 17.3148 13.6865 17.2444 13.8247 17.3169L14.5215 15.9886C13.554 15.481 12.3631 15.9743 12.0379 17.0174L13.4699 17.4638ZM13.4249 17.862C13.4404 17.7075 13.4504 17.6079 13.4599 17.5343C13.4699 17.4572 13.4748 17.4481 13.4699 17.4638L12.0379 17.0173C11.9786 17.2074 11.9576 17.4602 11.9324 17.7128L13.4249 17.862ZM13.4228 17.8804L13.4228 17.8804L11.9344 17.6944L11.9344 17.6944L13.4228 17.8804ZM13.4228 17.8805L13.4228 17.8804L11.9344 17.6944L11.9344 17.6944L13.4228 17.8805ZM13.3673 18.2699C13.3989 18.1395 13.4114 17.9967 13.4249 17.8621L11.9324 17.7128C11.924 17.7959 11.9191 17.8448 11.9145 17.8816C11.9102 17.9161 11.9083 17.9216 11.9096 17.9163L13.3673 18.2699ZM11.9079 19.5906C12.6193 19.4916 13.198 18.9679 13.3673 18.2699L11.9096 17.9163C11.8854 18.016 11.8027 18.0908 11.7011 18.105L11.9079 19.5906ZM11.4965 19.6074C11.6317 19.6074 11.7751 19.6091 11.9079 19.5906L11.7011 18.105C11.7065 18.1042 11.7009 18.1055 11.6662 18.1064C11.6291 18.1073 11.5799 18.1074 11.4965 18.1074V19.6074ZM10.5038 19.6074H11.4965V18.1074H10.5038V19.6074ZM10.0926 19.5907C10.2254 19.6091 10.3687 19.6074 10.5038 19.6074V18.1074C10.4205 18.1074 10.3713 18.1073 10.3342 18.1064C10.2995 18.1055 10.2939 18.1042 10.2993 18.105L10.0926 19.5907ZM8.63306 18.2698C8.80236 18.9679 9.38111 19.4917 10.0926 19.5907L10.2993 18.105C10.1977 18.0908 10.115 18.016 10.0908 17.9163L8.63306 18.2698ZM8.57553 17.8622C8.58898 17.9967 8.60147 18.1395 8.63306 18.2698L10.0908 17.9163C10.0921 17.9216 10.0902 17.9161 10.0859 17.8817C10.0813 17.8448 10.0764 17.796 10.0681 17.713L8.57553 17.8622ZM8.57371 17.841L8.57371 17.841L10.0699 17.7342L10.0699 17.7342L8.57371 17.841ZM8.57759 17.8806L8.5776 17.8806L10.066 17.6946L10.066 17.6946L8.57759 17.8806ZM8.53057 17.4641C8.52567 17.4484 8.53053 17.4575 8.5405 17.5345C8.55004 17.6082 8.56008 17.7077 8.57553 17.8622L10.0681 17.713C10.0428 17.4604 10.0218 17.2076 9.96256 17.0175L8.53057 17.4641ZM8.17578 17.3171C8.31399 17.2446 8.48411 17.3151 8.53057 17.4641L9.96256 17.0175C9.6373 15.9746 8.44647 15.4813 7.47899 15.9888L8.17578 17.3171ZM7.86251 17.5668C7.98266 17.4685 8.06015 17.4052 8.11899 17.3599C8.1805 17.3125 8.19037 17.3095 8.17578 17.3171L7.47898 15.9888C7.30266 16.0813 7.10904 16.2452 6.91266 16.4059L7.86251 17.5668ZM7.88144 17.5508L7.88146 17.5508L6.89371 16.4219L6.89368 16.422L7.88144 17.5508ZM7.53375 17.8143C7.64818 17.7445 7.75792 17.6524 7.86249 17.5669L6.91264 16.4059C6.84812 16.4587 6.81009 16.4897 6.78081 16.5125C6.75341 16.5338 6.74825 16.5364 6.75289 16.5335L7.53375 17.8143ZM5.56759 17.7162C6.14072 18.1494 6.92036 18.1882 7.53375 17.8143L6.75289 16.5335C6.66526 16.587 6.55388 16.5814 6.47201 16.5195L5.56759 17.7162ZM5.26508 17.4373C5.36063 17.5328 5.46066 17.6354 5.56759 17.7162L6.47201 16.5195C6.47634 16.5228 6.47146 16.5198 6.44632 16.4958C6.41945 16.4703 6.38469 16.4356 6.32575 16.3766L5.26508 17.4373ZM5.28669 17.4581L5.2867 17.4581L6.30412 16.3559L6.30411 16.3558L5.28669 17.4581ZM4.56303 16.7352L5.26507 17.4373L6.32573 16.3766L5.62369 15.6746L4.56303 16.7352ZM4.57933 16.7511L4.57934 16.7511L5.60739 15.6588L5.60738 15.6588L4.57933 16.7511ZM4.28417 16.4328C4.36497 16.5397 4.46749 16.6397 4.56302 16.7352L5.62368 15.6746C5.56475 15.6156 5.53007 15.5809 5.5045 15.554C5.48057 15.5289 5.47754 15.524 5.48081 15.5283L4.28417 16.4328ZM4.1861 14.4666C3.81208 15.08 3.85097 15.8596 4.28417 16.4328L5.48081 15.5283C5.41893 15.4465 5.41337 15.3351 5.46681 15.2474L4.1861 14.4666ZM4.43349 14.1378C4.34793 14.2424 4.25587 14.3521 4.1861 14.4665L5.4668 15.2474C5.46398 15.2521 5.4665 15.2469 5.48782 15.2195C5.51059 15.1902 5.54164 15.1522 5.59442 15.0877L4.43349 14.1378ZM4.68314 13.8246C4.6908 13.81 4.6878 13.8199 4.6404 13.8814C4.59506 13.9402 4.53177 14.0177 4.43349 14.1378L5.59442 15.0877C5.75507 14.8913 5.91898 14.6978 6.01146 14.5215L4.68314 13.8246ZM4.53618 13.4698C4.68518 13.5163 4.75565 13.6864 4.68314 13.8246L6.01146 14.5215C6.51902 13.554 6.02573 12.3631 4.9827 12.0378L4.53618 13.4698ZM4.13814 13.4249C4.29259 13.4403 4.39214 13.4504 4.4658 13.4599C4.54281 13.4699 4.5519 13.4747 4.53618 13.4698L4.9827 12.0378C4.79265 11.9786 4.53985 11.9576 4.2874 11.9323L4.13814 13.4249ZM3.7307 13.3674C3.86096 13.399 4.00368 13.4114 4.13814 13.4249L4.28739 11.9323C4.20443 11.924 4.15558 11.9191 4.11876 11.9145C4.08431 11.9102 4.07888 11.9083 4.08416 11.9096L3.7307 13.3674ZM2.40975 11.9077C2.50872 12.6193 3.03252 13.1981 3.73071 13.3674L4.08416 11.9096C3.98442 11.8854 3.90959 11.8027 3.89545 11.7011L2.40975 11.9077ZM2.39307 11.4966C2.39307 11.6317 2.39129 11.775 2.40975 11.9077L3.89545 11.7011C3.8962 11.7065 3.89489 11.7009 3.89403 11.6662C3.89312 11.6291 3.89307 11.58 3.89307 11.4966L2.39307 11.4966ZM2.39307 10.5039L2.39307 11.4966L3.89307 11.4966L3.89307 10.5039L2.39307 10.5039ZM2.40977 10.0925C2.39129 10.2254 2.39307 10.3687 2.39307 10.5039L3.89307 10.5039C3.89307 10.4205 3.89312 10.3714 3.89403 10.3342C3.89489 10.2995 3.8962 10.2939 3.89545 10.2993L2.40977 10.0925ZM3.73057 8.63308C3.0325 8.80239 2.50879 9.38109 2.40977 10.0925L3.89545 10.2993C3.9096 10.1977 3.98441 10.115 4.08414 10.0908L3.73057 8.63308ZM4.13823 8.57552C4.00369 8.58898 3.8609 8.60147 3.73057 8.63308L4.08414 10.0908C4.07886 10.0921 4.0843 10.0902 4.11876 10.0859C4.1556 10.0813 4.20448 10.0764 4.28748 10.0681L4.13823 8.57552ZM4.53652 8.53055C4.55226 8.52564 4.54316 8.5305 4.4661 8.54048C4.39239 8.55003 4.29277 8.56007 4.13823 8.57552L4.28748 10.0681C4.54011 10.0428 4.79307 10.0218 4.98325 9.96248L4.53652 8.53055ZM4.68347 8.17579C4.75594 8.31398 4.68549 8.48407 4.53652 8.53055L4.98325 9.96248C6.02603 9.63716 6.5192 8.44654 6.01189 7.47914L4.68347 8.17579ZM4.43355 7.86224C4.53193 7.98249 4.5953 8.06005 4.64068 8.11894C4.68814 8.18052 4.69113 8.19039 4.68347 8.17579L6.01189 7.47914C5.91936 7.30271 5.7553 7.10894 5.59448 6.91238L4.43355 7.86224ZM4.41401 7.83731L4.41402 7.83731L5.61402 6.93731L5.61401 6.93731L4.41401 7.83731ZM4.45654 7.88902L4.45654 7.88903L5.57148 6.88558L5.57148 6.88558L4.45654 7.88902ZM4.1858 7.53303C4.25564 7.64761 4.34785 7.7575 4.43354 7.86223L5.59448 6.91237C5.54161 6.84776 5.51051 6.80966 5.4877 6.78034C5.46635 6.75289 5.46382 6.74772 5.46665 6.75237L4.1858 7.53303ZM4.28384 5.56732C3.85089 6.14036 3.81202 6.91975 4.1858 7.53303L5.46665 6.75237C5.41325 6.66476 5.41881 6.55342 5.48066 6.47156L4.28384 5.56732ZM4.56306 5.26445C4.4674 5.36011 4.36474 5.46026 4.28384 5.56732L5.48066 6.47155C5.47738 6.4759 5.48041 6.471 5.50437 6.44583C5.52998 6.41893 5.5647 6.38413 5.62372 6.32511L4.56306 5.26445ZM4.56307 5.26445L4.56306 5.26445L5.62372 6.32511L5.62373 6.32511L4.56307 5.26445ZM5.26489 4.56262L4.56307 5.26445L5.62373 6.32511L6.32555 5.62328L5.26489 4.56262ZM5.56754 4.28359C5.46056 4.36444 5.36049 4.46703 5.26489 4.56262L6.32555 5.62328C6.38453 5.5643 6.4193 5.52961 6.44618 5.50401C6.47134 5.48007 6.47623 5.47704 6.47189 5.48032L5.56754 4.28359ZM7.53353 4.18554C6.92019 3.81163 6.14064 3.85051 5.56754 4.28359L6.47189 5.48032C6.55376 5.41845 6.66513 5.41289 6.75275 5.46631L7.53353 4.18554ZM7.86253 4.43314C7.75786 4.3475 7.64803 4.25534 7.53353 4.18554L6.75275 5.46631C6.7481 5.46347 6.75326 5.466 6.7807 5.48735C6.81002 5.51015 6.84809 5.54123 6.91267 5.59408L7.86253 4.43314ZM8.17579 4.68284C8.19039 4.6905 8.18053 4.68751 8.119 4.64009C8.06016 4.59474 7.98267 4.53143 7.86253 4.43314L6.91268 5.59408C7.10905 5.75475 7.30263 5.91864 7.47884 6.0111L8.17579 4.68284ZM8.53063 4.53587C8.48417 4.68489 8.31402 4.75537 8.17579 4.68284L7.47884 6.0111C8.44641 6.5188 9.63748 6.02544 9.96266 4.98226L8.53063 4.53587ZM8.57554 4.13803C8.56011 4.2924 8.55008 4.3919 8.54055 4.46552C8.53058 4.5425 8.52573 4.55158 8.53063 4.53587L9.96266 4.98227C10.0219 4.79229 10.0429 4.53962 10.0681 4.28729L8.57554 4.13803ZM8.57696 4.12501L8.57696 4.12503L10.0667 4.30029L10.0667 4.30028L8.57696 4.12501ZM8.63301 3.73085C8.60146 3.86102 8.58898 4.00364 8.57554 4.13802L10.0681 4.28727C10.0764 4.20437 10.0813 4.15555 10.0859 4.11876C10.0902 4.08433 10.0921 4.0789 10.0908 4.08417L8.63301 3.73085ZM10.0928 2.40973C9.38115 2.50866 8.80226 3.03255 8.63301 3.73084L10.0908 4.08418C10.115 3.98442 10.1977 3.90958 10.2993 3.89545L10.0928 2.40973ZM10.5037 2.39307C10.3687 2.39307 10.2255 2.39129 10.0928 2.40973L10.2993 3.89545C10.294 3.8962 10.2996 3.89488 10.3342 3.89403C10.3713 3.89312 10.4204 3.89307 10.5037 3.89307V2.39307ZM11.4966 2.39307H10.5037V3.89307H11.4966V2.39307ZM11.9077 2.40975C11.775 2.39129 11.6317 2.39307 11.4966 2.39307V3.89307C11.58 3.89307 11.6291 3.89312 11.6662 3.89403C11.7009 3.89489 11.7065 3.8962 11.7011 3.89545L11.9077 2.40975ZM13.3674 3.73072C13.1981 3.03252 12.6193 2.50872 11.9077 2.40975L11.7011 3.89545C11.8027 3.90959 11.8854 3.98442 11.9096 4.08416L13.3674 3.73072ZM13.4249 4.1381C13.4114 4.00365 13.399 3.86096 13.3674 3.73071L11.9096 4.08416C11.9083 4.07888 11.9102 4.08432 11.9145 4.11876C11.9191 4.15556 11.924 4.2044 11.9323 4.28734L13.4249 4.1381ZM13.3931 11.0002C13.3931 12.3217 12.3217 13.3931 11.0002 13.3931V14.8931C13.1502 14.8931 14.8931 13.1502 14.8931 11.0002H13.3931ZM11.0002 8.60735C12.3217 8.60735 13.3931 9.67867 13.3931 11.0002H14.8931C14.8931 8.85024 13.1502 7.10735 11.0002 7.10735V8.60735ZM8.60735 11.0002C8.60735 9.67867 9.67867 8.60735 11.0002 8.60735V7.10735C8.85024 7.10735 7.10735 8.85024 7.10735 11.0002H8.60735ZM11.0002 13.3931C9.67867 13.3931 8.60735 12.3217 8.60735 11.0002H7.10735C7.10735 13.1502 8.85024 14.8931 11.0002 14.8931V13.3931Z" fill="#377D87"/>
41 </symbol>
42
34 <symbol id="cross" viewBox="0 0 20 19" fill="none"> 43 <symbol id="cross" viewBox="0 0 20 19" fill="none">
35 <path d="M1.99997 17.9199L18.5566 2" stroke="currentColor" stroke-width="2.16" stroke-linecap="round" stroke-linejoin="round"/> 44 <path d="M1.99997 17.9199L18.5566 2" stroke="currentColor" stroke-width="2.16" stroke-linecap="round" stroke-linejoin="round"/>
36 <path d="M1.99997 2.00017L18.5566 17.92" stroke="currentColor" stroke-width="2.16" stroke-linecap="round" stroke-linejoin="round"/> 45 <path d="M1.99997 2.00017L18.5566 17.92" stroke="currentColor" stroke-width="2.16" stroke-linecap="round" stroke-linejoin="round"/>
37 </symbol> 46 </symbol>
38 47
39 <symbol id="cross-bold" width="10" height="10" viewBox="0 0 10 10" fill="none"> 48 <symbol id="cross-bold" width="10" height="10" viewBox="0 0 10 10" fill="none">
40 <path d="M8.27299 1.72729L1.72754 8.27275" stroke="currentColor" stroke-width="2" stroke-linecap="round"/> 49 <path d="M8.27299 1.72729L1.72754 8.27275" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
41 <path d="M1.72798 1.72729L8.27344 8.27275" stroke="currentColor" stroke-width="2" stroke-linecap="round"/> 50 <path d="M1.72798 1.72729L8.27344 8.27275" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
42 </symbol> 51 </symbol>
43 52
44 <symbol id="ring" viewBox="0 0 16 20" fill="none"> 53 <symbol id="ring" viewBox="0 0 16 20" fill="none">
45 <path d="M7.99999 20C9.09999 20 9.99999 19.1 9.99999 18H5.99999C5.99999 19.1 6.88999 20 7.99999 20ZM14 14V9C14 5.93 12.36 3.36 9.49999 2.68V2C9.49999 1.17 8.82999 0.5 7.99999 0.5C7.16999 0.5 6.49999 1.17 6.49999 2V2.68C3.62999 3.36 1.99999 5.92 1.99999 9V14L0.70999 15.29C0.0799904 15.92 0.51999 17 1.40999 17H14.58C15.47 17 15.92 15.92 15.29 15.29L14 14Z" fill="currentColor"/> 54 <path d="M7.99999 20C9.09999 20 9.99999 19.1 9.99999 18H5.99999C5.99999 19.1 6.88999 20 7.99999 20ZM14 14V9C14 5.93 12.36 3.36 9.49999 2.68V2C9.49999 1.17 8.82999 0.5 7.99999 0.5C7.16999 0.5 6.49999 1.17 6.49999 2V2.68C3.62999 3.36 1.99999 5.92 1.99999 9V14L0.70999 15.29C0.0799904 15.92 0.51999 17 1.40999 17H14.58C15.47 17 15.92 15.92 15.29 15.29L14 14Z" fill="currentColor"/>
46 </symbol> 55 </symbol>
47 56
48 <symbol id="arrow" viewBox="0 0 17 31" fill="none"> 57 <symbol id="arrow" viewBox="0 0 17 31" fill="none">
49 <path d="M1.5 2L15 15.5L1.5 29" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> 58 <path d="M1.5 2L15 15.5L1.5 29" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
50 </symbol> 59 </symbol>
51 60
52 <symbol id="arrow-top" viewBox="0 0 13 7" fill="none"> 61 <symbol id="arrow-top" viewBox="0 0 13 7" fill="none">
53 <path d="M12 6L6.5 1L1 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 62 <path d="M12 6L6.5 1L1 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
54 </symbol> 63 </symbol>
55 64
56 <symbol id="arrow-bold" viewBox="0 0 6 10" fill="none"> 65 <symbol id="arrow-bold" viewBox="0 0 6 10" fill="none">
57 <path d="M1 1L5 5L1 9" stroke="currentColor" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/> 66 <path d="M1 1L5 5L1 9" stroke="currentColor" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
58 </symbol> 67 </symbol>
59 68
60 <symbol id="vk" viewBox="0 0 16 10" fill="none"> 69 <symbol id="vk" viewBox="0 0 16 10" fill="none">
61 <path fill-rule="evenodd" clip-rule="evenodd" d="M2.35099 0.00135622H0.600254C0.100042 0.00135622 0 0.241458 0 0.501568C0 0.961762 0.600254 3.26274 2.76117 6.30402C4.21178 8.3749 6.25265 9.50538 8.10343 9.50538C9.2139 9.50538 9.35396 9.25527 9.35396 8.82509V7.25442C9.35396 6.75421 9.454 6.65417 9.81415 6.65417C10.0743 6.65417 10.5144 6.78422 11.5549 7.78465C12.7454 8.97515 12.9355 9.50538 13.6058 9.50538H15.3565C15.8567 9.50538 16.1068 9.25527 15.9568 8.76506C15.8067 8.26485 15.2364 7.56456 14.4861 6.7142C14.086 6.22399 13.4657 5.71377 13.2856 5.45366C13.0255 5.11352 13.0855 4.96346 13.2856 4.67333C13.2856 4.67333 15.4165 1.67206 15.6366 0.641627C15.7467 0.271471 15.6366 0.00135622 15.1064 0.00135622H13.3556C13.1919 -0.0084346 13.0294 0.0349857 12.8924 0.125136C12.7554 0.215287 12.6511 0.347334 12.5953 0.501568C12.5953 0.501568 11.6949 2.66248 10.4444 4.07308C10.0342 4.48325 9.84416 4.61331 9.62407 4.61331C9.52403 4.61331 9.35396 4.48325 9.35396 4.1131V0.641627C9.35396 0.201441 9.2239 0.00135622 8.85375 0.00135622H6.10258C5.82246 0.00135622 5.65239 0.201441 5.65239 0.401526C5.65239 0.821703 6.29266 0.921746 6.35269 2.10225V4.68334C6.35269 5.25358 6.25265 5.35362 6.03255 5.35362C5.4323 5.35362 3.99169 3.1727 3.13132 0.681644C2.97126 0.201441 2.80118 0.00135622 2.35099 0.00135622Z" fill="currentColor"/> 70 <path fill-rule="evenodd" clip-rule="evenodd" d="M2.35099 0.00135622H0.600254C0.100042 0.00135622 0 0.241458 0 0.501568C0 0.961762 0.600254 3.26274 2.76117 6.30402C4.21178 8.3749 6.25265 9.50538 8.10343 9.50538C9.2139 9.50538 9.35396 9.25527 9.35396 8.82509V7.25442C9.35396 6.75421 9.454 6.65417 9.81415 6.65417C10.0743 6.65417 10.5144 6.78422 11.5549 7.78465C12.7454 8.97515 12.9355 9.50538 13.6058 9.50538H15.3565C15.8567 9.50538 16.1068 9.25527 15.9568 8.76506C15.8067 8.26485 15.2364 7.56456 14.4861 6.7142C14.086 6.22399 13.4657 5.71377 13.2856 5.45366C13.0255 5.11352 13.0855 4.96346 13.2856 4.67333C13.2856 4.67333 15.4165 1.67206 15.6366 0.641627C15.7467 0.271471 15.6366 0.00135622 15.1064 0.00135622H13.3556C13.1919 -0.0084346 13.0294 0.0349857 12.8924 0.125136C12.7554 0.215287 12.6511 0.347334 12.5953 0.501568C12.5953 0.501568 11.6949 2.66248 10.4444 4.07308C10.0342 4.48325 9.84416 4.61331 9.62407 4.61331C9.52403 4.61331 9.35396 4.48325 9.35396 4.1131V0.641627C9.35396 0.201441 9.2239 0.00135622 8.85375 0.00135622H6.10258C5.82246 0.00135622 5.65239 0.201441 5.65239 0.401526C5.65239 0.821703 6.29266 0.921746 6.35269 2.10225V4.68334C6.35269 5.25358 6.25265 5.35362 6.03255 5.35362C5.4323 5.35362 3.99169 3.1727 3.13132 0.681644C2.97126 0.201441 2.80118 0.00135622 2.35099 0.00135622Z" fill="currentColor"/>
62 </symbol> 71 </symbol>
63 72
64 <symbol id="tg" viewBox="0 0 16 14" fill="none"> 73 <symbol id="tg" viewBox="0 0 16 14" fill="none">
65 <path d="M15.7901 0.149541C15.5648 -0.0380885 15.2008 -0.0551456 14.5769 0.132484C14.1436 0.268942 10.2959 1.70175 6.89889 3.08338C3.84848 4.32856 1.37003 5.42022 1.07539 5.55668C0.746083 5.65902 0.0354772 5.96605 0.000813508 6.44365C-0.0165183 6.75068 0.243459 7.0236 0.746083 7.24534C1.28337 7.51826 3.65783 8.30289 4.16046 8.4564C4.33377 9.03635 5.35635 12.4307 5.40835 12.6354C5.47768 12.9425 5.68566 13.113 5.78965 13.1813C5.80698 13.1983 5.84164 13.2324 5.87631 13.2495C5.9283 13.2836 5.99763 13.3007 6.08429 13.3007C6.20561 13.3007 6.34427 13.2495 6.46559 13.1642C7.10687 12.6525 8.21611 11.5096 8.52808 11.1856C9.8973 12.2431 11.3878 13.4201 11.5265 13.5565L11.5438 13.5736C11.8731 13.8465 12.2198 14 12.5317 14C12.6357 14 12.7397 13.9829 12.8437 13.9488C13.2077 13.8294 13.4677 13.4883 13.5543 13.0277C13.5543 13.0107 13.5716 12.9425 13.6063 12.8231C14.1956 10.2986 14.6636 8.08115 15.0449 6.22191C15.4088 4.39679 15.7035 2.60578 15.8768 1.65058C15.9114 1.41177 15.9461 1.22415 15.9634 1.10475C16.0154 0.763601 16.0501 0.371285 15.7901 0.149541ZM4.52442 8.40523L12.7917 3.01515C12.809 2.9981 12.8437 2.98104 12.861 2.96398C12.8784 2.96398 12.8784 2.94692 12.8957 2.94692C12.913 2.94692 12.913 2.94692 12.9304 2.92987C12.913 2.94692 12.8957 2.9981 12.861 3.03221L10.7639 4.95968C9.30801 6.27308 7.40151 7.99586 6.13629 9.12164C6.13629 9.12164 6.13629 9.12164 6.13629 9.13869L6.11895 9.15575C6.11895 9.15575 6.11895 9.17281 6.10162 9.17281C6.10162 9.18987 6.10162 9.18987 6.08429 9.20692V9.22398C6.08429 9.22398 6.08429 9.22398 6.08429 9.24104C5.99763 10.1962 5.84164 11.8337 5.77232 12.5672C5.77232 12.5672 5.77232 12.5672 5.77232 12.5501C5.70299 12.3454 4.73241 9.08752 4.52442 8.40523Z" fill="currentColor"/> 74 <path d="M15.7901 0.149541C15.5648 -0.0380885 15.2008 -0.0551456 14.5769 0.132484C14.1436 0.268942 10.2959 1.70175 6.89889 3.08338C3.84848 4.32856 1.37003 5.42022 1.07539 5.55668C0.746083 5.65902 0.0354772 5.96605 0.000813508 6.44365C-0.0165183 6.75068 0.243459 7.0236 0.746083 7.24534C1.28337 7.51826 3.65783 8.30289 4.16046 8.4564C4.33377 9.03635 5.35635 12.4307 5.40835 12.6354C5.47768 12.9425 5.68566 13.113 5.78965 13.1813C5.80698 13.1983 5.84164 13.2324 5.87631 13.2495C5.9283 13.2836 5.99763 13.3007 6.08429 13.3007C6.20561 13.3007 6.34427 13.2495 6.46559 13.1642C7.10687 12.6525 8.21611 11.5096 8.52808 11.1856C9.8973 12.2431 11.3878 13.4201 11.5265 13.5565L11.5438 13.5736C11.8731 13.8465 12.2198 14 12.5317 14C12.6357 14 12.7397 13.9829 12.8437 13.9488C13.2077 13.8294 13.4677 13.4883 13.5543 13.0277C13.5543 13.0107 13.5716 12.9425 13.6063 12.8231C14.1956 10.2986 14.6636 8.08115 15.0449 6.22191C15.4088 4.39679 15.7035 2.60578 15.8768 1.65058C15.9114 1.41177 15.9461 1.22415 15.9634 1.10475C16.0154 0.763601 16.0501 0.371285 15.7901 0.149541ZM4.52442 8.40523L12.7917 3.01515C12.809 2.9981 12.8437 2.98104 12.861 2.96398C12.8784 2.96398 12.8784 2.94692 12.8957 2.94692C12.913 2.94692 12.913 2.94692 12.9304 2.92987C12.913 2.94692 12.8957 2.9981 12.861 3.03221L10.7639 4.95968C9.30801 6.27308 7.40151 7.99586 6.13629 9.12164C6.13629 9.12164 6.13629 9.12164 6.13629 9.13869L6.11895 9.15575C6.11895 9.15575 6.11895 9.17281 6.10162 9.17281C6.10162 9.18987 6.10162 9.18987 6.08429 9.20692V9.22398C6.08429 9.22398 6.08429 9.22398 6.08429 9.24104C5.99763 10.1962 5.84164 11.8337 5.77232 12.5672C5.77232 12.5672 5.77232 12.5672 5.77232 12.5501C5.70299 12.3454 4.73241 9.08752 4.52442 8.40523Z" fill="currentColor"/>
66 </symbol> 75 </symbol>
67 76
68 <symbol id="nls" viewBox="0 0 24 31" fill="none"> 77 <symbol id="nls" viewBox="0 0 24 31" fill="none">
69 <path fill-rule="evenodd" clip-rule="evenodd" d="M20 31.001V26.001H24V31.001H20ZM23 27H21V30.001H23V27ZM19 14L23.985 14.018L24 24.001H19V14ZM20 23.001H23V15.003L20 15V23.001ZM13 0H24V12H13V0ZM15 10.001H22V2.001H15V10.001ZM17 15H13V23.001H16V20L15.015 19.987L15 19.001H17V24.001H12V14H17V15ZM8 31.001V26.001H9V30.001H11V26.001L11.998 26.003L12 31.001H8ZM9 2.001H2V12H0V0H11V12H9V2.001ZM0 29.004V26.001H3V27H1V28H3V31.001H0V30.004L2 30.001L1.992 29.004H0ZM4 24.001H0V14L1.015 14.018L1 23.001H4V24.001ZM5 14H10V24.001H5V14ZM6 23.001H9V15.003L6 15V23.001ZM7 27H6V31.001H5V27H4V26.001H7V27ZM15.999 27.004L17 27V30.001L15.999 29.984V27.004ZM16 27H14V30.001H16V31.001H13V26.001H16V27ZM19 31.001H18V26.001H19V31.001Z" fill="currentColor"/> 78 <path fill-rule="evenodd" clip-rule="evenodd" d="M20 31.001V26.001H24V31.001H20ZM23 27H21V30.001H23V27ZM19 14L23.985 14.018L24 24.001H19V14ZM20 23.001H23V15.003L20 15V23.001ZM13 0H24V12H13V0ZM15 10.001H22V2.001H15V10.001ZM17 15H13V23.001H16V20L15.015 19.987L15 19.001H17V24.001H12V14H17V15ZM8 31.001V26.001H9V30.001H11V26.001L11.998 26.003L12 31.001H8ZM9 2.001H2V12H0V0H11V12H9V2.001ZM0 29.004V26.001H3V27H1V28H3V31.001H0V30.004L2 30.001L1.992 29.004H0ZM4 24.001H0V14L1.015 14.018L1 23.001H4V24.001ZM5 14H10V24.001H5V14ZM6 23.001H9V15.003L6 15V23.001ZM7 27H6V31.001H5V27H4V26.001H7V27ZM15.999 27.004L17 27V30.001L15.999 29.984V27.004ZM16 27H14V30.001H16V31.001H13V26.001H16V27ZM19 31.001H18V26.001H19V31.001Z" fill="currentColor"/>
70 </symbol> 79 </symbol>
71 80
72 <symbol id="search" viewBox="0 0 20 21" fill="none"> 81 <symbol id="search" viewBox="0 0 20 21" fill="none">
73 <path d="M9.78643 18.0262C14.3372 18.0262 18.0263 14.3371 18.0263 9.7863C18.0263 5.23552 14.3372 1.54639 9.78643 1.54639C5.23565 1.54639 1.54651 5.23552 1.54651 9.7863C1.54651 14.3371 5.23565 18.0262 9.78643 18.0262Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 82 <path d="M9.78643 18.0262C14.3372 18.0262 18.0263 14.3371 18.0263 9.7863C18.0263 5.23552 14.3372 1.54639 9.78643 1.54639C5.23565 1.54639 1.54651 5.23552 1.54651 9.7863C1.54651 14.3371 5.23565 18.0262 9.78643 18.0262Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
74 <path d="M15.5165 15.9443L18.7468 19.1664" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 83 <path d="M15.5165 15.9443L18.7468 19.1664" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
75 </symbol> 84 </symbol>
76 85
77 <symbol id="dots" viewBox="0 0 15 3" fill="none"> 86 <symbol id="dots" viewBox="0 0 15 3" fill="none">
78 <circle cx="1.5" cy="1.5" r="1.5" fill="currentColor"/> 87 <circle cx="1.5" cy="1.5" r="1.5" fill="currentColor"/>
79 <circle cx="7.5" cy="1.5" r="1.5" fill="currentColor"/> 88 <circle cx="7.5" cy="1.5" r="1.5" fill="currentColor"/>
80 <circle cx="13.5" cy="1.5" r="1.5" fill="currentColor"/> 89 <circle cx="13.5" cy="1.5" r="1.5" fill="currentColor"/>
81 </symbol> 90 </symbol>
82 91
83 <symbol id="grid-1" viewBox="0 0 26 17" fill="none"> 92 <symbol id="grid-1" viewBox="0 0 26 17" fill="none">
84 <rect width="3" height="3" rx="1.5" fill="currentColor"/> 93 <rect width="3" height="3" rx="1.5" fill="currentColor"/>
85 <rect y="7" width="3" height="3" rx="1.5" fill="currentColor"/> 94 <rect y="7" width="3" height="3" rx="1.5" fill="currentColor"/>
86 <rect y="14" width="3" height="3" rx="1.5" fill="currentColor"/> 95 <rect y="14" width="3" height="3" rx="1.5" fill="currentColor"/>
87 <rect x="6" width="20" height="3" rx="1.5" fill="currentColor"/> 96 <rect x="6" width="20" height="3" rx="1.5" fill="currentColor"/>
88 <rect x="6" y="7" width="20" height="3" rx="1.5" fill="currentColor"/> 97 <rect x="6" y="7" width="20" height="3" rx="1.5" fill="currentColor"/>
89 <rect x="6" y="14" width="20" height="3" rx="1.5" fill="currentColor"/> 98 <rect x="6" y="14" width="20" height="3" rx="1.5" fill="currentColor"/>
90 </symbol> 99 </symbol>
91 100
92 <symbol id="grid-2" viewBox="0 0 24 24" fill="none"> 101 <symbol id="grid-2" viewBox="0 0 24 24" fill="none">
93 <rect width="10" height="10" rx="2" fill="currentColor"/> 102 <rect width="10" height="10" rx="2" fill="currentColor"/>
94 <rect y="14" width="10" height="10" rx="2" fill="currentColor"/> 103 <rect y="14" width="10" height="10" rx="2" fill="currentColor"/>
95 <rect x="14" y="14" width="10" height="10" rx="2" fill="currentColor"/> 104 <rect x="14" y="14" width="10" height="10" rx="2" fill="currentColor"/>
96 <rect x="14" width="10" height="10" rx="2" fill="currentColor"/> 105 <rect x="14" width="10" height="10" rx="2" fill="currentColor"/>
97 </symbol> 106 </symbol>
98 107
99 <symbol id="v" viewBox="0 0 11 10" fill="none"> 108 <symbol id="v" viewBox="0 0 11 10" fill="none">
100 <path d="M10.9413 1.9874L4.59278 9.90629C4.57107 9.93328 4.54433 9.95544 4.51418 9.97143C4.48403 9.98743 4.45109 9.99693 4.41732 9.99937C4.38355 10.0018 4.34966 9.99714 4.31767 9.98564C4.28568 9.97414 4.25626 9.95604 4.23116 9.93243L0.0832849 6.05246C0.05844 6.02922 0.0382996 6.00107 0.0240403 5.96965C0.00978097 5.93823 0.00168901 5.90417 0.000237368 5.86947C-0.00121428 5.83476 0.00400341 5.8001 0.0155856 5.76751C0.0271678 5.73492 0.0448823 5.70506 0.0676935 5.67967L1.42039 4.17442C1.46491 4.12489 1.52619 4.09527 1.59131 4.09181C1.65643 4.08834 1.7203 4.11131 1.76944 4.15586L4.08153 6.25192L9.29818 0.0887104C9.32209 0.0604629 9.35159 0.037915 9.38466 0.0226078C9.41773 0.00730048 9.45358 -0.000405497 9.48978 1.64367e-05C9.52597 0.00043837 9.56166 0.00897821 9.59438 0.0250525C9.62711 0.0411268 9.65612 0.0643567 9.67942 0.0931546L10.9413 1.65173C10.9792 1.69878 11 1.7582 11 1.81956C11 1.88093 10.9792 1.94034 10.9413 1.9874Z" fill="currentColor"/> 109 <path d="M10.9413 1.9874L4.59278 9.90629C4.57107 9.93328 4.54433 9.95544 4.51418 9.97143C4.48403 9.98743 4.45109 9.99693 4.41732 9.99937C4.38355 10.0018 4.34966 9.99714 4.31767 9.98564C4.28568 9.97414 4.25626 9.95604 4.23116 9.93243L0.0832849 6.05246C0.05844 6.02922 0.0382996 6.00107 0.0240403 5.96965C0.00978097 5.93823 0.00168901 5.90417 0.000237368 5.86947C-0.00121428 5.83476 0.00400341 5.8001 0.0155856 5.76751C0.0271678 5.73492 0.0448823 5.70506 0.0676935 5.67967L1.42039 4.17442C1.46491 4.12489 1.52619 4.09527 1.59131 4.09181C1.65643 4.08834 1.7203 4.11131 1.76944 4.15586L4.08153 6.25192L9.29818 0.0887104C9.32209 0.0604629 9.35159 0.037915 9.38466 0.0226078C9.41773 0.00730048 9.45358 -0.000405497 9.48978 1.64367e-05C9.52597 0.00043837 9.56166 0.00897821 9.59438 0.0250525C9.62711 0.0411268 9.65612 0.0643567 9.67942 0.0931546L10.9413 1.65173C10.9792 1.69878 11 1.7582 11 1.81956C11 1.88093 10.9792 1.94034 10.9413 1.9874Z" fill="currentColor"/>
101 </symbol> 110 </symbol>
102 111
103 <symbol id="badge" viewBox="0 0 21 22" fill="none"> 112 <symbol id="badge" viewBox="0 0 21 22" fill="none">
104 <path d="M10.5 1.4165L13.017 3.25267L16.1331 3.24692L17.0899 6.212L19.6142 8.03859L18.6458 10.9998L19.6142 13.9611L17.0899 15.7877L16.1331 18.7528L13.017 18.747L10.5 20.5832L7.98291 18.747L4.86689 18.7528L3.90999 15.7877L1.38574 13.9611L2.35414 10.9998L1.38574 8.03859L3.90999 6.212L4.86689 3.24692L7.98291 3.25267L10.5 1.4165Z" stroke="currentColor" stroke-width="1.91667" stroke-linecap="round" stroke-linejoin="round"/> 113 <path d="M10.5 1.4165L13.017 3.25267L16.1331 3.24692L17.0899 6.212L19.6142 8.03859L18.6458 10.9998L19.6142 13.9611L17.0899 15.7877L16.1331 18.7528L13.017 18.747L10.5 20.5832L7.98291 18.747L4.86689 18.7528L3.90999 15.7877L1.38574 13.9611L2.35414 10.9998L1.38574 8.03859L3.90999 6.212L4.86689 3.24692L7.98291 3.25267L10.5 1.4165Z" stroke="currentColor" stroke-width="1.91667" stroke-linecap="round" stroke-linejoin="round"/>
105 <path d="M7.14581 10.9998L9.54165 13.3957L14.3333 8.604" stroke="currentColor" stroke-width="1.91667" stroke-linecap="round" stroke-linejoin="round"/> 114 <path d="M7.14581 10.9998L9.54165 13.3957L14.3333 8.604" stroke="currentColor" stroke-width="1.91667" stroke-linecap="round" stroke-linejoin="round"/>
106 </symbol> 115 </symbol>
107 116
108 <symbol id="heart" viewBox="0 0 14 12" fill="none"> 117 <symbol id="heart" viewBox="0 0 14 12" fill="none">
109 <path d="M6.86423 11.5911L6.86426 11.5911L6.86053 11.5875L2.0391 6.93605L2.02947 6.92676L2.01902 6.9184C1.98199 6.88877 1.92127 6.8323 1.83317 6.74168C1.75377 6.66001 1.61854 6.50118 1.42276 6.25646C1.23475 6.02144 1.06706 5.78091 0.919454 5.5349C0.778417 5.29984 0.648721 5.00866 0.532576 4.65775C0.420089 4.3179 0.36561 3.99308 0.36561 3.68211C0.36561 2.60679 0.674077 1.80258 1.25995 1.23054C1.84707 0.657295 2.67125 0.354502 3.77049 0.354502C4.056 0.354502 4.35103 0.403935 4.65669 0.505822C4.96575 0.608841 5.25212 0.747383 5.5166 0.92132L5.67236 0.684489L5.5166 0.921321C5.79707 1.10578 6.03543 1.27694 6.2328 1.43483L6.40679 1.21735L6.2328 1.43483C6.43058 1.59306 6.61838 1.7611 6.79625 1.93897L7.00023 2.14294L7.2042 1.93897C7.38207 1.7611 7.56987 1.59306 7.76765 1.43483C7.96502 1.27694 8.20338 1.10578 8.48385 0.92132C8.74833 0.747383 9.0347 0.608841 9.34376 0.505822C9.64942 0.403935 9.94445 0.354502 10.23 0.354502C11.3292 0.354502 12.1534 0.657295 12.7405 1.23054C13.3264 1.80258 13.6348 2.60679 13.6348 3.68211C13.6348 4.71404 13.1011 5.80331 11.9518 6.95322L7.1401 11.5873L7.14006 11.5873L7.13622 11.5911C7.09888 11.6285 7.05948 11.6457 7.00023 11.6457C6.94097 11.6457 6.90157 11.6285 6.86423 11.5911Z" stroke="currentColor" fill="currentColor" stroke-width="0.576923"/> 118 <path d="M6.86423 11.5911L6.86426 11.5911L6.86053 11.5875L2.0391 6.93605L2.02947 6.92676L2.01902 6.9184C1.98199 6.88877 1.92127 6.8323 1.83317 6.74168C1.75377 6.66001 1.61854 6.50118 1.42276 6.25646C1.23475 6.02144 1.06706 5.78091 0.919454 5.5349C0.778417 5.29984 0.648721 5.00866 0.532576 4.65775C0.420089 4.3179 0.36561 3.99308 0.36561 3.68211C0.36561 2.60679 0.674077 1.80258 1.25995 1.23054C1.84707 0.657295 2.67125 0.354502 3.77049 0.354502C4.056 0.354502 4.35103 0.403935 4.65669 0.505822C4.96575 0.608841 5.25212 0.747383 5.5166 0.92132L5.67236 0.684489L5.5166 0.921321C5.79707 1.10578 6.03543 1.27694 6.2328 1.43483L6.40679 1.21735L6.2328 1.43483C6.43058 1.59306 6.61838 1.7611 6.79625 1.93897L7.00023 2.14294L7.2042 1.93897C7.38207 1.7611 7.56987 1.59306 7.76765 1.43483C7.96502 1.27694 8.20338 1.10578 8.48385 0.92132C8.74833 0.747383 9.0347 0.608841 9.34376 0.505822C9.64942 0.403935 9.94445 0.354502 10.23 0.354502C11.3292 0.354502 12.1534 0.657295 12.7405 1.23054C13.3264 1.80258 13.6348 2.60679 13.6348 3.68211C13.6348 4.71404 13.1011 5.80331 11.9518 6.95322L7.1401 11.5873L7.14006 11.5873L7.13622 11.5911C7.09888 11.6285 7.05948 11.6457 7.00023 11.6457C6.94097 11.6457 6.90157 11.6285 6.86423 11.5911Z" stroke="currentColor" fill="currentColor" stroke-width="0.576923"/>
110 </symbol> 119 </symbol>
111 120
112 <symbol id="chat" viewBox="0 0 22 22" fill="none"> 121 <symbol id="chat" viewBox="0 0 22 22" fill="none">
113 <path d="M17.7149 4.28242L17.7879 4.35583L17.8382 4.37596C19.3656 5.92588 20.3153 7.95414 20.5268 10.1219C20.7414 12.3231 20.1814 14.5302 18.9432 16.3627C17.705 18.1952 15.8663 19.5383 13.744 20.1604C11.6217 20.7826 9.3488 20.6447 7.31723 19.7707L7.31391 19.7693C7.03192 19.6504 6.7238 19.6071 6.41994 19.6436L6.40042 19.6459L6.38113 19.6498L2.14989 20.5H1.99963V20.4999L1.98689 20.5002C1.91942 20.5019 1.85229 20.4899 1.78956 20.465C1.72728 20.4403 1.67062 20.4033 1.62293 20.3562C1.56506 20.2977 1.52254 20.2258 1.49912 20.1469C1.47556 20.0675 1.4721 19.9834 1.48905 19.9023L1.48915 19.9019L2.36915 15.6719L2.37093 15.6633L2.37242 15.6547C2.42671 15.3385 2.38221 15.0134 2.24513 14.7236C1.37451 12.6943 1.23798 10.4249 1.8592 8.30568C2.48133 6.18338 3.82443 4.34463 5.65694 3.10645C7.48946 1.86826 9.69655 1.30823 11.8977 1.5229C14.0989 1.73758 16.1562 2.7135 17.7149 4.28242ZM1.87963 15.57L0.99963 19.8L1.78963 14.93C1.88552 15.1288 1.91698 15.3525 1.87963 15.57ZM6.47963 20.14C6.69716 20.1139 6.91775 20.1449 7.11963 20.23L6.47963 20.14ZM5.16628 12.2472C5.41295 12.412 5.70296 12.5 5.99963 12.5C6.39745 12.5 6.77899 12.342 7.06029 12.0607C7.34159 11.7794 7.49963 11.3978 7.49963 11C7.49963 10.7034 7.41166 10.4133 7.24683 10.1667C7.08201 9.91999 6.84774 9.72773 6.57366 9.6142C6.29957 9.50067 5.99797 9.47097 5.70699 9.52884C5.41602 9.58672 5.14875 9.72958 4.93897 9.93936C4.72919 10.1491 4.58633 10.4164 4.52845 10.7074C4.47057 10.9984 4.50028 11.3 4.61381 11.574C4.72734 11.8481 4.9196 12.0824 5.16628 12.2472ZM10.1663 12.2472C10.4129 12.412 10.703 12.5 10.9996 12.5C11.3975 12.5 11.779 12.342 12.0603 12.0607C12.3416 11.7794 12.4996 11.3978 12.4996 11C12.4996 10.7034 12.4117 10.4133 12.2468 10.1667C12.082 9.91999 11.8477 9.72773 11.5737 9.6142C11.2996 9.50067 10.998 9.47097 10.707 9.52884C10.416 9.58672 10.1487 9.72958 9.93897 9.93936C9.72919 10.1491 9.58633 10.4164 9.52845 10.7074C9.47057 10.9984 9.50028 11.3 9.61381 11.574C9.72734 11.8481 9.9196 12.0824 10.1663 12.2472ZM15.1663 12.2472C15.4129 12.412 15.703 12.5 15.9996 12.5C16.3975 12.5 16.779 12.342 17.0603 12.0607C17.3416 11.7794 17.4996 11.3978 17.4996 11C17.4996 10.7034 17.4117 10.4133 17.2468 10.1667C17.082 9.91999 16.8477 9.72773 16.5737 9.6142C16.2996 9.50067 15.998 9.47097 15.707 9.52884C15.416 9.58672 15.1487 9.72958 14.939 9.93936C14.7292 10.1491 14.5863 10.4164 14.5285 10.7074C14.4706 10.9984 14.5003 11.3 14.6138 11.574C14.7273 11.8481 14.9196 12.0824 15.1663 12.2472Z" stroke="currentColor"/> 122 <path d="M17.7149 4.28242L17.7879 4.35583L17.8382 4.37596C19.3656 5.92588 20.3153 7.95414 20.5268 10.1219C20.7414 12.3231 20.1814 14.5302 18.9432 16.3627C17.705 18.1952 15.8663 19.5383 13.744 20.1604C11.6217 20.7826 9.3488 20.6447 7.31723 19.7707L7.31391 19.7693C7.03192 19.6504 6.7238 19.6071 6.41994 19.6436L6.40042 19.6459L6.38113 19.6498L2.14989 20.5H1.99963V20.4999L1.98689 20.5002C1.91942 20.5019 1.85229 20.4899 1.78956 20.465C1.72728 20.4403 1.67062 20.4033 1.62293 20.3562C1.56506 20.2977 1.52254 20.2258 1.49912 20.1469C1.47556 20.0675 1.4721 19.9834 1.48905 19.9023L1.48915 19.9019L2.36915 15.6719L2.37093 15.6633L2.37242 15.6547C2.42671 15.3385 2.38221 15.0134 2.24513 14.7236C1.37451 12.6943 1.23798 10.4249 1.8592 8.30568C2.48133 6.18338 3.82443 4.34463 5.65694 3.10645C7.48946 1.86826 9.69655 1.30823 11.8977 1.5229C14.0989 1.73758 16.1562 2.7135 17.7149 4.28242ZM1.87963 15.57L0.99963 19.8L1.78963 14.93C1.88552 15.1288 1.91698 15.3525 1.87963 15.57ZM6.47963 20.14C6.69716 20.1139 6.91775 20.1449 7.11963 20.23L6.47963 20.14ZM5.16628 12.2472C5.41295 12.412 5.70296 12.5 5.99963 12.5C6.39745 12.5 6.77899 12.342 7.06029 12.0607C7.34159 11.7794 7.49963 11.3978 7.49963 11C7.49963 10.7034 7.41166 10.4133 7.24683 10.1667C7.08201 9.91999 6.84774 9.72773 6.57366 9.6142C6.29957 9.50067 5.99797 9.47097 5.70699 9.52884C5.41602 9.58672 5.14875 9.72958 4.93897 9.93936C4.72919 10.1491 4.58633 10.4164 4.52845 10.7074C4.47057 10.9984 4.50028 11.3 4.61381 11.574C4.72734 11.8481 4.9196 12.0824 5.16628 12.2472ZM10.1663 12.2472C10.4129 12.412 10.703 12.5 10.9996 12.5C11.3975 12.5 11.779 12.342 12.0603 12.0607C12.3416 11.7794 12.4996 11.3978 12.4996 11C12.4996 10.7034 12.4117 10.4133 12.2468 10.1667C12.082 9.91999 11.8477 9.72773 11.5737 9.6142C11.2996 9.50067 10.998 9.47097 10.707 9.52884C10.416 9.58672 10.1487 9.72958 9.93897 9.93936C9.72919 10.1491 9.58633 10.4164 9.52845 10.7074C9.47057 10.9984 9.50028 11.3 9.61381 11.574C9.72734 11.8481 9.9196 12.0824 10.1663 12.2472ZM15.1663 12.2472C15.4129 12.412 15.703 12.5 15.9996 12.5C16.3975 12.5 16.779 12.342 17.0603 12.0607C17.3416 11.7794 17.4996 11.3978 17.4996 11C17.4996 10.7034 17.4117 10.4133 17.2468 10.1667C17.082 9.91999 16.8477 9.72773 16.5737 9.6142C16.2996 9.50067 15.998 9.47097 15.707 9.52884C15.416 9.58672 15.1487 9.72958 14.939 9.93936C14.7292 10.1491 14.5863 10.4164 14.5285 10.7074C14.4706 10.9984 14.5003 11.3 14.6138 11.574C14.7273 11.8481 14.9196 12.0824 15.1663 12.2472Z" stroke="currentColor"/>
114 </symbol> 123 </symbol>
115 124
116 <symbol id="download" viewBox="0 0 12 12" fill="none"> 125 <symbol id="download" viewBox="0 0 12 12" fill="none">
117 <path d="M4.08018 5.00551L5.41602 6.34718V0.753011C5.41602 0.598301 5.47747 0.449928 5.58687 0.340532C5.69627 0.231136 5.84464 0.169678 5.99935 0.169678C6.15406 0.169678 6.30243 0.231136 6.41183 0.340532C6.52122 0.449928 6.58268 0.598301 6.58268 0.753011V6.34718L7.91852 5.00551C7.97274 4.95084 8.03726 4.90744 8.10835 4.87782C8.17943 4.84821 8.25568 4.83296 8.33268 4.83296C8.40969 4.83296 8.48594 4.84821 8.55702 4.87782C8.6281 4.90744 8.69262 4.95084 8.74685 5.00551C8.80152 5.05974 8.84492 5.12426 8.87454 5.19534C8.90415 5.26643 8.9194 5.34267 8.9194 5.41968C8.9194 5.49668 8.90415 5.57293 8.87454 5.64401C8.84492 5.7151 8.80152 5.77962 8.74685 5.83384L6.41352 8.16718C6.35804 8.22028 6.29262 8.26191 6.22102 8.28968C6.079 8.34802 5.9197 8.34802 5.77768 8.28968C5.70608 8.26191 5.64066 8.22028 5.58518 8.16718L3.25185 5.83384C3.19746 5.77945 3.15432 5.71489 3.12488 5.64382C3.09545 5.57276 3.0803 5.4966 3.0803 5.41968C3.0803 5.34276 3.09545 5.26659 3.12488 5.19553C3.15432 5.12447 3.19746 5.0599 3.25185 5.00551C3.30624 4.95112 3.37081 4.90798 3.44187 4.87854C3.51293 4.84911 3.5891 4.83396 3.66602 4.83396C3.74293 4.83396 3.8191 4.84911 3.89016 4.87854C3.96122 4.90798 4.02579 4.95112 4.08018 5.00551ZM11.2494 6.0001C11.0946 6.0001 10.9463 6.06156 10.8369 6.17096C10.7275 6.28035 10.666 6.42873 10.666 6.58344V10.0834C10.666 10.2381 10.6046 10.3865 10.4952 10.4959C10.3858 10.6053 10.2374 10.6668 10.0827 10.6668H1.91602C1.76131 10.6668 1.61293 10.6053 1.50354 10.4959C1.39414 10.3865 1.33268 10.2381 1.33268 10.0834V6.58344C1.33268 6.42873 1.27122 6.28035 1.16183 6.17096C1.05243 6.06156 0.904059 6.0001 0.749349 6.0001C0.594639 6.0001 0.446266 6.06156 0.33687 6.17096C0.227474 6.28035 0.166016 6.42873 0.166016 6.58344V10.0834C0.166016 10.5476 0.35039 10.9927 0.678579 11.3209C1.00677 11.6491 1.45189 11.8334 1.91602 11.8334H10.0827C10.5468 11.8334 10.9919 11.6491 11.3201 11.3209C11.6483 10.9927 11.8327 10.5476 11.8327 10.0834V6.58344C11.8327 6.42873 11.7712 6.28035 11.6618 6.17096C11.5524 6.06156 11.4041 6.0001 11.2494 6.0001Z" fill="currentColor"/> 126 <path d="M4.08018 5.00551L5.41602 6.34718V0.753011C5.41602 0.598301 5.47747 0.449928 5.58687 0.340532C5.69627 0.231136 5.84464 0.169678 5.99935 0.169678C6.15406 0.169678 6.30243 0.231136 6.41183 0.340532C6.52122 0.449928 6.58268 0.598301 6.58268 0.753011V6.34718L7.91852 5.00551C7.97274 4.95084 8.03726 4.90744 8.10835 4.87782C8.17943 4.84821 8.25568 4.83296 8.33268 4.83296C8.40969 4.83296 8.48594 4.84821 8.55702 4.87782C8.6281 4.90744 8.69262 4.95084 8.74685 5.00551C8.80152 5.05974 8.84492 5.12426 8.87454 5.19534C8.90415 5.26643 8.9194 5.34267 8.9194 5.41968C8.9194 5.49668 8.90415 5.57293 8.87454 5.64401C8.84492 5.7151 8.80152 5.77962 8.74685 5.83384L6.41352 8.16718C6.35804 8.22028 6.29262 8.26191 6.22102 8.28968C6.079 8.34802 5.9197 8.34802 5.77768 8.28968C5.70608 8.26191 5.64066 8.22028 5.58518 8.16718L3.25185 5.83384C3.19746 5.77945 3.15432 5.71489 3.12488 5.64382C3.09545 5.57276 3.0803 5.4966 3.0803 5.41968C3.0803 5.34276 3.09545 5.26659 3.12488 5.19553C3.15432 5.12447 3.19746 5.0599 3.25185 5.00551C3.30624 4.95112 3.37081 4.90798 3.44187 4.87854C3.51293 4.84911 3.5891 4.83396 3.66602 4.83396C3.74293 4.83396 3.8191 4.84911 3.89016 4.87854C3.96122 4.90798 4.02579 4.95112 4.08018 5.00551ZM11.2494 6.0001C11.0946 6.0001 10.9463 6.06156 10.8369 6.17096C10.7275 6.28035 10.666 6.42873 10.666 6.58344V10.0834C10.666 10.2381 10.6046 10.3865 10.4952 10.4959C10.3858 10.6053 10.2374 10.6668 10.0827 10.6668H1.91602C1.76131 10.6668 1.61293 10.6053 1.50354 10.4959C1.39414 10.3865 1.33268 10.2381 1.33268 10.0834V6.58344C1.33268 6.42873 1.27122 6.28035 1.16183 6.17096C1.05243 6.06156 0.904059 6.0001 0.749349 6.0001C0.594639 6.0001 0.446266 6.06156 0.33687 6.17096C0.227474 6.28035 0.166016 6.42873 0.166016 6.58344V10.0834C0.166016 10.5476 0.35039 10.9927 0.678579 11.3209C1.00677 11.6491 1.45189 11.8334 1.91602 11.8334H10.0827C10.5468 11.8334 10.9919 11.6491 11.3201 11.3209C11.6483 10.9927 11.8327 10.5476 11.8327 10.0834V6.58344C11.8327 6.42873 11.7712 6.28035 11.6618 6.17096C11.5524 6.06156 11.4041 6.0001 11.2494 6.0001Z" fill="currentColor"/>
118 </symbol> 127 </symbol>
119 128
120 <symbol id="back" viewBox="0 0 26 22" fill="none"> 129 <symbol id="back" viewBox="0 0 26 22" fill="none">
121 <path d="M11.3732 0.736447C11.5286 0.888039 11.6159 1.09353 11.6159 1.30778C11.6159 1.52204 11.5286 1.72753 11.3732 1.87912L2.83307 10.2012L25.1702 10.2012C25.3903 10.2012 25.6013 10.2864 25.757 10.438C25.9126 10.5897 26 10.7953 26 11.0097C26 11.2242 25.9126 11.4298 25.757 11.5814C25.6013 11.733 25.3903 11.8182 25.1702 11.8182L2.83307 11.8182L11.3732 20.1403C11.5198 20.2936 11.5996 20.4963 11.5958 20.7058C11.592 20.9152 11.5049 21.1151 11.3529 21.2632C11.2008 21.4113 10.9957 21.4962 10.7807 21.4999C10.5658 21.5036 10.3577 21.4258 10.2004 21.283L0.242681 11.5811C0.0872844 11.4295 1.2254e-07 11.224 1.25095e-07 11.0097C1.2765e-07 10.7955 0.0872845 10.59 0.242681 10.4384L10.2004 0.736447C10.356 0.585041 10.5669 0.5 10.7868 0.5C11.0067 0.5 11.2176 0.585041 11.3732 0.736447Z" fill="currentColor"/> 130 <path d="M11.3732 0.736447C11.5286 0.888039 11.6159 1.09353 11.6159 1.30778C11.6159 1.52204 11.5286 1.72753 11.3732 1.87912L2.83307 10.2012L25.1702 10.2012C25.3903 10.2012 25.6013 10.2864 25.757 10.438C25.9126 10.5897 26 10.7953 26 11.0097C26 11.2242 25.9126 11.4298 25.757 11.5814C25.6013 11.733 25.3903 11.8182 25.1702 11.8182L2.83307 11.8182L11.3732 20.1403C11.5198 20.2936 11.5996 20.4963 11.5958 20.7058C11.592 20.9152 11.5049 21.1151 11.3529 21.2632C11.2008 21.4113 10.9957 21.4962 10.7807 21.4999C10.5658 21.5036 10.3577 21.4258 10.2004 21.283L0.242681 11.5811C0.0872844 11.4295 1.2254e-07 11.224 1.25095e-07 11.0097C1.2765e-07 10.7955 0.0872845 10.59 0.242681 10.4384L10.2004 0.736447C10.356 0.585041 10.5669 0.5 10.7868 0.5C11.0067 0.5 11.2176 0.585041 11.3732 0.736447Z" fill="currentColor"/>
122 </symbol> 131 </symbol>
123 132
124 <symbol id="share" viewBox="0 0 12 12" fill="none"> 133 <symbol id="share" viewBox="0 0 12 12" fill="none">
125 <path d="M4.08116 3.4976L5.41699 2.15594V7.7501C5.41699 7.90481 5.47845 8.05318 5.58785 8.16258C5.69724 8.27198 5.84562 8.33344 6.00033 8.33344C6.15504 8.33344 6.30341 8.27198 6.4128 8.16258C6.5222 8.05318 6.58366 7.90481 6.58366 7.7501V2.15594L7.91949 3.4976C7.97372 3.55228 8.03824 3.59567 8.10932 3.62529C8.18041 3.6549 8.25665 3.67015 8.33366 3.67015C8.41067 3.67015 8.48691 3.6549 8.558 3.62529C8.62908 3.59567 8.6936 3.55228 8.74783 3.4976C8.8025 3.44337 8.8459 3.37886 8.87551 3.30777C8.90513 3.23669 8.92037 3.16044 8.92037 3.08344C8.92037 3.00643 8.90513 2.93018 8.87551 2.8591C8.8459 2.78801 8.8025 2.7235 8.74783 2.66927L6.41449 0.335936C6.35902 0.282829 6.2936 0.241199 6.22199 0.213436C6.07997 0.155092 5.92068 0.155092 5.77866 0.213436C5.70705 0.241199 5.64164 0.282829 5.58616 0.335936L3.25283 2.66927C3.19844 2.72366 3.15529 2.78823 3.12586 2.85929C3.09642 2.93035 3.08127 3.00652 3.08127 3.08344C3.08127 3.16035 3.09642 3.23652 3.12586 3.30758C3.15529 3.37864 3.19844 3.44321 3.25283 3.4976C3.30721 3.55199 3.37178 3.59514 3.44285 3.62457C3.51391 3.65401 3.59007 3.66916 3.66699 3.66916C3.74391 3.66916 3.82008 3.65401 3.89114 3.62457C3.9622 3.59514 4.02677 3.55199 4.08116 3.4976ZM11.2503 6.0001C11.0956 6.0001 10.9472 6.06156 10.8378 6.17096C10.7285 6.28035 10.667 6.42873 10.667 6.58344V10.0834C10.667 10.2381 10.6055 10.3865 10.4961 10.4959C10.3867 10.6053 10.2384 10.6668 10.0837 10.6668H1.91699C1.76228 10.6668 1.61391 10.6053 1.50451 10.4959C1.39512 10.3865 1.33366 10.2381 1.33366 10.0834V6.58344C1.33366 6.42873 1.2722 6.28035 1.1628 6.17096C1.05341 6.06156 0.905035 6.0001 0.750326 6.0001C0.595616 6.0001 0.447243 6.06156 0.337847 6.17096C0.22845 6.28035 0.166992 6.42873 0.166992 6.58344V10.0834C0.166992 10.5476 0.351367 10.9927 0.679555 11.3209C1.00774 11.6491 1.45286 11.8334 1.91699 11.8334H10.0837C10.5478 11.8334 10.9929 11.6491 11.3211 11.3209C11.6493 10.9927 11.8337 10.5476 11.8337 10.0834V6.58344C11.8337 6.42873 11.7722 6.28035 11.6628 6.17096C11.5534 6.06156 11.405 6.0001 11.2503 6.0001Z" fill="currentColor"/> 134 <path d="M4.08116 3.4976L5.41699 2.15594V7.7501C5.41699 7.90481 5.47845 8.05318 5.58785 8.16258C5.69724 8.27198 5.84562 8.33344 6.00033 8.33344C6.15504 8.33344 6.30341 8.27198 6.4128 8.16258C6.5222 8.05318 6.58366 7.90481 6.58366 7.7501V2.15594L7.91949 3.4976C7.97372 3.55228 8.03824 3.59567 8.10932 3.62529C8.18041 3.6549 8.25665 3.67015 8.33366 3.67015C8.41067 3.67015 8.48691 3.6549 8.558 3.62529C8.62908 3.59567 8.6936 3.55228 8.74783 3.4976C8.8025 3.44337 8.8459 3.37886 8.87551 3.30777C8.90513 3.23669 8.92037 3.16044 8.92037 3.08344C8.92037 3.00643 8.90513 2.93018 8.87551 2.8591C8.8459 2.78801 8.8025 2.7235 8.74783 2.66927L6.41449 0.335936C6.35902 0.282829 6.2936 0.241199 6.22199 0.213436C6.07997 0.155092 5.92068 0.155092 5.77866 0.213436C5.70705 0.241199 5.64164 0.282829 5.58616 0.335936L3.25283 2.66927C3.19844 2.72366 3.15529 2.78823 3.12586 2.85929C3.09642 2.93035 3.08127 3.00652 3.08127 3.08344C3.08127 3.16035 3.09642 3.23652 3.12586 3.30758C3.15529 3.37864 3.19844 3.44321 3.25283 3.4976C3.30721 3.55199 3.37178 3.59514 3.44285 3.62457C3.51391 3.65401 3.59007 3.66916 3.66699 3.66916C3.74391 3.66916 3.82008 3.65401 3.89114 3.62457C3.9622 3.59514 4.02677 3.55199 4.08116 3.4976ZM11.2503 6.0001C11.0956 6.0001 10.9472 6.06156 10.8378 6.17096C10.7285 6.28035 10.667 6.42873 10.667 6.58344V10.0834C10.667 10.2381 10.6055 10.3865 10.4961 10.4959C10.3867 10.6053 10.2384 10.6668 10.0837 10.6668H1.91699C1.76228 10.6668 1.61391 10.6053 1.50451 10.4959C1.39512 10.3865 1.33366 10.2381 1.33366 10.0834V6.58344C1.33366 6.42873 1.2722 6.28035 1.1628 6.17096C1.05341 6.06156 0.905035 6.0001 0.750326 6.0001C0.595616 6.0001 0.447243 6.06156 0.337847 6.17096C0.22845 6.28035 0.166992 6.42873 0.166992 6.58344V10.0834C0.166992 10.5476 0.351367 10.9927 0.679555 11.3209C1.00774 11.6491 1.45286 11.8334 1.91699 11.8334H10.0837C10.5478 11.8334 10.9929 11.6491 11.3211 11.3209C11.6493 10.9927 11.8337 10.5476 11.8337 10.0834V6.58344C11.8337 6.42873 11.7722 6.28035 11.6628 6.17096C11.5534 6.06156 11.405 6.0001 11.2503 6.0001Z" fill="currentColor"/>
126 </symbol> 135 </symbol>
127 136
128 <symbol id="clip" viewBox="0 0 11 16" fill="none"> 137 <symbol id="clip" viewBox="0 0 11 16" fill="none">
129 <path d="M1 5.02548V10.9091C1 12.0664 1.45153 13.1763 2.25526 13.9947C3.05898 14.813 4.14907 15.2727 5.28571 15.2727C6.42236 15.2727 7.51244 14.813 8.31617 13.9947C9.1199 13.1763 9.57143 12.0664 9.57143 10.9091V3.63639C9.57143 2.86485 9.27041 2.12491 8.73459 1.57935C8.19877 1.03379 7.47205 0.727295 6.71429 0.727295C5.95652 0.727295 5.2298 1.03379 4.69398 1.57935C4.15816 2.12491 3.85714 2.86485 3.85714 3.63639V10.3142C3.85714 10.5052 3.89409 10.6944 3.96589 10.8708C4.03768 11.0473 4.14291 11.2077 4.27556 11.3427C4.40822 11.4778 4.5657 11.5849 4.73902 11.658C4.91235 11.7311 5.09811 11.7687 5.28571 11.7687V11.7687C5.66459 11.7687 6.02796 11.6155 6.29587 11.3427C6.56378 11.0699 6.71429 10.7 6.71429 10.3142V5.09093" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/> 138 <path d="M1 5.02548V10.9091C1 12.0664 1.45153 13.1763 2.25526 13.9947C3.05898 14.813 4.14907 15.2727 5.28571 15.2727C6.42236 15.2727 7.51244 14.813 8.31617 13.9947C9.1199 13.1763 9.57143 12.0664 9.57143 10.9091V3.63639C9.57143 2.86485 9.27041 2.12491 8.73459 1.57935C8.19877 1.03379 7.47205 0.727295 6.71429 0.727295C5.95652 0.727295 5.2298 1.03379 4.69398 1.57935C4.15816 2.12491 3.85714 2.86485 3.85714 3.63639V10.3142C3.85714 10.5052 3.89409 10.6944 3.96589 10.8708C4.03768 11.0473 4.14291 11.2077 4.27556 11.3427C4.40822 11.4778 4.5657 11.5849 4.73902 11.658C4.91235 11.7311 5.09811 11.7687 5.28571 11.7687V11.7687C5.66459 11.7687 6.02796 11.6155 6.29587 11.3427C6.56378 11.0699 6.71429 10.7 6.71429 10.3142V5.09093" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
130 </symbol> 139 </symbol>
131 140
132 <symbol id="eye" viewBox="0 0 22 18" fill="none"> 141 <symbol id="eye" viewBox="0 0 22 18" fill="none">
133 <path d="M11.0011 15.4453C9.68623 15.4453 8.32842 15.1187 6.96201 14.4785C5.89209 13.9758 4.81357 13.2797 3.75654 12.4074C1.97334 10.9336 0.87334 9.47266 0.826074 9.4125C0.641309 9.16758 0.641309 8.83242 0.826074 8.5875C0.87334 8.52734 1.97334 7.06641 3.75654 5.59258C4.81357 4.72031 5.89209 4.02422 6.96201 3.52148C8.32842 2.88125 9.68623 2.55469 11.0011 2.55469C12.3159 2.55469 13.6737 2.88125 15.0401 3.52148C16.1101 4.02422 17.1886 4.72031 18.2456 5.59258C20.0288 7.06641 21.1331 8.52734 21.1761 8.5875C21.3608 8.83242 21.3608 9.16758 21.1761 9.4125C21.1288 9.47266 20.0288 10.9336 18.2456 12.4074C17.1886 13.2797 16.1101 13.9758 15.0401 14.4785C13.6737 15.1187 12.3159 15.4453 11.0011 15.4453ZM2.26123 9C3.33975 10.2762 6.90185 14.0703 11.0011 14.0703C15.1089 14.0703 18.6624 10.2762 19.7409 9C18.6624 7.72383 15.1003 3.92969 11.0011 3.92969C6.89326 3.92969 3.33975 7.72383 2.26123 9Z" fill="currentColor"/> 142 <path d="M11.0011 15.4453C9.68623 15.4453 8.32842 15.1187 6.96201 14.4785C5.89209 13.9758 4.81357 13.2797 3.75654 12.4074C1.97334 10.9336 0.87334 9.47266 0.826074 9.4125C0.641309 9.16758 0.641309 8.83242 0.826074 8.5875C0.87334 8.52734 1.97334 7.06641 3.75654 5.59258C4.81357 4.72031 5.89209 4.02422 6.96201 3.52148C8.32842 2.88125 9.68623 2.55469 11.0011 2.55469C12.3159 2.55469 13.6737 2.88125 15.0401 3.52148C16.1101 4.02422 17.1886 4.72031 18.2456 5.59258C20.0288 7.06641 21.1331 8.52734 21.1761 8.5875C21.3608 8.83242 21.3608 9.16758 21.1761 9.4125C21.1288 9.47266 20.0288 10.9336 18.2456 12.4074C17.1886 13.2797 16.1101 13.9758 15.0401 14.4785C13.6737 15.1187 12.3159 15.4453 11.0011 15.4453ZM2.26123 9C3.33975 10.2762 6.90185 14.0703 11.0011 14.0703C15.1089 14.0703 18.6624 10.2762 19.7409 9C18.6624 7.72383 15.1003 3.92969 11.0011 3.92969C6.89326 3.92969 3.33975 7.72383 2.26123 9Z" fill="currentColor"/>
134 <path d="M11 12.0938C9.29414 12.0938 7.90625 10.7059 7.90625 9C7.90625 7.29414 9.29414 5.90625 11 5.90625C12.7059 5.90625 14.0938 7.29414 14.0938 9C14.0938 10.7059 12.7059 12.0938 11 12.0938ZM11 7.28125C10.0504 7.28125 9.28125 8.05039 9.28125 9C9.28125 9.94961 10.0504 10.7188 11 10.7188C11.9496 10.7188 12.7188 9.94961 12.7188 9C12.7188 8.05039 11.9496 7.28125 11 7.28125Z" fill="currentColor"/> 143 <path d="M11 12.0938C9.29414 12.0938 7.90625 10.7059 7.90625 9C7.90625 7.29414 9.29414 5.90625 11 5.90625C12.7059 5.90625 14.0938 7.29414 14.0938 9C14.0938 10.7059 12.7059 12.0938 11 12.0938ZM11 7.28125C10.0504 7.28125 9.28125 8.05039 9.28125 9C9.28125 9.94961 10.0504 10.7188 11 10.7188C11.9496 10.7188 12.7188 9.94961 12.7188 9C12.7188 8.05039 11.9496 7.28125 11 7.28125Z" fill="currentColor"/>
135 <g filter="url(#filter0_d_660_17902)"> 144 <g filter="url(#filter0_d_660_17902)">
136 <rect x="16" width="1" height="20" rx="0.5" transform="rotate(30 16 0)" fill="currentColor"/> 145 <rect x="16" width="1" height="20" rx="0.5" transform="rotate(30 16 0)" fill="currentColor"/>
137 </g> 146 </g>
138 <defs> 147 <defs>
139 <filter id="filter0_d_660_17902" x="6.18359" y="0.182861" width="11.5" height="17.4548" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> 148 <filter id="filter0_d_660_17902" x="6.18359" y="0.182861" width="11.5" height="17.4548" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
140 <feFlood flood-opacity="0" result="BackgroundImageFix"/> 149 <feFlood flood-opacity="0" result="BackgroundImageFix"/>
141 <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/> 150 <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
142 <feOffset dx="1"/> 151 <feOffset dx="1"/>
143 <feComposite in2="hardAlpha" operator="out"/> 152 <feComposite in2="hardAlpha" operator="out"/>
144 <feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/> 153 <feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
145 <feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_660_17902"/> 154 <feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_660_17902"/>
146 <feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_660_17902" result="shape"/> 155 <feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_660_17902" result="shape"/>
147 </filter> 156 </filter>
148 </defs> 157 </defs>
149 </symbol> 158 </symbol>
150 159
151 <symbol id="eye-2" viewBox="0 0 640 512" fill="none"> 160 <symbol id="eye-2" viewBox="0 0 640 512" fill="none">
152 <path d="M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z" fill="currentColor"/> 161 <path d="M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z" fill="currentColor"/>
153 </symbol> 162 </symbol>
154 163
155 <symbol id="eye-3" viewBox="0 0 42 28" fill="none"> 164 <symbol id="eye-3" viewBox="0 0 42 28" fill="none">
156 <path d="M41.1916 13.5823C41.1332 13.4483 39.7032 10.2772 36.5098 7.08375C33.5466 4.12406 28.4557 0.59375 20.9998 0.59375C13.5438 0.59375 8.45287 4.12406 5.48975 7.08375C2.29631 10.2772 0.866312 13.4431 0.807874 13.5823C0.749114 13.7143 0.71875 13.8572 0.71875 14.0017C0.71875 14.1462 0.749114 14.2891 0.807874 14.4211C0.866312 14.5534 2.29631 17.7245 5.48975 20.918C8.45287 23.8777 13.5438 27.4062 20.9998 27.4062C28.4557 27.4062 33.5466 23.8777 36.5098 20.918C39.7032 17.7245 41.1332 14.5586 41.1916 14.4211C41.2504 14.2891 41.2807 14.1462 41.2807 14.0017C41.2807 13.8572 41.2504 13.7143 41.1916 13.5823ZM20.9998 25.3438C15.6063 25.3438 10.8969 23.3809 7.00053 19.512C5.36716 17.8888 3.98498 16.031 2.89959 14C3.98467 11.9693 5.36689 10.1121 7.00053 8.48969C10.8969 4.61906 15.6063 2.65625 20.9998 2.65625C26.3932 2.65625 31.1026 4.61906 34.999 8.48969C36.6326 10.1121 38.0148 11.9693 39.0999 14C38.0051 16.0986 32.5154 25.3438 20.9998 25.3438ZM20.9998 6.09375C19.436 6.09375 17.9074 6.55744 16.6073 7.42619C15.3071 8.29494 14.2937 9.52973 13.6953 10.9744C13.0969 12.4191 12.9404 14.0088 13.2454 15.5424C13.5505 17.0761 14.3035 18.4849 15.4092 19.5906C16.5149 20.6963 17.9237 21.4493 19.4573 21.7543C20.991 22.0594 22.5807 21.9028 24.0253 21.3044C25.47 20.706 26.7048 19.6927 27.5736 18.3925C28.4423 17.0923 28.906 15.5637 28.906 14C28.9033 11.904 28.0694 9.89457 26.5873 8.41245C25.1052 6.93033 23.0958 6.09648 20.9998 6.09375ZM20.9998 19.8438C19.844 19.8438 18.7141 19.501 17.7531 18.8589C16.7921 18.2168 16.0431 17.3041 15.6008 16.2363C15.1585 15.1685 15.0428 13.9935 15.2683 12.8599C15.4938 11.7264 16.0503 10.6851 16.8676 9.86784C17.6849 9.05058 18.7261 8.49402 19.8597 8.26854C20.9933 8.04305 22.1682 8.15878 23.2361 8.60108C24.3039 9.04338 25.2165 9.79239 25.8587 10.7534C26.5008 11.7144 26.8435 12.8442 26.8435 14C26.8435 15.5499 26.2278 17.0362 25.1319 18.1322C24.036 19.2281 22.5496 19.8438 20.9998 19.8438Z" fill="currentColor"/> 165 <path d="M41.1916 13.5823C41.1332 13.4483 39.7032 10.2772 36.5098 7.08375C33.5466 4.12406 28.4557 0.59375 20.9998 0.59375C13.5438 0.59375 8.45287 4.12406 5.48975 7.08375C2.29631 10.2772 0.866312 13.4431 0.807874 13.5823C0.749114 13.7143 0.71875 13.8572 0.71875 14.0017C0.71875 14.1462 0.749114 14.2891 0.807874 14.4211C0.866312 14.5534 2.29631 17.7245 5.48975 20.918C8.45287 23.8777 13.5438 27.4062 20.9998 27.4062C28.4557 27.4062 33.5466 23.8777 36.5098 20.918C39.7032 17.7245 41.1332 14.5586 41.1916 14.4211C41.2504 14.2891 41.2807 14.1462 41.2807 14.0017C41.2807 13.8572 41.2504 13.7143 41.1916 13.5823ZM20.9998 25.3438C15.6063 25.3438 10.8969 23.3809 7.00053 19.512C5.36716 17.8888 3.98498 16.031 2.89959 14C3.98467 11.9693 5.36689 10.1121 7.00053 8.48969C10.8969 4.61906 15.6063 2.65625 20.9998 2.65625C26.3932 2.65625 31.1026 4.61906 34.999 8.48969C36.6326 10.1121 38.0148 11.9693 39.0999 14C38.0051 16.0986 32.5154 25.3438 20.9998 25.3438ZM20.9998 6.09375C19.436 6.09375 17.9074 6.55744 16.6073 7.42619C15.3071 8.29494 14.2937 9.52973 13.6953 10.9744C13.0969 12.4191 12.9404 14.0088 13.2454 15.5424C13.5505 17.0761 14.3035 18.4849 15.4092 19.5906C16.5149 20.6963 17.9237 21.4493 19.4573 21.7543C20.991 22.0594 22.5807 21.9028 24.0253 21.3044C25.47 20.706 26.7048 19.6927 27.5736 18.3925C28.4423 17.0923 28.906 15.5637 28.906 14C28.9033 11.904 28.0694 9.89457 26.5873 8.41245C25.1052 6.93033 23.0958 6.09648 20.9998 6.09375ZM20.9998 19.8438C19.844 19.8438 18.7141 19.501 17.7531 18.8589C16.7921 18.2168 16.0431 17.3041 15.6008 16.2363C15.1585 15.1685 15.0428 13.9935 15.2683 12.8599C15.4938 11.7264 16.0503 10.6851 16.8676 9.86784C17.6849 9.05058 18.7261 8.49402 19.8597 8.26854C20.9933 8.04305 22.1682 8.15878 23.2361 8.60108C24.3039 9.04338 25.2165 9.79239 25.8587 10.7534C26.5008 11.7144 26.8435 12.8442 26.8435 14C26.8435 15.5499 26.2278 17.0362 25.1319 18.1322C24.036 19.2281 22.5496 19.8438 20.9998 19.8438Z" fill="currentColor"/>
157 </symbol> 166 </symbol>
158 167
159 <symbol id="cabinet-1" viewBox="0 0 22 21" fill="none"> 168 <symbol id="cabinet-1" viewBox="0 0 22 21" fill="none">
160 <path d="M7.33333 1.46667C8.05853 1.46667 8.76744 1.68171 9.37042 2.08461C9.9734 2.48751 10.4434 3.06016 10.7209 3.73016C10.9984 4.40016 11.071 5.1374 10.9295 5.84866C10.7881 6.55993 10.4389 7.21327 9.92606 7.72606C9.41327 8.23885 8.75993 8.58807 8.04867 8.72955C7.3374 8.87103 6.60016 8.79841 5.93016 8.52089C5.26017 8.24337 4.68751 7.7734 4.28461 7.17042C3.88171 6.56744 3.66667 5.85853 3.66667 5.13333C3.66667 4.16087 4.05298 3.22824 4.74061 2.54061C5.42824 1.85298 6.36087 1.46667 7.33333 1.46667ZM7.33333 0C6.31806 0 5.32558 0.301065 4.48141 0.865123C3.63723 1.42918 2.97928 2.2309 2.59075 3.16889C2.20222 4.10689 2.10056 5.13903 2.29864 6.1348C2.49671 7.13057 2.98561 8.04524 3.70352 8.76315C4.42143 9.48106 5.3361 9.96996 6.33187 10.168C7.32764 10.3661 8.35978 10.2644 9.29778 9.87591C10.2358 9.48738 11.0375 8.82943 11.6015 7.98526C12.1656 7.14109 12.4667 6.14861 12.4667 5.13333C12.4667 3.77189 11.9258 2.46621 10.9631 1.50352C10.0005 0.540832 8.69478 0 7.33333 0ZM14.6667 20.5333H13.2V16.8667C13.2 15.8942 12.8137 14.9616 12.1261 14.2739C11.4384 13.5863 10.5058 13.2 9.53333 13.2H5.13333C4.16087 13.2 3.22824 13.5863 2.54061 14.2739C1.85298 14.9616 1.46667 15.8942 1.46667 16.8667V20.5333H0V16.8667C0 15.5052 0.540832 14.1995 1.50352 13.2369C2.46621 12.2742 3.77189 11.7333 5.13333 11.7333H9.53333C10.8948 11.7333 12.2005 12.2742 13.1631 13.2369C14.1258 14.1995 14.6667 15.5052 14.6667 16.8667V20.5333ZM14.6667 1.46667H22V2.93333H14.6667V1.46667ZM14.6667 5.13333H22V6.6H14.6667V5.13333ZM14.6667 8.8H19.8V10.2667H14.6667V8.8Z" fill="currentColor"/> 169 <path d="M7.33333 1.46667C8.05853 1.46667 8.76744 1.68171 9.37042 2.08461C9.9734 2.48751 10.4434 3.06016 10.7209 3.73016C10.9984 4.40016 11.071 5.1374 10.9295 5.84866C10.7881 6.55993 10.4389 7.21327 9.92606 7.72606C9.41327 8.23885 8.75993 8.58807 8.04867 8.72955C7.3374 8.87103 6.60016 8.79841 5.93016 8.52089C5.26017 8.24337 4.68751 7.7734 4.28461 7.17042C3.88171 6.56744 3.66667 5.85853 3.66667 5.13333C3.66667 4.16087 4.05298 3.22824 4.74061 2.54061C5.42824 1.85298 6.36087 1.46667 7.33333 1.46667ZM7.33333 0C6.31806 0 5.32558 0.301065 4.48141 0.865123C3.63723 1.42918 2.97928 2.2309 2.59075 3.16889C2.20222 4.10689 2.10056 5.13903 2.29864 6.1348C2.49671 7.13057 2.98561 8.04524 3.70352 8.76315C4.42143 9.48106 5.3361 9.96996 6.33187 10.168C7.32764 10.3661 8.35978 10.2644 9.29778 9.87591C10.2358 9.48738 11.0375 8.82943 11.6015 7.98526C12.1656 7.14109 12.4667 6.14861 12.4667 5.13333C12.4667 3.77189 11.9258 2.46621 10.9631 1.50352C10.0005 0.540832 8.69478 0 7.33333 0ZM14.6667 20.5333H13.2V16.8667C13.2 15.8942 12.8137 14.9616 12.1261 14.2739C11.4384 13.5863 10.5058 13.2 9.53333 13.2H5.13333C4.16087 13.2 3.22824 13.5863 2.54061 14.2739C1.85298 14.9616 1.46667 15.8942 1.46667 16.8667V20.5333H0V16.8667C0 15.5052 0.540832 14.1995 1.50352 13.2369C2.46621 12.2742 3.77189 11.7333 5.13333 11.7333H9.53333C10.8948 11.7333 12.2005 12.2742 13.1631 13.2369C14.1258 14.1995 14.6667 15.5052 14.6667 16.8667V20.5333ZM14.6667 1.46667H22V2.93333H14.6667V1.46667ZM14.6667 5.13333H22V6.6H14.6667V5.13333ZM14.6667 8.8H19.8V10.2667H14.6667V8.8Z" fill="currentColor"/>
161 </symbol> 170 </symbol>
162 171
163 <symbol id="cabinet-2" viewBox="0 0 21 21" fill="none"> 172 <symbol id="cabinet-2" viewBox="0 0 21 21" fill="none">
164 <path d="M18.4861 20.1667H1.68056C1.23498 20.1663 0.807784 20.0144 0.492715 19.7443C0.177646 19.4743 0.000444907 19.1081 0 18.7262V1.44048C0.000444907 1.05856 0.177646 0.692386 0.492715 0.422327C0.807784 0.152268 1.23498 0.000381349 1.68056 0H18.4861C18.9317 0.000381349 19.3589 0.152268 19.674 0.422327C19.989 0.692386 20.1662 1.05856 20.1667 1.44048V18.7262C20.1662 19.1081 19.989 19.4743 19.674 19.7443C19.3589 20.0144 18.9317 20.1663 18.4861 20.1667ZM1.68056 1.44048V18.7262H18.4861V1.44048H1.68056Z" fill="currentColor"/> 173 <path d="M18.4861 20.1667H1.68056C1.23498 20.1663 0.807784 20.0144 0.492715 19.7443C0.177646 19.4743 0.000444907 19.1081 0 18.7262V1.44048C0.000444907 1.05856 0.177646 0.692386 0.492715 0.422327C0.807784 0.152268 1.23498 0.000381349 1.68056 0H18.4861C18.9317 0.000381349 19.3589 0.152268 19.674 0.422327C19.989 0.692386 20.1662 1.05856 20.1667 1.44048V18.7262C20.1662 19.1081 19.989 19.4743 19.674 19.7443C19.3589 20.0144 18.9317 20.1663 18.4861 20.1667ZM1.68056 1.44048V18.7262H18.4861V1.44048H1.68056Z" fill="currentColor"/>
165 <path d="M4.58203 8.64307H14.6654V10.2145H4.58203V8.64307ZM4.58203 12.5716H10.9987V14.1431H4.58203V12.5716Z" fill="currentColor"/> 174 <path d="M4.58203 8.64307H14.6654V10.2145H4.58203V8.64307ZM4.58203 12.5716H10.9987V14.1431H4.58203V12.5716Z" fill="currentColor"/>
166 <rect x="11" width="10" height="8" fill="white"/> 175 <rect x="11" width="10" height="8" fill="white"/>
167 <path d="M19.875 2.75H17.125V0H15.75V2.75H13V4.125H15.75V6.875H17.125V4.125H19.875V2.75Z" fill="currentColor"/> 176 <path d="M19.875 2.75H17.125V0H15.75V2.75H13V4.125H15.75V6.875H17.125V4.125H19.875V2.75Z" fill="currentColor"/>
168 </symbol> 177 </symbol>
169 178
170 <symbol id="cabinet-3" viewBox="0 0 21 21" fill="none"> 179 <symbol id="cabinet-3" viewBox="0 0 21 21" fill="none">
171 <path d="M18.4861 20.1667H1.68056C1.23498 20.1663 0.807784 20.0144 0.492715 19.7443C0.177646 19.4743 0.000444907 19.1081 0 18.7262V1.44048C0.000444907 1.05856 0.177646 0.692386 0.492715 0.422327C0.807784 0.152268 1.23498 0.000381349 1.68056 0H18.4861C18.9317 0.000381349 19.3589 0.152268 19.674 0.422327C19.989 0.692386 20.1662 1.05856 20.1667 1.44048V18.7262C20.1662 19.1081 19.989 19.4743 19.674 19.7443C19.3589 20.0144 18.9317 20.1663 18.4861 20.1667ZM1.68056 1.44048V18.7262H18.4861V1.44048H1.68056Z" fill="currentColor"/> 180 <path d="M18.4861 20.1667H1.68056C1.23498 20.1663 0.807784 20.0144 0.492715 19.7443C0.177646 19.4743 0.000444907 19.1081 0 18.7262V1.44048C0.000444907 1.05856 0.177646 0.692386 0.492715 0.422327C0.807784 0.152268 1.23498 0.000381349 1.68056 0H18.4861C18.9317 0.000381349 19.3589 0.152268 19.674 0.422327C19.989 0.692386 20.1662 1.05856 20.1667 1.44048V18.7262C20.1662 19.1081 19.989 19.4743 19.674 19.7443C19.3589 20.0144 18.9317 20.1663 18.4861 20.1667ZM1.68056 1.44048V18.7262H18.4861V1.44048H1.68056Z" fill="currentColor"/>
172 <path d="M4.58203 8.64307H14.6654V10.2145H4.58203V8.64307ZM4.58203 12.5716H10.9987V14.1431H4.58203V12.5716Z" fill="currentColor"/> 181 <path d="M4.58203 8.64307H14.6654V10.2145H4.58203V8.64307ZM4.58203 12.5716H10.9987V14.1431H4.58203V12.5716Z" fill="currentColor"/>
173 </symbol> 182 </symbol>
174 183
175 <symbol id="cabinet-4" viewBox="0 0 20 21" fill="none"> 184 <symbol id="cabinet-4" viewBox="0 0 20 21" fill="none">
176 <path d="M10 15.125C9.28779 15.1239 8.588 14.9384 7.96874 14.5866C7.34948 14.2349 6.83185 13.7287 6.46625 13.1175L5.29063 13.805C5.78008 14.6163 6.47083 15.2874 7.29593 15.7533C8.12103 16.2191 9.05248 16.4639 10 16.4639C10.9475 16.4639 11.879 16.2191 12.7041 15.7533C13.5292 15.2874 14.2199 14.6163 14.7094 13.805L13.5338 13.1175C13.1681 13.7287 12.6505 14.2349 12.0313 14.5866C11.412 14.9384 10.7122 15.1239 10 15.125ZM19.625 2.75H16.875V0H15.5V2.75H12.75V4.125H15.5V6.875H16.875V4.125H19.625V2.75ZM6.90625 7.5625C6.56631 7.5625 6.23401 7.6633 5.95136 7.85216C5.66872 8.04102 5.44842 8.30945 5.31833 8.62351C5.18824 8.93757 5.15421 9.28316 5.22053 9.61656C5.28684 9.94997 5.45054 10.2562 5.69091 10.4966C5.93128 10.737 6.23753 10.9007 6.57094 10.967C6.90434 11.0333 7.24993 10.9993 7.56399 10.8692C7.87805 10.7391 8.14648 10.5188 8.33534 10.2361C8.5242 9.95349 8.625 9.62119 8.625 9.28125C8.62683 9.05503 8.58363 8.83071 8.4979 8.62135C8.41217 8.412 8.28564 8.22179 8.12567 8.06183C7.96571 7.90186 7.77551 7.77533 7.56615 7.6896C7.35679 7.60387 7.13247 7.56067 6.90625 7.5625ZM13.0938 7.5625C12.7538 7.5625 12.4215 7.6633 12.1389 7.85216C11.8562 8.04102 11.6359 8.30945 11.5058 8.62351C11.3757 8.93757 11.3417 9.28316 11.408 9.61656C11.4743 9.94997 11.638 10.2562 11.8784 10.4966C12.1188 10.737 12.425 10.9007 12.7584 10.967C13.0918 11.0333 13.4374 10.9993 13.7515 10.8692C14.0655 10.7391 14.334 10.5188 14.5228 10.2361C14.7117 9.95349 14.8125 9.62119 14.8125 9.28125C14.8143 9.05503 14.7711 8.83071 14.6854 8.62135C14.5997 8.412 14.4731 8.22179 14.3132 8.06183C14.1532 7.90186 13.963 7.77533 13.7536 7.6896C13.5443 7.60387 13.32 7.56067 13.0938 7.5625Z" fill="currentColor"/> 185 <path d="M10 15.125C9.28779 15.1239 8.588 14.9384 7.96874 14.5866C7.34948 14.2349 6.83185 13.7287 6.46625 13.1175L5.29063 13.805C5.78008 14.6163 6.47083 15.2874 7.29593 15.7533C8.12103 16.2191 9.05248 16.4639 10 16.4639C10.9475 16.4639 11.879 16.2191 12.7041 15.7533C13.5292 15.2874 14.2199 14.6163 14.7094 13.805L13.5338 13.1175C13.1681 13.7287 12.6505 14.2349 12.0313 14.5866C11.412 14.9384 10.7122 15.1239 10 15.125ZM19.625 2.75H16.875V0H15.5V2.75H12.75V4.125H15.5V6.875H16.875V4.125H19.625V2.75ZM6.90625 7.5625C6.56631 7.5625 6.23401 7.6633 5.95136 7.85216C5.66872 8.04102 5.44842 8.30945 5.31833 8.62351C5.18824 8.93757 5.15421 9.28316 5.22053 9.61656C5.28684 9.94997 5.45054 10.2562 5.69091 10.4966C5.93128 10.737 6.23753 10.9007 6.57094 10.967C6.90434 11.0333 7.24993 10.9993 7.56399 10.8692C7.87805 10.7391 8.14648 10.5188 8.33534 10.2361C8.5242 9.95349 8.625 9.62119 8.625 9.28125C8.62683 9.05503 8.58363 8.83071 8.4979 8.62135C8.41217 8.412 8.28564 8.22179 8.12567 8.06183C7.96571 7.90186 7.77551 7.77533 7.56615 7.6896C7.35679 7.60387 7.13247 7.56067 6.90625 7.5625ZM13.0938 7.5625C12.7538 7.5625 12.4215 7.6633 12.1389 7.85216C11.8562 8.04102 11.6359 8.30945 11.5058 8.62351C11.3757 8.93757 11.3417 9.28316 11.408 9.61656C11.4743 9.94997 11.638 10.2562 11.8784 10.4966C12.1188 10.737 12.425 10.9007 12.7584 10.967C13.0918 11.0333 13.4374 10.9993 13.7515 10.8692C14.0655 10.7391 14.334 10.5188 14.5228 10.2361C14.7117 9.95349 14.8125 9.62119 14.8125 9.28125C14.8143 9.05503 14.7711 8.83071 14.6854 8.62135C14.5997 8.412 14.4731 8.22179 14.3132 8.06183C14.1532 7.90186 13.963 7.77533 13.7536 7.6896C13.5443 7.60387 13.32 7.56067 13.0938 7.5625Z" fill="currentColor"/>
177 <path d="M17.9813 8.9375C18.155 9.61139 18.245 10.3041 18.2494 11C18.2494 12.6317 17.7655 14.2267 16.859 15.5835C15.9525 16.9402 14.664 17.9976 13.1565 18.622C11.649 19.2464 9.99024 19.4098 8.3899 19.0915C6.78955 18.7731 5.31954 17.9874 4.16576 16.8336C3.01198 15.6798 2.22624 14.2098 1.90791 12.6095C1.58958 11.0092 1.75296 9.35035 2.37738 7.84286C3.00181 6.33537 4.05923 5.0469 5.41594 4.14038C6.77264 3.23385 8.36769 2.75 9.99939 2.75V1.375C8.007 1.37432 6.0635 1.99195 4.43702 3.14269C2.81055 4.29343 1.58126 5.92055 0.918766 7.79957C0.256272 9.67859 0.193223 11.7169 0.738315 13.6333C1.28341 15.5497 2.40978 17.2496 3.96202 18.4987C5.51427 19.7478 7.41588 20.4843 9.4045 20.6068C11.3931 20.7293 13.3707 20.2316 15.0645 19.1824C16.7583 18.1332 18.0847 16.5843 18.8608 14.7493C19.6369 12.9143 19.8245 10.8836 19.3975 8.9375H17.9813Z" fill="currentColor"/> 186 <path d="M17.9813 8.9375C18.155 9.61139 18.245 10.3041 18.2494 11C18.2494 12.6317 17.7655 14.2267 16.859 15.5835C15.9525 16.9402 14.664 17.9976 13.1565 18.622C11.649 19.2464 9.99024 19.4098 8.3899 19.0915C6.78955 18.7731 5.31954 17.9874 4.16576 16.8336C3.01198 15.6798 2.22624 14.2098 1.90791 12.6095C1.58958 11.0092 1.75296 9.35035 2.37738 7.84286C3.00181 6.33537 4.05923 5.0469 5.41594 4.14038C6.77264 3.23385 8.36769 2.75 9.99939 2.75V1.375C8.007 1.37432 6.0635 1.99195 4.43702 3.14269C2.81055 4.29343 1.58126 5.92055 0.918766 7.79957C0.256272 9.67859 0.193223 11.7169 0.738315 13.6333C1.28341 15.5497 2.40978 17.2496 3.96202 18.4987C5.51427 19.7478 7.41588 20.4843 9.4045 20.6068C11.3931 20.7293 13.3707 20.2316 15.0645 19.1824C16.7583 18.1332 18.0847 16.5843 18.8608 14.7493C19.6369 12.9143 19.8245 10.8836 19.3975 8.9375H17.9813Z" fill="currentColor"/>
178 </symbol> 187 </symbol>
179 188
180 <symbol id="cabinet-5" viewBox="0 0 20 19" fill="none"> 189 <symbol id="cabinet-5" viewBox="0 0 20 19" fill="none">
181 <path d="M11.1962 18.625L10 17.9375L12.75 13.125H16.875C17.2397 13.125 17.5894 12.9801 17.8473 12.7223C18.1051 12.4644 18.25 12.1147 18.25 11.75V3.5C18.25 3.13533 18.1051 2.78559 17.8473 2.52773C17.5894 2.26987 17.2397 2.125 16.875 2.125H3.125C2.76033 2.125 2.41059 2.26987 2.15273 2.52773C1.89487 2.78559 1.75 3.13533 1.75 3.5V11.75C1.75 12.1147 1.89487 12.4644 2.15273 12.7223C2.41059 12.9801 2.76033 13.125 3.125 13.125H9.3125V14.5H3.125C2.39565 14.5 1.69618 14.2103 1.18046 13.6945C0.664731 13.1788 0.375 12.4793 0.375 11.75V3.5C0.375 2.77065 0.664731 2.07118 1.18046 1.55546C1.69618 1.03973 2.39565 0.75 3.125 0.75H16.875C17.6043 0.75 18.3038 1.03973 18.8195 1.55546C19.3353 2.07118 19.625 2.77065 19.625 3.5V11.75C19.625 12.4793 19.3353 13.1788 18.8195 13.6945C18.3038 14.2103 17.6043 14.5 16.875 14.5H13.5475L11.1962 18.625Z" fill="currentColor"/> 190 <path d="M11.1962 18.625L10 17.9375L12.75 13.125H16.875C17.2397 13.125 17.5894 12.9801 17.8473 12.7223C18.1051 12.4644 18.25 12.1147 18.25 11.75V3.5C18.25 3.13533 18.1051 2.78559 17.8473 2.52773C17.5894 2.26987 17.2397 2.125 16.875 2.125H3.125C2.76033 2.125 2.41059 2.26987 2.15273 2.52773C1.89487 2.78559 1.75 3.13533 1.75 3.5V11.75C1.75 12.1147 1.89487 12.4644 2.15273 12.7223C2.41059 12.9801 2.76033 13.125 3.125 13.125H9.3125V14.5H3.125C2.39565 14.5 1.69618 14.2103 1.18046 13.6945C0.664731 13.1788 0.375 12.4793 0.375 11.75V3.5C0.375 2.77065 0.664731 2.07118 1.18046 1.55546C1.69618 1.03973 2.39565 0.75 3.125 0.75H16.875C17.6043 0.75 18.3038 1.03973 18.8195 1.55546C19.3353 2.07118 19.625 2.77065 19.625 3.5V11.75C19.625 12.4793 19.3353 13.1788 18.8195 13.6945C18.3038 14.2103 17.6043 14.5 16.875 14.5H13.5475L11.1962 18.625Z" fill="currentColor"/>
182 <path d="M4.5 4.875H15.5V6.25H4.5V4.875ZM4.5 9H11.375V10.375H4.5V9Z" fill="currentColor"/> 191 <path d="M4.5 4.875H15.5V6.25H4.5V4.875ZM4.5 9H11.375V10.375H4.5V9Z" fill="currentColor"/>
183 </symbol> 192 </symbol>
184 193
185 <symbol id="cabinet-6" viewBox="0 0 20 21" fill="none"> 194 <symbol id="cabinet-6" viewBox="0 0 20 21" fill="none">
186 <path d="M5.87535 20.3125H3.12535C2.76101 20.3114 2.4119 20.1662 2.15428 19.9086C1.89665 19.6509 1.75143 19.3018 1.75035 18.9375V14.125C1.38601 14.1239 1.0369 13.9787 0.779277 13.7211C0.52165 13.4634 0.376435 13.1143 0.375347 12.75V8.625C0.370309 8.35276 0.420216 8.08231 0.522082 7.8298C0.623949 7.57728 0.775685 7.34791 0.968219 7.15537C1.16075 6.96284 1.39013 6.8111 1.64264 6.70924C1.89515 6.60737 2.16561 6.55746 2.43785 6.5625H6.56285C6.83508 6.55746 7.10554 6.60737 7.35805 6.70924C7.61056 6.8111 7.83994 6.96284 8.03247 7.15537C8.22501 7.34791 8.37674 7.57728 8.47861 7.8298C8.58048 8.08231 8.63038 8.35276 8.62535 8.625V12.75C8.62426 13.1143 8.47904 13.4634 8.22142 13.7211C7.96379 13.9787 7.61469 14.1239 7.25035 14.125V18.9375C7.24926 19.3018 7.10404 19.6509 6.84642 19.9086C6.58879 20.1662 6.23969 20.3114 5.87535 20.3125ZM2.43785 7.9375C2.34612 7.93199 2.25428 7.94599 2.16837 7.97859C2.08246 8.01119 2.00444 8.06165 1.93946 8.12662C1.87449 8.19159 1.82404 8.26961 1.79144 8.35552C1.75884 8.44143 1.74483 8.53328 1.75035 8.625V12.75H3.12535V18.9375H5.87535V12.75H7.25035V8.625C7.25586 8.53328 7.24186 8.44143 7.20926 8.35552C7.17666 8.26961 7.1262 8.19159 7.06123 8.12662C6.99625 8.06165 6.91824 8.01119 6.83233 7.97859C6.74642 7.94599 6.65457 7.93199 6.56285 7.9375H2.43785ZM4.50035 5.875C3.95645 5.875 3.42476 5.71372 2.97253 5.41154C2.52029 5.10937 2.16782 4.67988 1.95968 4.17738C1.75154 3.67488 1.69708 3.12195 1.80319 2.5885C1.9093 2.05506 2.17121 1.56505 2.5558 1.18046C2.9404 0.795863 3.4304 0.533951 3.96385 0.427842C4.4973 0.321732 5.05023 0.376192 5.55273 0.584333C6.05522 0.792473 6.48471 1.14495 6.78689 1.59718C7.08906 2.04942 7.25035 2.5811 7.25035 3.125C7.24944 3.85407 6.95941 4.55301 6.44389 5.06854C5.92836 5.58407 5.22941 5.87409 4.50035 5.875ZM4.50035 1.75C4.2284 1.75 3.96256 1.83064 3.73644 1.98173C3.51032 2.13282 3.33408 2.34756 3.23001 2.59881C3.12594 2.85006 3.09871 3.12653 3.15177 3.39325C3.20482 3.65997 3.33578 3.90498 3.52807 4.09727C3.72037 4.28957 3.96537 4.42053 4.2321 4.47358C4.49882 4.52664 4.77529 4.49941 5.02654 4.39534C5.27778 4.29127 5.49253 4.11503 5.64362 3.88891C5.7947 3.66279 5.87535 3.39695 5.87535 3.125C5.87498 2.76044 5.73 2.41092 5.47222 2.15313C5.21443 1.89535 4.86491 1.75037 4.50035 1.75ZM18.777 1.926C18.2599 1.40061 17.562 1.09217 16.8254 1.06355C16.0888 1.03494 15.3691 1.2883 14.8128 1.772C14.2566 1.2883 13.5368 1.03494 12.8003 1.06355C12.0637 1.09217 11.3658 1.40061 10.8487 1.926C10.3052 2.48097 10.0008 3.22683 10.0008 4.00363C10.0008 4.78042 10.3052 5.52628 10.8487 6.08125L14.8115 10.0963L14.8128 10.0949L14.8142 10.0956L18.777 6.08125C19.3205 5.52628 19.6249 4.78042 19.6249 4.00363C19.6249 3.22683 19.3205 2.48097 18.777 1.926ZM17.798 5.11531L14.8142 8.13825L14.8128 8.13688L14.8115 8.13825L11.8277 5.11531C11.5364 4.81862 11.3732 4.41943 11.3732 4.00363C11.3732 3.58782 11.5364 3.18863 11.8277 2.89194C12.1182 2.60955 12.5074 2.45157 12.9126 2.45157C13.3178 2.45157 13.7069 2.60955 13.9975 2.89194L14.8094 3.72175L14.8128 3.71831L14.8163 3.72175L15.6275 2.89194C15.9181 2.60934 16.3074 2.45123 16.7128 2.45123C17.1181 2.45123 17.5074 2.60934 17.798 2.89194C18.0893 3.18863 18.2525 3.58782 18.2525 4.00363C18.2525 4.41943 18.0893 4.81862 17.798 5.11531Z" fill="currentColor"/> 195 <path d="M5.87535 20.3125H3.12535C2.76101 20.3114 2.4119 20.1662 2.15428 19.9086C1.89665 19.6509 1.75143 19.3018 1.75035 18.9375V14.125C1.38601 14.1239 1.0369 13.9787 0.779277 13.7211C0.52165 13.4634 0.376435 13.1143 0.375347 12.75V8.625C0.370309 8.35276 0.420216 8.08231 0.522082 7.8298C0.623949 7.57728 0.775685 7.34791 0.968219 7.15537C1.16075 6.96284 1.39013 6.8111 1.64264 6.70924C1.89515 6.60737 2.16561 6.55746 2.43785 6.5625H6.56285C6.83508 6.55746 7.10554 6.60737 7.35805 6.70924C7.61056 6.8111 7.83994 6.96284 8.03247 7.15537C8.22501 7.34791 8.37674 7.57728 8.47861 7.8298C8.58048 8.08231 8.63038 8.35276 8.62535 8.625V12.75C8.62426 13.1143 8.47904 13.4634 8.22142 13.7211C7.96379 13.9787 7.61469 14.1239 7.25035 14.125V18.9375C7.24926 19.3018 7.10404 19.6509 6.84642 19.9086C6.58879 20.1662 6.23969 20.3114 5.87535 20.3125ZM2.43785 7.9375C2.34612 7.93199 2.25428 7.94599 2.16837 7.97859C2.08246 8.01119 2.00444 8.06165 1.93946 8.12662C1.87449 8.19159 1.82404 8.26961 1.79144 8.35552C1.75884 8.44143 1.74483 8.53328 1.75035 8.625V12.75H3.12535V18.9375H5.87535V12.75H7.25035V8.625C7.25586 8.53328 7.24186 8.44143 7.20926 8.35552C7.17666 8.26961 7.1262 8.19159 7.06123 8.12662C6.99625 8.06165 6.91824 8.01119 6.83233 7.97859C6.74642 7.94599 6.65457 7.93199 6.56285 7.9375H2.43785ZM4.50035 5.875C3.95645 5.875 3.42476 5.71372 2.97253 5.41154C2.52029 5.10937 2.16782 4.67988 1.95968 4.17738C1.75154 3.67488 1.69708 3.12195 1.80319 2.5885C1.9093 2.05506 2.17121 1.56505 2.5558 1.18046C2.9404 0.795863 3.4304 0.533951 3.96385 0.427842C4.4973 0.321732 5.05023 0.376192 5.55273 0.584333C6.05522 0.792473 6.48471 1.14495 6.78689 1.59718C7.08906 2.04942 7.25035 2.5811 7.25035 3.125C7.24944 3.85407 6.95941 4.55301 6.44389 5.06854C5.92836 5.58407 5.22941 5.87409 4.50035 5.875ZM4.50035 1.75C4.2284 1.75 3.96256 1.83064 3.73644 1.98173C3.51032 2.13282 3.33408 2.34756 3.23001 2.59881C3.12594 2.85006 3.09871 3.12653 3.15177 3.39325C3.20482 3.65997 3.33578 3.90498 3.52807 4.09727C3.72037 4.28957 3.96537 4.42053 4.2321 4.47358C4.49882 4.52664 4.77529 4.49941 5.02654 4.39534C5.27778 4.29127 5.49253 4.11503 5.64362 3.88891C5.7947 3.66279 5.87535 3.39695 5.87535 3.125C5.87498 2.76044 5.73 2.41092 5.47222 2.15313C5.21443 1.89535 4.86491 1.75037 4.50035 1.75ZM18.777 1.926C18.2599 1.40061 17.562 1.09217 16.8254 1.06355C16.0888 1.03494 15.3691 1.2883 14.8128 1.772C14.2566 1.2883 13.5368 1.03494 12.8003 1.06355C12.0637 1.09217 11.3658 1.40061 10.8487 1.926C10.3052 2.48097 10.0008 3.22683 10.0008 4.00363C10.0008 4.78042 10.3052 5.52628 10.8487 6.08125L14.8115 10.0963L14.8128 10.0949L14.8142 10.0956L18.777 6.08125C19.3205 5.52628 19.6249 4.78042 19.6249 4.00363C19.6249 3.22683 19.3205 2.48097 18.777 1.926ZM17.798 5.11531L14.8142 8.13825L14.8128 8.13688L14.8115 8.13825L11.8277 5.11531C11.5364 4.81862 11.3732 4.41943 11.3732 4.00363C11.3732 3.58782 11.5364 3.18863 11.8277 2.89194C12.1182 2.60955 12.5074 2.45157 12.9126 2.45157C13.3178 2.45157 13.7069 2.60955 13.9975 2.89194L14.8094 3.72175L14.8128 3.71831L14.8163 3.72175L15.6275 2.89194C15.9181 2.60934 16.3074 2.45123 16.7128 2.45123C17.1181 2.45123 17.5074 2.60934 17.798 2.89194C18.0893 3.18863 18.2525 3.58782 18.2525 4.00363C18.2525 4.41943 18.0893 4.81862 17.798 5.11531Z" fill="currentColor"/>
187 </symbol> 196 </symbol>
188 197
189 <symbol id="cabinet-7" viewBox="0 0 17 20" fill="none"> 198 <symbol id="cabinet-7" viewBox="0 0 17 20" fill="none">
190 <path d="M3.54036 17.8573C3.93157 17.8573 4.2487 17.5375 4.2487 17.143C4.2487 16.7485 3.93157 16.4287 3.54036 16.4287C3.14916 16.4287 2.83203 16.7485 2.83203 17.143C2.83203 17.5375 3.14916 17.8573 3.54036 17.8573Z" fill="currentColor"/> 199 <path d="M3.54036 17.8573C3.93157 17.8573 4.2487 17.5375 4.2487 17.143C4.2487 16.7485 3.93157 16.4287 3.54036 16.4287C3.14916 16.4287 2.83203 16.7485 2.83203 17.143C2.83203 17.5375 3.14916 17.8573 3.54036 17.8573Z" fill="currentColor"/>
191 <path d="M15.5833 19.9999H1.41667C1.04106 19.9996 0.680942 19.8489 0.415346 19.5811C0.149751 19.3133 0.000375046 18.9501 0 18.5714V15.7142C0.000375046 15.3355 0.149751 14.9723 0.415346 14.7045C0.680942 14.4367 1.04106 14.286 1.41667 14.2856H15.5833C15.9589 14.286 16.3191 14.4367 16.5847 14.7045C16.8502 14.9723 16.9996 15.3355 17 15.7142V18.5714C16.9996 18.9501 16.8502 19.3133 16.5847 19.5811C16.3191 19.8489 15.9589 19.9996 15.5833 19.9999ZM1.41667 15.7142V18.5714H15.5833V15.7142H1.41667Z" fill="currentColor"/> 200 <path d="M15.5833 19.9999H1.41667C1.04106 19.9996 0.680942 19.8489 0.415346 19.5811C0.149751 19.3133 0.000375046 18.9501 0 18.5714V15.7142C0.000375046 15.3355 0.149751 14.9723 0.415346 14.7045C0.680942 14.4367 1.04106 14.286 1.41667 14.2856H15.5833C15.9589 14.286 16.3191 14.4367 16.5847 14.7045C16.8502 14.9723 16.9996 15.3355 17 15.7142V18.5714C16.9996 18.9501 16.8502 19.3133 16.5847 19.5811C16.3191 19.8489 15.9589 19.9996 15.5833 19.9999ZM1.41667 15.7142V18.5714H15.5833V15.7142H1.41667Z" fill="currentColor"/>
192 <path d="M3.54036 10.7142C3.93157 10.7142 4.2487 10.3944 4.2487 9.99993C4.2487 9.60544 3.93157 9.28564 3.54036 9.28564C3.14916 9.28564 2.83203 9.60544 2.83203 9.99993C2.83203 10.3944 3.14916 10.7142 3.54036 10.7142Z" fill="currentColor"/> 201 <path d="M3.54036 10.7142C3.93157 10.7142 4.2487 10.3944 4.2487 9.99993C4.2487 9.60544 3.93157 9.28564 3.54036 9.28564C3.14916 9.28564 2.83203 9.60544 2.83203 9.99993C2.83203 10.3944 3.14916 10.7142 3.54036 10.7142Z" fill="currentColor"/>
193 <path d="M15.5833 12.8574H1.41667C1.04106 12.857 0.680942 12.7063 0.415346 12.4385C0.149751 12.1707 0.000375046 11.8075 0 11.4288V8.57164C0.000375046 8.19287 0.149751 7.82973 0.415346 7.5619C0.680942 7.29408 1.04106 7.14344 1.41667 7.14307H15.5833C15.9589 7.14344 16.3191 7.29408 16.5847 7.5619C16.8502 7.82973 16.9996 8.19287 17 8.57164V11.4288C16.9996 11.8075 16.8502 12.1707 16.5847 12.4385C16.3191 12.7063 15.9589 12.857 15.5833 12.8574ZM1.41667 8.57164V11.4288H15.5833V8.57164H1.41667Z" fill="currentColor"/> 202 <path d="M15.5833 12.8574H1.41667C1.04106 12.857 0.680942 12.7063 0.415346 12.4385C0.149751 12.1707 0.000375046 11.8075 0 11.4288V8.57164C0.000375046 8.19287 0.149751 7.82973 0.415346 7.5619C0.680942 7.29408 1.04106 7.14344 1.41667 7.14307H15.5833C15.9589 7.14344 16.3191 7.29408 16.5847 7.5619C16.8502 7.82973 16.9996 8.19287 17 8.57164V11.4288C16.9996 11.8075 16.8502 12.1707 16.5847 12.4385C16.3191 12.7063 15.9589 12.857 15.5833 12.8574ZM1.41667 8.57164V11.4288H15.5833V8.57164H1.41667Z" fill="currentColor"/>
194 <path d="M3.54036 3.57164C3.93157 3.57164 4.2487 3.25184 4.2487 2.85735C4.2487 2.46286 3.93157 2.14307 3.54036 2.14307C3.14916 2.14307 2.83203 2.46286 2.83203 2.85735C2.83203 3.25184 3.14916 3.57164 3.54036 3.57164Z" fill="currentColor"/> 203 <path d="M3.54036 3.57164C3.93157 3.57164 4.2487 3.25184 4.2487 2.85735C4.2487 2.46286 3.93157 2.14307 3.54036 2.14307C3.14916 2.14307 2.83203 2.46286 2.83203 2.85735C2.83203 3.25184 3.14916 3.57164 3.54036 3.57164Z" fill="currentColor"/>
195 <path d="M15.5833 5.71429H1.41667C1.04106 5.71391 0.680942 5.56328 0.415346 5.29545C0.149751 5.02762 0.000375046 4.66448 0 4.28571V1.42857C0.000375046 1.04981 0.149751 0.686664 0.415346 0.418837C0.680942 0.151009 1.04106 0.000378198 1.41667 0H15.5833C15.9589 0.000378198 16.3191 0.151009 16.5847 0.418837C16.8502 0.686664 16.9996 1.04981 17 1.42857V4.28571C16.9996 4.66448 16.8502 5.02762 16.5847 5.29545C16.3191 5.56328 15.9589 5.71391 15.5833 5.71429ZM1.41667 1.42857V4.28571H15.5833V1.42857H1.41667Z" fill="currentColor"/> 204 <path d="M15.5833 5.71429H1.41667C1.04106 5.71391 0.680942 5.56328 0.415346 5.29545C0.149751 5.02762 0.000375046 4.66448 0 4.28571V1.42857C0.000375046 1.04981 0.149751 0.686664 0.415346 0.418837C0.680942 0.151009 1.04106 0.000378198 1.41667 0H15.5833C15.9589 0.000378198 16.3191 0.151009 16.5847 0.418837C16.8502 0.686664 16.9996 1.04981 17 1.42857V4.28571C16.9996 4.66448 16.8502 5.02762 16.5847 5.29545C16.3191 5.56328 15.9589 5.71391 15.5833 5.71429ZM1.41667 1.42857V4.28571H15.5833V1.42857H1.41667Z" fill="currentColor"/>
196 </symbol> 205 </symbol>
197 206
198 <symbol id="cabinet-8" viewBox="0 0 28 27" fill="none"> 207 <symbol id="cabinet-8" viewBox="0 0 28 27" fill="none">
199 <g clip-path="url(#clip0_660_17902)"> 208 <g clip-path="url(#clip0_660_17902)">
200 <path d="M3.54036 24.8573C3.93157 24.8573 4.2487 24.5375 4.2487 24.143C4.2487 23.7485 3.93157 23.4287 3.54036 23.4287C3.14916 23.4287 2.83203 23.7485 2.83203 24.143C2.83203 24.5375 3.14916 24.8573 3.54036 24.8573Z" fill="currentColor"/> 209 <path d="M3.54036 24.8573C3.93157 24.8573 4.2487 24.5375 4.2487 24.143C4.2487 23.7485 3.93157 23.4287 3.54036 23.4287C3.14916 23.4287 2.83203 23.7485 2.83203 24.143C2.83203 24.5375 3.14916 24.8573 3.54036 24.8573Z" fill="currentColor"/>
201 <path d="M15.5833 26.9999H1.41667C1.04106 26.9996 0.680942 26.8489 0.415346 26.5811C0.149751 26.3133 0.000375046 25.9501 0 25.5714V22.7142C0.000375046 22.3355 0.149751 21.9723 0.415346 21.7045C0.680942 21.4367 1.04106 21.286 1.41667 21.2856H15.5833C15.9589 21.286 16.3191 21.4367 16.5847 21.7045C16.8502 21.9723 16.9996 22.3355 17 22.7142V25.5714C16.9996 25.9501 16.8502 26.3133 16.5847 26.5811C16.3191 26.8489 15.9589 26.9996 15.5833 26.9999ZM1.41667 22.7142V25.5714H15.5833V22.7142H1.41667Z" fill="currentColor"/> 210 <path d="M15.5833 26.9999H1.41667C1.04106 26.9996 0.680942 26.8489 0.415346 26.5811C0.149751 26.3133 0.000375046 25.9501 0 25.5714V22.7142C0.000375046 22.3355 0.149751 21.9723 0.415346 21.7045C0.680942 21.4367 1.04106 21.286 1.41667 21.2856H15.5833C15.9589 21.286 16.3191 21.4367 16.5847 21.7045C16.8502 21.9723 16.9996 22.3355 17 22.7142V25.5714C16.9996 25.9501 16.8502 26.3133 16.5847 26.5811C16.3191 26.8489 15.9589 26.9996 15.5833 26.9999ZM1.41667 22.7142V25.5714H15.5833V22.7142H1.41667Z" fill="currentColor"/>
202 <path d="M3.54036 17.7142C3.93157 17.7142 4.2487 17.3944 4.2487 16.9999C4.2487 16.6054 3.93157 16.2856 3.54036 16.2856C3.14916 16.2856 2.83203 16.6054 2.83203 16.9999C2.83203 17.3944 3.14916 17.7142 3.54036 17.7142Z" fill="currentColor"/> 211 <path d="M3.54036 17.7142C3.93157 17.7142 4.2487 17.3944 4.2487 16.9999C4.2487 16.6054 3.93157 16.2856 3.54036 16.2856C3.14916 16.2856 2.83203 16.6054 2.83203 16.9999C2.83203 17.3944 3.14916 17.7142 3.54036 17.7142Z" fill="currentColor"/>
203 <path d="M15.5833 19.8574H1.41667C1.04106 19.857 0.680942 19.7063 0.415346 19.4385C0.149751 19.1707 0.000375046 18.8075 0 18.4288V15.5716C0.000375046 15.1929 0.149751 14.8297 0.415346 14.5619C0.680942 14.2941 1.04106 14.1434 1.41667 14.1431H15.5833C15.9589 14.1434 16.3191 14.2941 16.5847 14.5619C16.8502 14.8297 16.9996 15.1929 17 15.5716V18.4288C16.9996 18.8075 16.8502 19.1707 16.5847 19.4385C16.3191 19.7063 15.9589 19.857 15.5833 19.8574ZM1.41667 15.5716V18.4288H15.5833V15.5716H1.41667Z" fill="currentColor"/> 212 <path d="M15.5833 19.8574H1.41667C1.04106 19.857 0.680942 19.7063 0.415346 19.4385C0.149751 19.1707 0.000375046 18.8075 0 18.4288V15.5716C0.000375046 15.1929 0.149751 14.8297 0.415346 14.5619C0.680942 14.2941 1.04106 14.1434 1.41667 14.1431H15.5833C15.9589 14.1434 16.3191 14.2941 16.5847 14.5619C16.8502 14.8297 16.9996 15.1929 17 15.5716V18.4288C16.9996 18.8075 16.8502 19.1707 16.5847 19.4385C16.3191 19.7063 15.9589 19.857 15.5833 19.8574ZM1.41667 15.5716V18.4288H15.5833V15.5716H1.41667Z" fill="currentColor"/>
204 <path d="M3.54036 10.5716C3.93157 10.5716 4.2487 10.2518 4.2487 9.85735C4.2487 9.46286 3.93157 9.14307 3.54036 9.14307C3.14916 9.14307 2.83203 9.46286 2.83203 9.85735C2.83203 10.2518 3.14916 10.5716 3.54036 10.5716Z" fill="currentColor"/> 213 <path d="M3.54036 10.5716C3.93157 10.5716 4.2487 10.2518 4.2487 9.85735C4.2487 9.46286 3.93157 9.14307 3.54036 9.14307C3.14916 9.14307 2.83203 9.46286 2.83203 9.85735C2.83203 10.2518 3.14916 10.5716 3.54036 10.5716Z" fill="currentColor"/>
205 <path d="M15.5833 12.7143H1.41667C1.04106 12.7139 0.680942 12.5633 0.415346 12.2954C0.149751 12.0276 0.000375046 11.6645 0 11.2857V8.42857C0.000375046 8.04981 0.149751 7.68666 0.415346 7.41884C0.680942 7.15101 1.04106 7.00038 1.41667 7H15.5833C15.9589 7.00038 16.3191 7.15101 16.5847 7.41884C16.8502 7.68666 16.9996 8.04981 17 8.42857V11.2857C16.9996 11.6645 16.8502 12.0276 16.5847 12.2954C16.3191 12.5633 15.9589 12.7139 15.5833 12.7143ZM1.41667 8.42857V11.2857H15.5833V8.42857H1.41667Z" fill="currentColor"/> 214 <path d="M15.5833 12.7143H1.41667C1.04106 12.7139 0.680942 12.5633 0.415346 12.2954C0.149751 12.0276 0.000375046 11.6645 0 11.2857V8.42857C0.000375046 8.04981 0.149751 7.68666 0.415346 7.41884C0.680942 7.15101 1.04106 7.00038 1.41667 7H15.5833C15.9589 7.00038 16.3191 7.15101 16.5847 7.41884C16.8502 7.68666 16.9996 8.04981 17 8.42857V11.2857C16.9996 11.6645 16.8502 12.0276 16.5847 12.2954C16.3191 12.5633 15.9589 12.7139 15.5833 12.7143ZM1.41667 8.42857V11.2857H15.5833V8.42857H1.41667Z" fill="currentColor"/>
206 <rect x="8" y="6" width="10" height="13" rx="2" fill="white"/> 215 <rect x="8" y="6" width="10" height="13" rx="2" fill="white"/>
207 </g> 216 </g>
208 <g clip-path="url(#clip1_660_17902)"> 217 <g clip-path="url(#clip1_660_17902)">
209 <path d="M25.4861 20.1667H8.68056C8.23498 20.1663 7.80778 20.0144 7.49271 19.7443C7.17765 19.4743 7.00044 19.1081 7 18.7262V1.44048C7.00044 1.05856 7.17765 0.692386 7.49271 0.422327C7.80778 0.152268 8.23498 0.000381349 8.68056 0H25.4861C25.9317 0.000381349 26.3589 0.152268 26.674 0.422327C26.989 0.692386 27.1662 1.05856 27.1667 1.44048V18.7262C27.1662 19.1081 26.989 19.4743 26.674 19.7443C26.3589 20.0144 25.9317 20.1663 25.4861 20.1667ZM8.68056 1.44048V18.7262H25.4861V1.44048H8.68056Z" fill="currentColor"/> 218 <path d="M25.4861 20.1667H8.68056C8.23498 20.1663 7.80778 20.0144 7.49271 19.7443C7.17765 19.4743 7.00044 19.1081 7 18.7262V1.44048C7.00044 1.05856 7.17765 0.692386 7.49271 0.422327C7.80778 0.152268 8.23498 0.000381349 8.68056 0H25.4861C25.9317 0.000381349 26.3589 0.152268 26.674 0.422327C26.989 0.692386 27.1662 1.05856 27.1667 1.44048V18.7262C27.1662 19.1081 26.989 19.4743 26.674 19.7443C26.3589 20.0144 25.9317 20.1663 25.4861 20.1667ZM8.68056 1.44048V18.7262H25.4861V1.44048H8.68056Z" fill="currentColor"/>
210 <path d="M11.582 8.64307H21.6654V10.2145H11.582V8.64307ZM11.582 12.5716H17.9987V14.1431H11.582V12.5716Z" fill="currentColor"/> 219 <path d="M11.582 8.64307H21.6654V10.2145H11.582V8.64307ZM11.582 12.5716H17.9987V14.1431H11.582V12.5716Z" fill="currentColor"/>
211 </g> 220 </g>
212 <defs> 221 <defs>
213 <clipPath id="clip0_660_17902"> 222 <clipPath id="clip0_660_17902">
214 <rect width="17" height="20" fill="white" transform="translate(0 7)"/> 223 <rect width="17" height="20" fill="white" transform="translate(0 7)"/>
215 </clipPath> 224 </clipPath>
216 <clipPath id="clip1_660_17902"> 225 <clipPath id="clip1_660_17902">
217 <rect width="21" height="21" fill="white" transform="translate(7)"/> 226 <rect width="21" height="21" fill="white" transform="translate(7)"/>
218 </clipPath> 227 </clipPath>
219 </defs> 228 </defs>
220 </symbol> 229 </symbol>
221 230
222 <symbol id="cabinet-9" viewBox="0 0 24 25" fill="none"> 231 <symbol id="cabinet-9" viewBox="0 0 24 25" fill="none">
223 <path d="M22.2868 0.0581055H13.7154C12.7725 0.0581055 12.0011 0.808105 12.0011 1.72477V6.72477C12.0011 7.64144 12.7725 8.39144 13.7154 8.39144H15.7725L17.2297 10.8914L18.6868 10.0581L16.7154 6.72477H13.7154V1.72477H22.2868V6.72477H19.7154V8.39144H22.2868C23.2297 8.39144 24.0011 7.64144 24.0011 6.72477V1.72477C24.0011 0.808105 23.2297 0.0581055 22.2868 0.0581055ZM10.8868 24.2248L9.42969 23.3914L12.4297 18.3914H17.144C18.0868 18.3914 18.8583 17.6414 18.8583 16.7248V12.5581H20.5725V16.7248C20.5725 18.5581 19.0297 20.0581 17.144 20.0581H13.3725L10.8868 24.2248Z" fill="currentColor"/> 232 <path d="M22.2868 0.0581055H13.7154C12.7725 0.0581055 12.0011 0.808105 12.0011 1.72477V6.72477C12.0011 7.64144 12.7725 8.39144 13.7154 8.39144H15.7725L17.2297 10.8914L18.6868 10.0581L16.7154 6.72477H13.7154V1.72477H22.2868V6.72477H19.7154V8.39144H22.2868C23.2297 8.39144 24.0011 7.64144 24.0011 6.72477V1.72477C24.0011 0.808105 23.2297 0.0581055 22.2868 0.0581055ZM10.8868 24.2248L9.42969 23.3914L12.4297 18.3914H17.144C18.0868 18.3914 18.8583 17.6414 18.8583 16.7248V12.5581H20.5725V16.7248C20.5725 18.5581 19.0297 20.0581 17.144 20.0581H13.3725L10.8868 24.2248Z" fill="currentColor"/>
224 <path d="M6.85714 13.3918C7.33053 13.3918 7.71429 13.0187 7.71429 12.5584C7.71429 12.0982 7.33053 11.7251 6.85714 11.7251C6.38376 11.7251 6 12.0982 6 12.5584C6 13.0187 6.38376 13.3918 6.85714 13.3918Z" fill="currentColor"/> 233 <path d="M6.85714 13.3918C7.33053 13.3918 7.71429 13.0187 7.71429 12.5584C7.71429 12.0982 7.33053 11.7251 6.85714 11.7251C6.38376 11.7251 6 12.0982 6 12.5584C6 13.0187 6.38376 13.3918 6.85714 13.3918Z" fill="currentColor"/>
225 <path d="M10.2868 13.3918C10.7602 13.3918 11.144 13.0187 11.144 12.5584C11.144 12.0982 10.7602 11.7251 10.2868 11.7251C9.81344 11.7251 9.42969 12.0982 9.42969 12.5584C9.42969 13.0187 9.81344 13.3918 10.2868 13.3918Z" fill="currentColor"/> 234 <path d="M10.2868 13.3918C10.7602 13.3918 11.144 13.0187 11.144 12.5584C11.144 12.0982 10.7602 11.7251 10.2868 11.7251C9.81344 11.7251 9.42969 12.0982 9.42969 12.5584C9.42969 13.0187 9.81344 13.3918 10.2868 13.3918Z" fill="currentColor"/>
226 <path d="M13.7126 13.3918C14.186 13.3918 14.5698 13.0187 14.5698 12.5584C14.5698 12.0982 14.186 11.7251 13.7126 11.7251C13.2392 11.7251 12.8555 12.0982 12.8555 12.5584C12.8555 13.0187 13.2392 13.3918 13.7126 13.3918Z" fill="currentColor"/> 235 <path d="M13.7126 13.3918C14.186 13.3918 14.5698 13.0187 14.5698 12.5584C14.5698 12.0982 14.186 11.7251 13.7126 11.7251C13.2392 11.7251 12.8555 12.0982 12.8555 12.5584C12.8555 13.0187 13.2392 13.3918 13.7126 13.3918Z" fill="currentColor"/>
227 <path d="M8.57143 20.0581H3.42857C1.54286 20.0581 0 18.5581 0 16.7248V8.39144C0 6.55811 1.54286 5.05811 3.42857 5.05811H10.2857V6.72477H3.42857C2.48571 6.72477 1.71429 7.47477 1.71429 8.39144V16.7248C1.71429 17.6414 2.48571 18.3914 3.42857 18.3914H8.57143V20.0581Z" fill="currentColor"/> 236 <path d="M8.57143 20.0581H3.42857C1.54286 20.0581 0 18.5581 0 16.7248V8.39144C0 6.55811 1.54286 5.05811 3.42857 5.05811H10.2857V6.72477H3.42857C2.48571 6.72477 1.71429 7.47477 1.71429 8.39144V16.7248C1.71429 17.6414 2.48571 18.3914 3.42857 18.3914H8.57143V20.0581Z" fill="currentColor"/>
228 </symbol> 237 </symbol>
229 238
230 <symbol id="cabinet-10" viewBox="0 0 24 26" fill="none"> 239 <symbol id="cabinet-10" viewBox="0 0 24 26" fill="none">
231 <path d="M3.42969 13.8584H10.2868V15.5754H3.42969V13.8584Z" fill="currentColor"/> 240 <path d="M3.42969 13.8584H10.2868V15.5754H3.42969V13.8584Z" fill="currentColor"/>
232 <path d="M0.857143 15.5754C1.33053 15.5754 1.71429 15.1911 1.71429 14.7169C1.71429 14.2428 1.33053 13.8584 0.857143 13.8584C0.383756 13.8584 0 14.2428 0 14.7169C0 15.1911 0.383756 15.5754 0.857143 15.5754Z" fill="currentColor"/> 241 <path d="M0.857143 15.5754C1.33053 15.5754 1.71429 15.1911 1.71429 14.7169C1.71429 14.2428 1.33053 13.8584 0.857143 13.8584C0.383756 13.8584 0 14.2428 0 14.7169C0 15.1911 0.383756 15.5754 0.857143 15.5754Z" fill="currentColor"/>
233 <path d="M9.42746 12.1413C9.90084 12.1413 10.2846 11.757 10.2846 11.2828C10.2846 10.8087 9.90084 10.4243 9.42746 10.4243C8.95407 10.4243 8.57031 10.8087 8.57031 11.2828C8.57031 11.757 8.95407 12.1413 9.42746 12.1413Z" fill="currentColor"/> 242 <path d="M9.42746 12.1413C9.90084 12.1413 10.2846 11.757 10.2846 11.2828C10.2846 10.8087 9.90084 10.4243 9.42746 10.4243C8.95407 10.4243 8.57031 10.8087 8.57031 11.2828C8.57031 11.757 8.95407 12.1413 9.42746 12.1413Z" fill="currentColor"/>
234 <path d="M0 10.4243H6.85714V12.1413H0V10.4243ZM3.42857 6.99023H10.2857V8.70727H3.42857V6.99023Z" fill="currentColor"/> 243 <path d="M0 10.4243H6.85714V12.1413H0V10.4243ZM3.42857 6.99023H10.2857V8.70727H3.42857V6.99023Z" fill="currentColor"/>
235 <path d="M0.857143 8.70727C1.33053 8.70727 1.71429 8.3229 1.71429 7.84875C1.71429 7.37461 1.33053 6.99023 0.857143 6.99023C0.383756 6.99023 0 7.37461 0 7.84875C0 8.3229 0.383756 8.70727 0.857143 8.70727Z" fill="currentColor"/> 244 <path d="M0.857143 8.70727C1.33053 8.70727 1.71429 8.3229 1.71429 7.84875C1.71429 7.37461 1.33053 6.99023 0.857143 6.99023C0.383756 6.99023 0 7.37461 0 7.84875C0 8.3229 0.383756 8.70727 0.857143 8.70727Z" fill="currentColor"/>
236 <path d="M24 23.8175L17.6571 17.4645C18.9428 15.7474 19.7143 13.6011 19.7143 11.2832C19.7143 5.61695 15.0857 0.980957 9.42856 0.980957C6.59999 0.980957 3.94285 2.09703 1.97142 4.24332L3.25713 5.44524C4.79999 3.64236 7.02856 2.69799 9.42856 2.69799C14.1428 2.69799 18 6.56131 18 11.2832C18 16.005 14.1428 19.8683 9.42856 19.8683C6.85713 19.8683 4.45713 18.7522 2.82856 16.7777L1.54285 17.8937C3.42856 20.2117 6.34285 21.5854 9.42856 21.5854C12.1714 21.5854 14.6571 20.4693 16.5428 18.7522L22.8 25.0194L24 23.8175Z" fill="currentColor"/> 245 <path d="M24 23.8175L17.6571 17.4645C18.9428 15.7474 19.7143 13.6011 19.7143 11.2832C19.7143 5.61695 15.0857 0.980957 9.42856 0.980957C6.59999 0.980957 3.94285 2.09703 1.97142 4.24332L3.25713 5.44524C4.79999 3.64236 7.02856 2.69799 9.42856 2.69799C14.1428 2.69799 18 6.56131 18 11.2832C18 16.005 14.1428 19.8683 9.42856 19.8683C6.85713 19.8683 4.45713 18.7522 2.82856 16.7777L1.54285 17.8937C3.42856 20.2117 6.34285 21.5854 9.42856 21.5854C12.1714 21.5854 14.6571 20.4693 16.5428 18.7522L22.8 25.0194L24 23.8175Z" fill="currentColor"/>
237 </symbol> 246 </symbol>
238 247
239 <symbol id="cabinet-11" viewBox="0 0 23 24" fill="none"> 248 <symbol id="cabinet-11" viewBox="0 0 23 24" fill="none">
240 <path d="M11.4987 23.9999C9.41376 23.9999 7.37563 23.3806 5.64207 22.2202C3.9085 21.0599 2.55735 19.4106 1.75947 17.481C0.961599 15.5514 0.752839 13.4282 1.15959 11.3797C1.56634 9.33129 2.57034 7.44968 4.04462 5.97284C5.5189 4.496 7.39724 3.49025 9.44213 3.08279C11.487 2.67534 13.6066 2.88446 15.5328 3.68372C17.4591 4.48298 19.1054 5.83648 20.2638 7.57307C21.4221 9.30965 22.0404 11.3513 22.0404 13.4399C22.0404 16.2406 20.9297 18.9266 18.9528 20.9069C16.9758 22.8873 14.2945 23.9999 11.4987 23.9999ZM11.4987 4.79989C9.79284 4.79989 8.12528 5.30661 6.70691 6.25599C5.28854 7.20537 4.18305 8.55475 3.53024 10.1335C2.87744 11.7123 2.70663 13.4495 3.03943 15.1255C3.37223 16.8015 4.19368 18.341 5.39991 19.5493C6.60613 20.7576 8.14296 21.5805 9.81605 21.9139C11.4891 22.2472 13.2233 22.0761 14.7993 21.4222C16.3754 20.7683 17.7224 19.6609 18.6701 18.24C19.6179 16.8192 20.1237 15.1487 20.1237 13.4399C20.1237 11.1484 19.215 8.9508 17.5975 7.33048C15.98 5.71017 13.7862 4.79989 11.4987 4.79989Z" fill="currentColor"/> 249 <path d="M11.4987 23.9999C9.41376 23.9999 7.37563 23.3806 5.64207 22.2202C3.9085 21.0599 2.55735 19.4106 1.75947 17.481C0.961599 15.5514 0.752839 13.4282 1.15959 11.3797C1.56634 9.33129 2.57034 7.44968 4.04462 5.97284C5.5189 4.496 7.39724 3.49025 9.44213 3.08279C11.487 2.67534 13.6066 2.88446 15.5328 3.68372C17.4591 4.48298 19.1054 5.83648 20.2638 7.57307C21.4221 9.30965 22.0404 11.3513 22.0404 13.4399C22.0404 16.2406 20.9297 18.9266 18.9528 20.9069C16.9758 22.8873 14.2945 23.9999 11.4987 23.9999ZM11.4987 4.79989C9.79284 4.79989 8.12528 5.30661 6.70691 6.25599C5.28854 7.20537 4.18305 8.55475 3.53024 10.1335C2.87744 11.7123 2.70663 13.4495 3.03943 15.1255C3.37223 16.8015 4.19368 18.341 5.39991 19.5493C6.60613 20.7576 8.14296 21.5805 9.81605 21.9139C11.4891 22.2472 13.2233 22.0761 14.7993 21.4222C16.3754 20.7683 17.7224 19.6609 18.6701 18.24C19.6179 16.8192 20.1237 15.1487 20.1237 13.4399C20.1237 11.1484 19.215 8.9508 17.5975 7.33048C15.98 5.71017 13.7862 4.79989 11.4987 4.79989Z" fill="currentColor"/>
241 <path d="M13.9821 17.2799L10.5417 13.8335V7.67988H12.4583V13.0367L15.3333 15.9263L13.9821 17.2799ZM0 4.4082L3.43275 0.962758L4.78975 2.31924L1.357 5.76468L0 4.4082ZM18.2083 2.31156L19.5644 0.955078L22.9962 4.40052L21.6401 5.757L18.2083 2.31156Z" fill="currentColor"/> 250 <path d="M13.9821 17.2799L10.5417 13.8335V7.67988H12.4583V13.0367L15.3333 15.9263L13.9821 17.2799ZM0 4.4082L3.43275 0.962758L4.78975 2.31924L1.357 5.76468L0 4.4082ZM18.2083 2.31156L19.5644 0.955078L22.9962 4.40052L21.6401 5.757L18.2083 2.31156Z" fill="currentColor"/>
242 </symbol> 251 </symbol>
243 252
244 <symbol id="pic" viewBox="0 0 50 50" fill="none"> 253 <symbol id="pic" viewBox="0 0 50 50" fill="none">
245 <path d="M43.75 0H6.25C2.79953 0.00320425 0.00320425 2.79953 0 6.25V43.75C0.00320425 47.2005 2.79953 49.9968 6.25 50H43.75C47.2005 49.9968 49.9968 47.2005 50 43.75V6.25C49.9968 2.79953 47.2005 0.00320425 43.75 0ZM6.25 47.5C4.17984 47.4977 2.50229 45.8202 2.5 43.75V30.6885L11.9067 21.2817C13.6168 19.5776 16.3832 19.5776 18.0933 21.2817L44.2619 47.448C44.093 47.4715 43.9253 47.4999 43.75 47.5H6.25ZM47.5 43.75C47.4989 44.6959 47.1364 45.5498 46.5582 46.2093L29.2679 28.9204L31.9067 26.2817C33.6168 24.5776 36.3832 24.5776 38.0933 26.2817L47.5 35.6885V43.75ZM47.5 32.1535L39.8608 24.5143C37.1747 21.8337 32.8253 21.8337 30.1392 24.5143L27.5005 27.153L19.8608 19.5142C17.1408 16.9165 12.8592 16.9165 10.1392 19.5142L2.5 27.1533V6.25C2.50229 4.17984 4.17984 2.50229 6.25 2.5H43.75C45.8202 2.50229 47.4977 4.17984 47.5 6.25V32.1535Z" fill="currentColor"/> 254 <path d="M43.75 0H6.25C2.79953 0.00320425 0.00320425 2.79953 0 6.25V43.75C0.00320425 47.2005 2.79953 49.9968 6.25 50H43.75C47.2005 49.9968 49.9968 47.2005 50 43.75V6.25C49.9968 2.79953 47.2005 0.00320425 43.75 0ZM6.25 47.5C4.17984 47.4977 2.50229 45.8202 2.5 43.75V30.6885L11.9067 21.2817C13.6168 19.5776 16.3832 19.5776 18.0933 21.2817L44.2619 47.448C44.093 47.4715 43.9253 47.4999 43.75 47.5H6.25ZM47.5 43.75C47.4989 44.6959 47.1364 45.5498 46.5582 46.2093L29.2679 28.9204L31.9067 26.2817C33.6168 24.5776 36.3832 24.5776 38.0933 26.2817L47.5 35.6885V43.75ZM47.5 32.1535L39.8608 24.5143C37.1747 21.8337 32.8253 21.8337 30.1392 24.5143L27.5005 27.153L19.8608 19.5142C17.1408 16.9165 12.8592 16.9165 10.1392 19.5142L2.5 27.1533V6.25C2.50229 4.17984 4.17984 2.50229 6.25 2.5H43.75C45.8202 2.50229 47.4977 4.17984 47.5 6.25V32.1535Z" fill="currentColor"/>
246 <path d="M32.6963 11.3351C32.6963 13.07 31.2899 14.4765 29.555 14.4765C27.82 14.4765 26.4136 13.07 26.4136 11.3351C26.4136 9.60017 27.82 8.19373 29.555 8.19373C31.2899 8.19373 32.6963 9.60017 32.6963 11.3351Z" fill="currentColor"/> 255 <path d="M32.6963 11.3351C32.6963 13.07 31.2899 14.4765 29.555 14.4765C27.82 14.4765 26.4136 13.07 26.4136 11.3351C26.4136 9.60017 27.82 8.19373 29.555 8.19373C31.2899 8.19373 32.6963 9.60017 32.6963 11.3351Z" fill="currentColor"/>
247 </symbol> 256 </symbol>
248 257
249 <symbol id="plus" viewBox="0 0 16 16" fill="none"> 258 <symbol id="plus" viewBox="0 0 16 16" fill="none">
250 <rect x="7" width="2" height="16" rx="1" fill="currentColor"/> 259 <rect x="7" width="2" height="16" rx="1" fill="currentColor"/>
251 <rect x="16" y="7" width="2" height="16" rx="1" transform="rotate(90 16 7)" fill="currentColor"/> 260 <rect x="16" y="7" width="2" height="16" rx="1" transform="rotate(90 16 7)" fill="currentColor"/>
252 </symbol> 261 </symbol>
253 262
254 <symbol id="leave" viewBox="0 0 18 20" fill="none"> 263 <symbol id="leave" viewBox="0 0 18 20" fill="none">
255 <path d="M2.125 19.625H10.375C10.7396 19.6246 11.0891 19.4797 11.3469 19.2219C11.6047 18.9641 11.7496 18.6146 11.75 18.25V16.1875H10.375V18.25H2.125V1.75H10.375V3.8125H11.75V1.75C11.7496 1.38544 11.6047 1.03591 11.3469 0.77813C11.0891 0.520347 10.7396 0.375364 10.375 0.375H2.125C1.76044 0.375364 1.41091 0.520347 1.15313 0.77813C0.895347 1.03591 0.750364 1.38544 0.75 1.75V18.25C0.750364 18.6146 0.895347 18.9641 1.15313 19.2219C1.41091 19.4797 1.76044 19.6246 2.125 19.625Z" fill="currentColor"/> 264 <path d="M2.125 19.625H10.375C10.7396 19.6246 11.0891 19.4797 11.3469 19.2219C11.6047 18.9641 11.7496 18.6146 11.75 18.25V16.1875H10.375V18.25H2.125V1.75H10.375V3.8125H11.75V1.75C11.7496 1.38544 11.6047 1.03591 11.3469 0.77813C11.0891 0.520347 10.7396 0.375364 10.375 0.375H2.125C1.76044 0.375364 1.41091 0.520347 1.15313 0.77813C0.895347 1.03591 0.750364 1.38544 0.75 1.75V18.25C0.750364 18.6146 0.895347 18.9641 1.15313 19.2219C1.41091 19.4797 1.76044 19.6246 2.125 19.625Z" fill="currentColor"/>
256 <path d="M12.1529 13.1529L14.6183 10.6875H4.875V9.3125H14.6183L12.1529 6.84712L13.125 5.875L17.25 10L13.125 14.125L12.1529 13.1529Z" fill="currentColor"/> 265 <path d="M12.1529 13.1529L14.6183 10.6875H4.875V9.3125H14.6183L12.1529 6.84712L13.125 5.875L17.25 10L13.125 14.125L12.1529 13.1529Z" fill="currentColor"/>
257 </symbol> 266 </symbol>
258 267
259 <symbol id="del" viewBox="0 0 12 16" fill="none"> 268 <symbol id="del" viewBox="0 0 12 16" fill="none">
260 <path d="M11.1231 5.62055L10.8731 13.1874C10.8518 13.8355 10.5788 14.4497 10.1121 14.8998C9.64531 15.3499 9.02153 15.6004 8.37312 15.5981H3.62312C2.97514 15.6004 2.35172 15.3503 1.88503 14.9007C1.41833 14.4512 1.14506 13.8375 1.12312 13.1899L0.873125 5.62055C0.867655 5.45479 0.928257 5.29365 1.0416 5.17257C1.15494 5.05149 1.31174 4.9804 1.4775 4.97493C1.64326 4.96946 1.8044 5.03006 1.92548 5.1434C2.04656 5.25674 2.11766 5.41354 2.12313 5.5793L2.37312 13.1481C2.38557 13.4712 2.52275 13.7769 2.75583 14.001C2.98891 14.2251 3.29978 14.3502 3.62312 14.3499H8.37312C8.69689 14.3501 9.00811 14.2247 9.24126 14.0001C9.47441 13.7754 9.61131 13.4691 9.62312 13.1456L9.87313 5.5793C9.8786 5.41354 9.94969 5.25674 10.0708 5.1434C10.1918 5.03006 10.353 4.96946 10.5187 4.97493C10.6845 4.9804 10.8413 5.05149 10.9546 5.17257C11.068 5.29365 11.1286 5.45479 11.1231 5.62055ZM11.95 3.10243C11.95 3.26819 11.8842 3.42716 11.7669 3.54437C11.6497 3.66158 11.4908 3.72743 11.325 3.72743H0.671875C0.506115 3.72743 0.347143 3.66158 0.229933 3.54437C0.112723 3.42716 0.046875 3.26819 0.046875 3.10243C0.046875 2.93667 0.112723 2.7777 0.229933 2.66049C0.347143 2.54328 0.506115 2.47743 0.671875 2.47743H2.60938C2.8074 2.47796 2.99855 2.4048 3.14561 2.27218C3.29268 2.13955 3.38514 1.95696 3.405 1.75993C3.45112 1.29773 3.66766 0.86926 4.01243 0.557995C4.35721 0.246731 4.80551 0.0749698 5.27 0.0761782H6.72625C7.19074 0.0749698 7.63904 0.246731 7.98382 0.557995C8.32859 0.86926 8.54513 1.29773 8.59125 1.75993C8.61111 1.95696 8.70357 2.13955 8.85064 2.27218C8.9977 2.4048 9.18885 2.47796 9.38688 2.47743H11.3244C11.4901 2.47743 11.6491 2.54328 11.7663 2.66049C11.8835 2.7777 11.9494 2.93667 11.9494 3.10243H11.95ZM4.49 2.47743H7.5075C7.42537 2.28977 7.37166 2.09092 7.34812 1.88743C7.33264 1.73337 7.26053 1.59054 7.14575 1.48662C7.03097 1.3827 6.88171 1.32508 6.72687 1.32493H5.27063C5.11579 1.32508 4.96653 1.3827 4.85175 1.48662C4.73697 1.59054 4.66486 1.73337 4.64937 1.88743C4.62564 2.09095 4.57234 2.2898 4.49 2.47743ZM5.11937 11.9468V6.62493C5.11937 6.45917 5.05353 6.3002 4.93632 6.18299C4.81911 6.06578 4.66014 5.99993 4.49437 5.99993C4.32861 5.99993 4.16964 6.06578 4.05243 6.18299C3.93522 6.3002 3.86937 6.45917 3.86937 6.62493V11.9493C3.86937 12.1151 3.93522 12.274 4.05243 12.3912C4.16964 12.5085 4.32861 12.5743 4.49437 12.5743C4.66014 12.5743 4.81911 12.5085 4.93632 12.3912C5.05353 12.274 5.11937 12.1151 5.11937 11.9493V11.9468ZM8.12813 11.9468V6.62493C8.12813 6.45917 8.06228 6.3002 7.94507 6.18299C7.82786 6.06578 7.66889 5.99993 7.50313 5.99993C7.33736 5.99993 7.17839 6.06578 7.06118 6.18299C6.94397 6.3002 6.87813 6.45917 6.87813 6.62493V11.9493C6.87813 12.1151 6.94397 12.274 7.06118 12.3912C7.17839 12.5085 7.33736 12.5743 7.50313 12.5743C7.66889 12.5743 7.82786 12.5085 7.94507 12.3912C8.06228 12.274 8.12813 12.1151 8.12813 11.9493V11.9468Z" fill="currentColor"/> 269 <path d="M11.1231 5.62055L10.8731 13.1874C10.8518 13.8355 10.5788 14.4497 10.1121 14.8998C9.64531 15.3499 9.02153 15.6004 8.37312 15.5981H3.62312C2.97514 15.6004 2.35172 15.3503 1.88503 14.9007C1.41833 14.4512 1.14506 13.8375 1.12312 13.1899L0.873125 5.62055C0.867655 5.45479 0.928257 5.29365 1.0416 5.17257C1.15494 5.05149 1.31174 4.9804 1.4775 4.97493C1.64326 4.96946 1.8044 5.03006 1.92548 5.1434C2.04656 5.25674 2.11766 5.41354 2.12313 5.5793L2.37312 13.1481C2.38557 13.4712 2.52275 13.7769 2.75583 14.001C2.98891 14.2251 3.29978 14.3502 3.62312 14.3499H8.37312C8.69689 14.3501 9.00811 14.2247 9.24126 14.0001C9.47441 13.7754 9.61131 13.4691 9.62312 13.1456L9.87313 5.5793C9.8786 5.41354 9.94969 5.25674 10.0708 5.1434C10.1918 5.03006 10.353 4.96946 10.5187 4.97493C10.6845 4.9804 10.8413 5.05149 10.9546 5.17257C11.068 5.29365 11.1286 5.45479 11.1231 5.62055ZM11.95 3.10243C11.95 3.26819 11.8842 3.42716 11.7669 3.54437C11.6497 3.66158 11.4908 3.72743 11.325 3.72743H0.671875C0.506115 3.72743 0.347143 3.66158 0.229933 3.54437C0.112723 3.42716 0.046875 3.26819 0.046875 3.10243C0.046875 2.93667 0.112723 2.7777 0.229933 2.66049C0.347143 2.54328 0.506115 2.47743 0.671875 2.47743H2.60938C2.8074 2.47796 2.99855 2.4048 3.14561 2.27218C3.29268 2.13955 3.38514 1.95696 3.405 1.75993C3.45112 1.29773 3.66766 0.86926 4.01243 0.557995C4.35721 0.246731 4.80551 0.0749698 5.27 0.0761782H6.72625C7.19074 0.0749698 7.63904 0.246731 7.98382 0.557995C8.32859 0.86926 8.54513 1.29773 8.59125 1.75993C8.61111 1.95696 8.70357 2.13955 8.85064 2.27218C8.9977 2.4048 9.18885 2.47796 9.38688 2.47743H11.3244C11.4901 2.47743 11.6491 2.54328 11.7663 2.66049C11.8835 2.7777 11.9494 2.93667 11.9494 3.10243H11.95ZM4.49 2.47743H7.5075C7.42537 2.28977 7.37166 2.09092 7.34812 1.88743C7.33264 1.73337 7.26053 1.59054 7.14575 1.48662C7.03097 1.3827 6.88171 1.32508 6.72687 1.32493H5.27063C5.11579 1.32508 4.96653 1.3827 4.85175 1.48662C4.73697 1.59054 4.66486 1.73337 4.64937 1.88743C4.62564 2.09095 4.57234 2.2898 4.49 2.47743ZM5.11937 11.9468V6.62493C5.11937 6.45917 5.05353 6.3002 4.93632 6.18299C4.81911 6.06578 4.66014 5.99993 4.49437 5.99993C4.32861 5.99993 4.16964 6.06578 4.05243 6.18299C3.93522 6.3002 3.86937 6.45917 3.86937 6.62493V11.9493C3.86937 12.1151 3.93522 12.274 4.05243 12.3912C4.16964 12.5085 4.32861 12.5743 4.49437 12.5743C4.66014 12.5743 4.81911 12.5085 4.93632 12.3912C5.05353 12.274 5.11937 12.1151 5.11937 11.9493V11.9468ZM8.12813 11.9468V6.62493C8.12813 6.45917 8.06228 6.3002 7.94507 6.18299C7.82786 6.06578 7.66889 5.99993 7.50313 5.99993C7.33736 5.99993 7.17839 6.06578 7.06118 6.18299C6.94397 6.3002 6.87813 6.45917 6.87813 6.62493V11.9493C6.87813 12.1151 6.94397 12.274 7.06118 12.3912C7.17839 12.5085 7.33736 12.5743 7.50313 12.5743C7.66889 12.5743 7.82786 12.5085 7.94507 12.3912C8.06228 12.274 8.12813 12.1151 8.12813 11.9493V11.9468Z" fill="currentColor"/>
261 </symbol> 270 </symbol>
262 271
263 <symbol id="i" viewBox="0 0 20 20" fill="none"> 272 <symbol id="i" viewBox="0 0 20 20" fill="none">
264 <path d="M10 0C4.48 0 0 4.48 0 10C0 15.52 4.48 20 10 20C15.52 20 20 15.52 20 10C20 4.48 15.52 0 10 0ZM10 15C9.45 15 9 14.55 9 14V10C9 9.45 9.45 9 10 9C10.55 9 11 9.45 11 10V14C11 14.55 10.55 15 10 15ZM11 7H9V5H11V7Z" fill="currentColor"/> 273 <path d="M10 0C4.48 0 0 4.48 0 10C0 15.52 4.48 20 10 20C15.52 20 20 15.52 20 10C20 4.48 15.52 0 10 0ZM10 15C9.45 15 9 14.55 9 14V10C9 9.45 9.45 9 10 9C10.55 9 11 9.45 11 10V14C11 14.55 10.55 15 10 15ZM11 7H9V5H11V7Z" fill="currentColor"/>
265 </symbol> 274 </symbol>
266 275
267 <symbol id="arrow-radius" viewBox="0 0 14 18" fill="none"> 276 <symbol id="arrow-radius" viewBox="0 0 14 18" fill="none">
268 <path d="M5.24219 5.48438L8.75781 1.96875L12.2734 5.48438" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 277 <path d="M5.24219 5.48438L8.75781 1.96875L12.2734 5.48438" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
269 <path d="M1.72656 16.0312C3.59137 16.0312 5.37979 15.2905 6.69841 13.9718C8.01702 12.6532 8.75781 10.8648 8.75781 9V1.96875" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 278 <path d="M1.72656 16.0312C3.59137 16.0312 5.37979 15.2905 6.69841 13.9718C8.01702 12.6532 8.75781 10.8648 8.75781 9V1.96875" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
270 </symbol> 279 </symbol>
271 280
272 <symbol id="pencil" viewBox="0 0 16 16" fill="none"> 281 <symbol id="pencil" viewBox="0 0 16 16" fill="none">
273 <path d="M15.0604 3.06112L13.9195 4.20203L11.7656 2.11413L12.9396 0.940228C13.2208 0.65898 13.6023 0.500977 14 0.500977C14.3977 0.500977 14.7792 0.65898 15.0604 0.940228C15.3417 1.22148 15.4997 1.60293 15.4997 2.00067C15.4997 2.39842 15.3417 2.77987 15.0604 3.06112ZM10.1943 3.68443L12.3415 5.77908L3.6373 14.4833L0.714504 15.2976L1.51636 12.3624L10.1943 3.68443Z" fill="currentColor" stroke="currentColor"/> 282 <path d="M15.0604 3.06112L13.9195 4.20203L11.7656 2.11413L12.9396 0.940228C13.2208 0.65898 13.6023 0.500977 14 0.500977C14.3977 0.500977 14.7792 0.65898 15.0604 0.940228C15.3417 1.22148 15.4997 1.60293 15.4997 2.00067C15.4997 2.39842 15.3417 2.77987 15.0604 3.06112ZM10.1943 3.68443L12.3415 5.77908L3.6373 14.4833L0.714504 15.2976L1.51636 12.3624L10.1943 3.68443Z" fill="currentColor" stroke="currentColor"/>
274 </symbol> 283 </symbol>
275 284
276 <symbol id="clock" viewBox="0 0 17 18" fill="none"> 285 <symbol id="clock" viewBox="0 0 17 18" fill="none">
277 <path d="M1.21484 9.00007C1.21484 9.95684 1.40329 10.9042 1.76944 11.7882C2.13558 12.6721 2.67224 13.4753 3.34878 14.1518C4.02532 14.8284 4.82849 15.3651 5.71244 15.7312C6.59638 16.0973 7.54378 16.2858 8.50056 16.2858C9.45733 16.2858 10.4047 16.0973 11.2887 15.7312C12.1726 15.3651 12.9758 14.8284 13.6523 14.1518C14.3289 13.4753 14.8655 12.6721 15.2317 11.7882C15.5978 10.9042 15.7863 9.95684 15.7863 9.00007C15.7863 7.06778 15.0187 5.21463 13.6523 3.84829C12.286 2.48196 10.4328 1.71436 8.50056 1.71436C6.56827 1.71436 4.71512 2.48196 3.34878 3.84829C1.98244 5.21463 1.21484 7.06778 1.21484 9.00007Z" stroke="currentColor" stroke-width="1.61905" stroke-linecap="round" stroke-linejoin="round"/> 286 <path d="M1.21484 9.00007C1.21484 9.95684 1.40329 10.9042 1.76944 11.7882C2.13558 12.6721 2.67224 13.4753 3.34878 14.1518C4.02532 14.8284 4.82849 15.3651 5.71244 15.7312C6.59638 16.0973 7.54378 16.2858 8.50056 16.2858C9.45733 16.2858 10.4047 16.0973 11.2887 15.7312C12.1726 15.3651 12.9758 14.8284 13.6523 14.1518C14.3289 13.4753 14.8655 12.6721 15.2317 11.7882C15.5978 10.9042 15.7863 9.95684 15.7863 9.00007C15.7863 7.06778 15.0187 5.21463 13.6523 3.84829C12.286 2.48196 10.4328 1.71436 8.50056 1.71436C6.56827 1.71436 4.71512 2.48196 3.34878 3.84829C1.98244 5.21463 1.21484 7.06778 1.21484 9.00007Z" stroke="currentColor" stroke-width="1.61905" stroke-linecap="round" stroke-linejoin="round"/>
278 <path d="M8.5 4.95264V9.00026L10.9286 11.4288" stroke="currentColor" stroke-width="1.61905" stroke-linecap="round" stroke-linejoin="round"/> 287 <path d="M8.5 4.95264V9.00026L10.9286 11.4288" stroke="currentColor" stroke-width="1.61905" stroke-linecap="round" stroke-linejoin="round"/>
279 </symbol> 288 </symbol>
280 289
281 <symbol id="time" viewBox="0 0 16 17" fill="none"> 290 <symbol id="time" viewBox="0 0 16 17" fill="none">
282 <path d="M0.879883 8.50007C0.879883 9.45684 1.06407 10.4042 1.42193 11.2882C1.77979 12.1721 2.30431 12.9753 2.96554 13.6518C3.62678 14.3284 4.41178 14.865 5.27572 15.2312C6.13967 15.5973 7.06564 15.7858 8.00076 15.7858C8.93589 15.7858 9.86186 15.5973 10.7258 15.2312C11.5898 14.865 12.3748 14.3284 13.036 13.6518C13.6972 12.9753 14.2217 12.1721 14.5796 11.2882C14.9375 10.4042 15.1216 9.45684 15.1216 8.50007C15.1216 6.56778 14.3714 4.71463 13.036 3.34829C11.7006 1.98196 9.88934 1.21436 8.00076 1.21436C6.11219 1.21436 4.30096 1.98196 2.96554 3.34829C1.63012 4.71463 0.879883 6.56778 0.879883 8.50007Z" stroke="currentColor" stroke-width="1.61905" stroke-linecap="round" stroke-linejoin="round"/> 291 <path d="M0.879883 8.50007C0.879883 9.45684 1.06407 10.4042 1.42193 11.2882C1.77979 12.1721 2.30431 12.9753 2.96554 13.6518C3.62678 14.3284 4.41178 14.865 5.27572 15.2312C6.13967 15.5973 7.06564 15.7858 8.00076 15.7858C8.93589 15.7858 9.86186 15.5973 10.7258 15.2312C11.5898 14.865 12.3748 14.3284 13.036 13.6518C13.6972 12.9753 14.2217 12.1721 14.5796 11.2882C14.9375 10.4042 15.1216 9.45684 15.1216 8.50007C15.1216 6.56778 14.3714 4.71463 13.036 3.34829C11.7006 1.98196 9.88934 1.21436 8.00076 1.21436C6.11219 1.21436 4.30096 1.98196 2.96554 3.34829C1.63012 4.71463 0.879883 6.56778 0.879883 8.50007Z" stroke="currentColor" stroke-width="1.61905" stroke-linecap="round" stroke-linejoin="round"/>
283 <path d="M8 4.45264V8.50026L10.3736 10.9288" stroke="currentColor" stroke-width="1.61905" stroke-linecap="round" stroke-linejoin="round"/> 292 <path d="M8 4.45264V8.50026L10.3736 10.9288" stroke="currentColor" stroke-width="1.61905" stroke-linecap="round" stroke-linejoin="round"/>
284 </symbol> 293 </symbol>
285 294
286 <symbol id="warning" viewBox="0 0 40 35" fill="none"> 295 <symbol id="warning" viewBox="0 0 40 35" fill="none">
287 <path d="M19.9985 24.4905C20.3837 24.4905 20.6985 24.3683 20.9429 24.1239C21.1874 23.8794 21.3096 23.5646 21.3096 23.1795C21.3096 22.7943 21.1874 22.4788 20.9429 22.233C20.6985 21.9885 20.3837 21.8663 19.9985 21.8663C19.6134 21.8663 19.2986 21.9885 19.0542 22.233C18.8097 22.4788 18.6875 22.7943 18.6875 23.1795C18.6875 23.5632 18.8097 23.878 19.0542 24.1239C19.2986 24.3683 19.6134 24.4905 19.9985 24.4905ZM19.9985 18.1783C20.3013 18.1783 20.5549 18.076 20.7596 17.8713C20.9628 17.6681 21.0644 17.4151 21.0644 17.1124V6.28936C21.0644 5.98522 20.9628 5.73154 20.7596 5.52831C20.5549 5.32508 20.3013 5.22346 19.9985 5.22346C19.6958 5.22346 19.4422 5.32508 19.2375 5.52831C19.0343 5.73154 18.9327 5.98522 18.9327 6.28936V17.1124C18.9327 17.4151 19.0343 17.6681 19.2375 17.8713C19.4422 18.076 19.6958 18.1783 19.9985 18.1783ZM7.372 29.9841L3.73944 33.6167C3.20081 34.1553 2.57833 34.279 1.872 33.9876C1.16567 33.6963 0.8125 33.1669 0.8125 32.3994V3.58199C0.8125 2.60137 1.14151 1.78277 1.79952 1.12618C2.4561 0.468166 3.27471 0.13916 4.25533 0.13916H35.7418C36.7224 0.13916 37.541 0.468166 38.1976 1.12618C38.8556 1.78277 39.1846 2.60137 39.1846 3.58199V26.5413C39.1846 27.5219 38.8563 28.3412 38.1997 28.9992C37.5417 29.6558 36.7224 29.9841 35.7418 29.9841H7.372ZM6.46173 27.8523H35.7418C36.0686 27.8523 36.3692 27.7159 36.6435 27.443C36.9164 27.1688 37.0528 26.8682 37.0528 26.5413V3.58199C37.0528 3.25512 36.9164 2.95454 36.6435 2.68025C36.3692 2.40738 36.0686 2.27094 35.7418 2.27094H4.25533C3.92846 2.27094 3.62787 2.40738 3.35359 2.68025C3.08072 2.95454 2.94428 3.25512 2.94428 3.58199V31.3591L6.46173 27.8523Z" fill="currentColor"/> 296 <path d="M19.9985 24.4905C20.3837 24.4905 20.6985 24.3683 20.9429 24.1239C21.1874 23.8794 21.3096 23.5646 21.3096 23.1795C21.3096 22.7943 21.1874 22.4788 20.9429 22.233C20.6985 21.9885 20.3837 21.8663 19.9985 21.8663C19.6134 21.8663 19.2986 21.9885 19.0542 22.233C18.8097 22.4788 18.6875 22.7943 18.6875 23.1795C18.6875 23.5632 18.8097 23.878 19.0542 24.1239C19.2986 24.3683 19.6134 24.4905 19.9985 24.4905ZM19.9985 18.1783C20.3013 18.1783 20.5549 18.076 20.7596 17.8713C20.9628 17.6681 21.0644 17.4151 21.0644 17.1124V6.28936C21.0644 5.98522 20.9628 5.73154 20.7596 5.52831C20.5549 5.32508 20.3013 5.22346 19.9985 5.22346C19.6958 5.22346 19.4422 5.32508 19.2375 5.52831C19.0343 5.73154 18.9327 5.98522 18.9327 6.28936V17.1124C18.9327 17.4151 19.0343 17.6681 19.2375 17.8713C19.4422 18.076 19.6958 18.1783 19.9985 18.1783ZM7.372 29.9841L3.73944 33.6167C3.20081 34.1553 2.57833 34.279 1.872 33.9876C1.16567 33.6963 0.8125 33.1669 0.8125 32.3994V3.58199C0.8125 2.60137 1.14151 1.78277 1.79952 1.12618C2.4561 0.468166 3.27471 0.13916 4.25533 0.13916H35.7418C36.7224 0.13916 37.541 0.468166 38.1976 1.12618C38.8556 1.78277 39.1846 2.60137 39.1846 3.58199V26.5413C39.1846 27.5219 38.8563 28.3412 38.1997 28.9992C37.5417 29.6558 36.7224 29.9841 35.7418 29.9841H7.372ZM6.46173 27.8523H35.7418C36.0686 27.8523 36.3692 27.7159 36.6435 27.443C36.9164 27.1688 37.0528 26.8682 37.0528 26.5413V3.58199C37.0528 3.25512 36.9164 2.95454 36.6435 2.68025C36.3692 2.40738 36.0686 2.27094 35.7418 2.27094H4.25533C3.92846 2.27094 3.62787 2.40738 3.35359 2.68025C3.08072 2.95454 2.94428 3.25512 2.94428 3.58199V31.3591L6.46173 27.8523Z" fill="currentColor"/>
288 </symbol> 297 </symbol>
289 298
290 <symbol id="refresh" viewBox="0 0 18 18" fill="none"> 299 <symbol id="refresh" viewBox="0 0 18 18" fill="none">
291 <path d="M3.77748 15.4833C3.79416 15.4966 3.81313 15.5064 3.82991 15.5196C3.92057 15.5896 4.01865 15.6483 4.11206 15.7144C4.32124 15.8641 4.5307 16.0129 4.75226 16.1411C4.75922 16.145 4.76674 16.1478 4.77371 16.1519C5.05128 16.3114 5.3348 16.4601 5.62969 16.5844L5.7264 16.6247C5.86335 16.682 5.99672 16.7374 6.14807 16.7903C6.53838 16.9211 6.87049 17.0114 7.1883 17.0759C7.39143 17.1179 7.58439 17.1495 7.768 17.1736C7.79605 17.1774 7.82474 17.1784 7.85288 17.1818C7.9814 17.1971 8.10983 17.212 8.22496 17.2181C8.43872 17.2397 8.6634 17.2504 8.87735 17.2504C13.4267 17.2504 17.1273 13.5497 17.1273 9.00041C17.1273 8.49377 16.7173 8.08374 16.2107 8.08374C15.704 8.08374 15.294 8.49377 15.294 9.00041C15.294 12.5382 12.4151 15.4171 8.87735 15.4171C8.6678 15.4171 8.46146 15.3958 8.25521 15.3756C8.10598 15.3635 7.94483 15.3382 7.78202 15.3106C7.63783 15.2854 7.49392 15.2587 7.35238 15.2238C7.24788 15.1985 7.14806 15.1699 7.0475 15.1402C6.56882 14.9969 6.10663 14.8063 5.6758 14.5583C5.6736 14.557 5.67131 14.5561 5.66911 14.5549C5.50337 14.4593 5.34828 14.3467 5.19162 14.2367C5.11031 14.1787 5.02524 14.1289 4.94613 14.0667C4.85795 13.9984 4.77829 13.9194 4.69359 13.8465C4.56416 13.7339 4.43216 13.6235 4.30997 13.5022C4.24928 13.4408 4.19658 13.3714 4.13828 13.3075L5.78012 13.0117C6.27787 12.9214 6.60906 12.4451 6.5195 11.9465C6.42912 11.4487 5.95914 11.1175 5.45424 11.2071L1.62643 11.8973C1.38745 11.9403 1.17524 12.0772 1.03646 12.2768C0.897675 12.4765 0.843958 12.7226 0.88695 12.9625L1.57711 16.7894C1.65768 17.2325 2.04351 17.5432 2.47856 17.5432C2.53228 17.5432 2.58691 17.5387 2.64237 17.5289C3.14012 17.4385 3.47131 16.9622 3.38175 16.4636L3.09575 14.8794C3.10272 14.8861 3.11078 14.8917 3.11775 14.8985C3.34719 15.1208 3.56325 15.3155 3.77748 15.4833ZM14.0999 2.51747C14.0837 2.50463 14.0655 2.49528 14.0493 2.48254C13.9541 2.40902 13.8514 2.34724 13.7532 2.27803C13.5485 2.1321 13.344 1.98635 13.1275 1.86095C13.1116 1.85178 13.0943 1.84528 13.0783 1.8362C12.8085 1.68238 12.5339 1.53718 12.2478 1.41646L12.151 1.37622C12.0141 1.31892 11.8807 1.26347 11.7294 1.21057C11.3381 1.07986 11.006 0.988558 10.6883 0.925033C10.4861 0.88305 10.2933 0.851425 10.1097 0.827225C10.0818 0.823375 10.0533 0.82255 10.0254 0.818975C9.89678 0.803758 9.76826 0.788817 9.65267 0.782675C9.43863 0.761133 9.21395 0.750408 9 0.750408C4.45068 0.750408 0.75 4.45108 0.75 9.00041C0.75 9.50705 1.16003 9.91708 1.66667 9.91708C2.17331 9.91708 2.58333 9.50705 2.58333 9.00041C2.58333 5.46262 5.46222 2.58374 9 2.58374C9.20955 2.58374 9.41589 2.60501 9.62214 2.62527C9.77138 2.63727 9.93252 2.66267 10.0953 2.69026C10.2396 2.71547 10.3834 2.74214 10.525 2.77698C10.6295 2.80237 10.7293 2.83097 10.8299 2.86067C11.4994 3.06114 12.1281 3.37033 12.6967 3.77147C12.7735 3.82638 12.8542 3.87349 12.929 3.93225C13.0167 4.00008 13.0958 4.07882 13.18 4.15115C13.3115 4.26555 13.4449 4.37757 13.5702 4.50214C13.6297 4.56246 13.6817 4.63057 13.7389 4.69336L12.0973 4.98908C11.5996 5.07946 11.2684 5.55576 11.3579 6.05433C11.4385 6.49745 11.8243 6.80811 12.2594 6.80811C12.3131 6.80811 12.3677 6.80362 12.4232 6.79381L16.251 6.10365C16.49 6.06066 16.7022 5.92371 16.841 5.72406C16.9798 5.52441 17.0335 5.27828 16.9905 5.03839L16.3003 1.21149C16.21 0.713742 15.7381 0.380808 15.2351 0.472108C14.7373 0.562492 14.4061 1.03879 14.4957 1.53737L14.7818 3.12137C14.7707 3.11037 14.7578 3.10157 14.7466 3.09066C14.5226 2.87442 14.3108 2.68366 14.0999 2.51747Z" fill="currentColor"/> 300 <path d="M3.77748 15.4833C3.79416 15.4966 3.81313 15.5064 3.82991 15.5196C3.92057 15.5896 4.01865 15.6483 4.11206 15.7144C4.32124 15.8641 4.5307 16.0129 4.75226 16.1411C4.75922 16.145 4.76674 16.1478 4.77371 16.1519C5.05128 16.3114 5.3348 16.4601 5.62969 16.5844L5.7264 16.6247C5.86335 16.682 5.99672 16.7374 6.14807 16.7903C6.53838 16.9211 6.87049 17.0114 7.1883 17.0759C7.39143 17.1179 7.58439 17.1495 7.768 17.1736C7.79605 17.1774 7.82474 17.1784 7.85288 17.1818C7.9814 17.1971 8.10983 17.212 8.22496 17.2181C8.43872 17.2397 8.6634 17.2504 8.87735 17.2504C13.4267 17.2504 17.1273 13.5497 17.1273 9.00041C17.1273 8.49377 16.7173 8.08374 16.2107 8.08374C15.704 8.08374 15.294 8.49377 15.294 9.00041C15.294 12.5382 12.4151 15.4171 8.87735 15.4171C8.6678 15.4171 8.46146 15.3958 8.25521 15.3756C8.10598 15.3635 7.94483 15.3382 7.78202 15.3106C7.63783 15.2854 7.49392 15.2587 7.35238 15.2238C7.24788 15.1985 7.14806 15.1699 7.0475 15.1402C6.56882 14.9969 6.10663 14.8063 5.6758 14.5583C5.6736 14.557 5.67131 14.5561 5.66911 14.5549C5.50337 14.4593 5.34828 14.3467 5.19162 14.2367C5.11031 14.1787 5.02524 14.1289 4.94613 14.0667C4.85795 13.9984 4.77829 13.9194 4.69359 13.8465C4.56416 13.7339 4.43216 13.6235 4.30997 13.5022C4.24928 13.4408 4.19658 13.3714 4.13828 13.3075L5.78012 13.0117C6.27787 12.9214 6.60906 12.4451 6.5195 11.9465C6.42912 11.4487 5.95914 11.1175 5.45424 11.2071L1.62643 11.8973C1.38745 11.9403 1.17524 12.0772 1.03646 12.2768C0.897675 12.4765 0.843958 12.7226 0.88695 12.9625L1.57711 16.7894C1.65768 17.2325 2.04351 17.5432 2.47856 17.5432C2.53228 17.5432 2.58691 17.5387 2.64237 17.5289C3.14012 17.4385 3.47131 16.9622 3.38175 16.4636L3.09575 14.8794C3.10272 14.8861 3.11078 14.8917 3.11775 14.8985C3.34719 15.1208 3.56325 15.3155 3.77748 15.4833ZM14.0999 2.51747C14.0837 2.50463 14.0655 2.49528 14.0493 2.48254C13.9541 2.40902 13.8514 2.34724 13.7532 2.27803C13.5485 2.1321 13.344 1.98635 13.1275 1.86095C13.1116 1.85178 13.0943 1.84528 13.0783 1.8362C12.8085 1.68238 12.5339 1.53718 12.2478 1.41646L12.151 1.37622C12.0141 1.31892 11.8807 1.26347 11.7294 1.21057C11.3381 1.07986 11.006 0.988558 10.6883 0.925033C10.4861 0.88305 10.2933 0.851425 10.1097 0.827225C10.0818 0.823375 10.0533 0.82255 10.0254 0.818975C9.89678 0.803758 9.76826 0.788817 9.65267 0.782675C9.43863 0.761133 9.21395 0.750408 9 0.750408C4.45068 0.750408 0.75 4.45108 0.75 9.00041C0.75 9.50705 1.16003 9.91708 1.66667 9.91708C2.17331 9.91708 2.58333 9.50705 2.58333 9.00041C2.58333 5.46262 5.46222 2.58374 9 2.58374C9.20955 2.58374 9.41589 2.60501 9.62214 2.62527C9.77138 2.63727 9.93252 2.66267 10.0953 2.69026C10.2396 2.71547 10.3834 2.74214 10.525 2.77698C10.6295 2.80237 10.7293 2.83097 10.8299 2.86067C11.4994 3.06114 12.1281 3.37033 12.6967 3.77147C12.7735 3.82638 12.8542 3.87349 12.929 3.93225C13.0167 4.00008 13.0958 4.07882 13.18 4.15115C13.3115 4.26555 13.4449 4.37757 13.5702 4.50214C13.6297 4.56246 13.6817 4.63057 13.7389 4.69336L12.0973 4.98908C11.5996 5.07946 11.2684 5.55576 11.3579 6.05433C11.4385 6.49745 11.8243 6.80811 12.2594 6.80811C12.3131 6.80811 12.3677 6.80362 12.4232 6.79381L16.251 6.10365C16.49 6.06066 16.7022 5.92371 16.841 5.72406C16.9798 5.52441 17.0335 5.27828 16.9905 5.03839L16.3003 1.21149C16.21 0.713742 15.7381 0.380808 15.2351 0.472108C14.7373 0.562492 14.4061 1.03879 14.4957 1.53737L14.7818 3.12137C14.7707 3.11037 14.7578 3.10157 14.7466 3.09066C14.5226 2.87442 14.3108 2.68366 14.0999 2.51747Z" fill="currentColor"/>
292 </symbol> 301 </symbol>
293 302
294 <symbol id="date" viewBox="0 0 20 20" fill="none"> 303 <symbol id="date" viewBox="0 0 20 20" fill="none">
295 <path d="M2.00006 7L18.0001 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 304 <path d="M2.00006 7L18.0001 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
296 <path d="M14.5001 11H15.0001" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 305 <path d="M14.5001 11H15.0001" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
297 <path d="M10.5001 11H10.0001" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 306 <path d="M10.5001 11H10.0001" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
298 <path d="M5.00006 11H5.50006" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 307 <path d="M5.00006 11H5.50006" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
299 <path d="M14.5001 15H15.0001" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 308 <path d="M14.5001 15H15.0001" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
300 <path d="M10.0001 15H10.5001" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 309 <path d="M10.0001 15H10.5001" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
301 <path d="M5.00006 15H5.50006" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 310 <path d="M5.00006 15H5.50006" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
302 <path d="M14.0001 1L14.0001 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 311 <path d="M14.0001 1L14.0001 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
303 <path d="M6.00006 1L6.00006 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 312 <path d="M6.00006 1L6.00006 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
304 <rect x="1.00006" y="3" width="18" height="16" rx="3" stroke="currentColor" stroke-width="2"/> 313 <rect x="1.00006" y="3" width="18" height="16" rx="3" stroke="currentColor" stroke-width="2"/>
305 </symbol> 314 </symbol>
306 315
307 <symbol id="answering" viewBox="0 0 21 20" fill="none"> 316 <symbol id="answering" viewBox="0 0 21 20" fill="none">
308 <path d="M14.9568 18.4174L14.9511 18.4174C11.4072 18.4128 8.00978 17.003 5.50386 14.4971C2.99806 11.9913 1.58823 8.59402 1.5835 5.0503C1.58362 4.13105 1.94884 3.24947 2.59886 2.59945C3.24899 1.94933 4.13075 1.58409 5.05016 1.58409V1.58411L5.05588 1.58407C5.24351 1.58264 5.43083 1.59967 5.61514 1.63491L5.63062 1.63787L5.64621 1.64018C5.82253 1.66627 5.99587 1.7096 6.16373 1.76956L6.16372 1.76957L6.16769 1.77096C6.19506 1.78056 6.21945 1.79715 6.23845 1.81907C6.25745 1.84099 6.2704 1.86749 6.27602 1.89596L6.27817 1.90687L6.28065 1.91771L7.53623 7.4166C7.53625 7.4167 7.53627 7.4168 7.5363 7.41691C7.54238 7.44396 7.54161 7.4721 7.53407 7.49878C7.5265 7.52557 7.51235 7.55003 7.4929 7.56993L7.48623 7.57676L7.47973 7.58375C7.47492 7.58894 7.47115 7.59296 7.46828 7.59601C7.45866 7.60234 7.43893 7.61484 7.40339 7.63544C7.26405 7.71622 6.99976 7.85507 6.42731 8.15293L5.79576 8.48154L6.09105 9.12934C7.06851 11.2737 8.78349 12.9957 10.9238 13.9819L11.5711 14.2802L11.9019 13.649C12.2043 13.0721 12.3456 12.8051 12.4276 12.6643C12.4493 12.6271 12.4623 12.6068 12.4687 12.5972C12.4718 12.5943 12.4759 12.5904 12.4813 12.5853L12.4883 12.5789L12.4951 12.5722C12.5151 12.5527 12.5395 12.5386 12.5663 12.531C12.5929 12.5235 12.621 12.5227 12.648 12.5287C12.6481 12.5288 12.6483 12.5288 12.6485 12.5289L18.1448 13.7838C18.1451 13.7839 18.1453 13.784 18.1456 13.784C18.1728 13.7905 18.198 13.8037 18.2188 13.8225C18.2398 13.8414 18.2557 13.8654 18.2648 13.8922L18.2648 13.8922L18.2677 13.9004C18.3301 14.0759 18.3772 14.2564 18.4084 14.44C18.4384 14.6281 18.4535 14.8183 18.4535 15.0088C18.4383 15.9223 18.0629 16.7931 17.409 17.4315C16.7539 18.0711 15.8723 18.4255 14.9568 18.4174Z" stroke="currentColor" stroke-width="1.5"/> 317 <path d="M14.9568 18.4174L14.9511 18.4174C11.4072 18.4128 8.00978 17.003 5.50386 14.4971C2.99806 11.9913 1.58823 8.59402 1.5835 5.0503C1.58362 4.13105 1.94884 3.24947 2.59886 2.59945C3.24899 1.94933 4.13075 1.58409 5.05016 1.58409V1.58411L5.05588 1.58407C5.24351 1.58264 5.43083 1.59967 5.61514 1.63491L5.63062 1.63787L5.64621 1.64018C5.82253 1.66627 5.99587 1.7096 6.16373 1.76956L6.16372 1.76957L6.16769 1.77096C6.19506 1.78056 6.21945 1.79715 6.23845 1.81907C6.25745 1.84099 6.2704 1.86749 6.27602 1.89596L6.27817 1.90687L6.28065 1.91771L7.53623 7.4166C7.53625 7.4167 7.53627 7.4168 7.5363 7.41691C7.54238 7.44396 7.54161 7.4721 7.53407 7.49878C7.5265 7.52557 7.51235 7.55003 7.4929 7.56993L7.48623 7.57676L7.47973 7.58375C7.47492 7.58894 7.47115 7.59296 7.46828 7.59601C7.45866 7.60234 7.43893 7.61484 7.40339 7.63544C7.26405 7.71622 6.99976 7.85507 6.42731 8.15293L5.79576 8.48154L6.09105 9.12934C7.06851 11.2737 8.78349 12.9957 10.9238 13.9819L11.5711 14.2802L11.9019 13.649C12.2043 13.0721 12.3456 12.8051 12.4276 12.6643C12.4493 12.6271 12.4623 12.6068 12.4687 12.5972C12.4718 12.5943 12.4759 12.5904 12.4813 12.5853L12.4883 12.5789L12.4951 12.5722C12.5151 12.5527 12.5395 12.5386 12.5663 12.531C12.5929 12.5235 12.621 12.5227 12.648 12.5287C12.6481 12.5288 12.6483 12.5288 12.6485 12.5289L18.1448 13.7838C18.1451 13.7839 18.1453 13.784 18.1456 13.784C18.1728 13.7905 18.198 13.8037 18.2188 13.8225C18.2398 13.8414 18.2557 13.8654 18.2648 13.8922L18.2648 13.8922L18.2677 13.9004C18.3301 14.0759 18.3772 14.2564 18.4084 14.44C18.4384 14.6281 18.4535 14.8183 18.4535 15.0088C18.4383 15.9223 18.0629 16.7931 17.409 17.4315C16.7539 18.0711 15.8723 18.4255 14.9568 18.4174Z" stroke="currentColor" stroke-width="1.5"/>
309 <path d="M11 2V7M13.2154 3.5V5.75M15.4308 1V8M17.7846 2V7M20 3.5V5.75" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 318 <path d="M11 2V7M13.2154 3.5V5.75M15.4308 1V8M17.7846 2V7M20 3.5V5.75" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
310 </symbol> 319 </symbol>
311 320
312 </svg> 321 </svg>
313 322
resources/views/admin/message/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 $('.rejecte-button').click(function(){ 6 $('.rejecte-button').click(function(){
7 var this_btn = $(this); 7 var this_btn = $(this);
8 var wrap = this_btn.closest('tr'); 8 var wrap = this_btn.closest('tr');
9 var message_id = wrap.data('message-id'); 9 var message_id = wrap.data('message-id');
10 var target = wrap.find('.user-name').text(); 10 var target = wrap.find('.user-name').text();
11 11
12 $('#rejecte_message').data('message-id', message_id); 12 $('#rejecte_message').data('message-id', message_id);
13 $('#rejecte_message').find('.user-name').text(target.trim()); 13 $('#rejecte_message').find('.user-name').text(target.trim());
14 $('#rejecte_message').find('.message-id').text(message_id); 14 $('#rejecte_message').find('.message-id').text(message_id);
15 }); 15 });
16 16
17 $('.send-button').click(function(){cl(1000); 17 $('.send-button').click(function(){cl(1000);
18 var this_btn = $(this); 18 var this_btn = $(this);
19 var wrap = this_btn.closest('tr'); 19 var wrap = this_btn.closest('tr');
20 var message_id = wrap.data('message-id'); 20 var message_id = wrap.data('message-id');
21 var target = wrap.find('.user-name').text(); 21 var target = wrap.find('.user-name').text();
22 22
23 $('#send_message').data('message-id', message_id); 23 $('#send_message').data('message-id', message_id);
24 $('#send_message').find('.user-name').text(target.trim()); 24 $('#send_message').find('.user-name').text(target.trim());
25 $('#send_message').find('.message-id').text(message_id); 25 $('#send_message').find('.message-id').text(message_id);
26 }); 26 });
27 27
28 $(document).on('change', '.checkread', function () { 28 $(document).on('change', '.checkread', function () {
29 var this_ = $(this); 29 var this_ = $(this);
30 var value = this_.val(); 30 var value = this_.val();
31 var ajax_block = $('#ajax_block'); 31 var ajax_block = $('#ajax_block');
32 var bool = 0; 32 var bool = 0;
33 33
34 if(this.checked){ 34 if(this.checked){
35 bool = 1; 35 bool = 1;
36 } else { 36 } else {
37 bool = 0; 37 bool = 0;
38 } 38 }
39 39
40 $.ajax({ 40 $.ajax({
41 type: "GET", 41 type: "GET",
42 url: "{{ url()->full()}}", 42 url: "{{ url()->full()}}",
43 data: "id=" + value + "&flag_new=" + bool, 43 data: "id=" + value + "&flag_new=" + bool,
44 success: function (data) { 44 success: function (data) {
45 console.log('Обновление таблицы сообщений администратора '); 45 console.log('Обновление таблицы сообщений администратора ');
46 //data = JSON.parse(data); 46 //data = JSON.parse(data);
47 //console.log(data); 47 //console.log(data);
48 ajax_block.html(data); 48 ajax_block.html(data);
49 }, 49 },
50 headers: { 50 headers: {
51 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 51 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
52 }, 52 },
53 error: function (data) { 53 error: function (data) {
54 console.log('Error: ' + data); 54 console.log('Error: ' + data);
55 } 55 }
56 }); 56 });
57 }); 57 });
58 58
59 }); 59 });
60 </script> 60 </script>
61 @endsection 61 @endsection
62 62
63 @section('content') 63 @section('content')
64 <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> 64 <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block">
65 <div class="w-full overflow-x-auto"> 65 <div class="w-full overflow-x-auto">
66 <table class="w-full"> 66 <table class="w-full">
67 <thead> 67 <thead>
68 <tr 68 <tr
69 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" 69 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"
70 > 70 >
71 <th class="px-4 py-3">№</th> 71 <th class="px-4 py-3">№</th>
72 <th class="px-4 py-3">От юзера</th> 72 <th class="px-4 py-3">От юзера</th>
73 <th class="px-4 py-3">Должности</th> 73 <th class="px-4 py-3">Должности</th>
74 <th class="px-4 py-3">Текст</th> 74 <th class="px-4 py-3">Текст</th>
75 <th class="px-4 py-3">Дата</th> 75 <th class="px-4 py-3">Дата</th>
76 <th class="px-4 py-3"></th> 76 <th class="px-4 py-3"></th>
77 </tr> 77 </tr>
78 </thead> 78 </thead>
79 <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> 79 <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800">
80 @foreach($Msgs as $msg) 80 @foreach($Msgs as $msg)
81 <tr class="text-gray-700 dark:text-gray-400" data-message-id="{{ $msg->id }}"> 81 <tr class="text-gray-700 dark:text-gray-400" data-message-id="{{ $msg->id }}">
82 <td class="px-4 py-3"> 82 <td class="px-4 py-3">
83 {{ $msg->id }} 83 {{ $msg->id }}
84 </td> 84 </td>
85 <td class="px-4 py-3"> 85 <td class="px-4 py-3">
86 <div class="user-name"> 86 <div class="user-name">
87 @if (isset($msg->user->name)) 87 @if (isset($msg->user->name))
88 {{$msg->user->name}} ({{$msg->user->id}}) 88 {{$msg->user->name}} ({{$msg->user->id}})
89 @else 89 @else
90 Пользователь удален 90 Пользователь удален
91 @endif 91 @endif
92 </div> 92 </div>
93 </td> 93 </td>
94 <td class="px-4 py-3"> 94 <td class="px-4 py-3">
95 @if($msg->job_titles) 95 @if($msg->job_titles)
96 @foreach($msg->jobs as $job) 96 @foreach($msg->jobs as $job)
97 {{ $job->name }} 97 {{ $job->name }}
98 @if(!$loop->last) 98 @if(!$loop->last)
99 <br> 99 <br>
100 @endif 100 @endif
101 @endforeach 101 @endforeach
102 @endif 102 @endif
103 </td> 103 </td>
104 <td class="px-4 py-3"> 104 <td class="px-4 py-3">
105 <div> 105 <div>
106 {{ $msg->text }} 106 {{ $msg->text }}
107 </div> 107 </div>
108 </td> 108 </td>
109 <td class="px-4 py-3 text-sm"> 109 <td class="px-4 py-3 text-sm">
110 {{ date('d.m.Y h:i:s', strtotime($msg->created_at)) }} 110 {{ date('d.m.Y h:i:s', strtotime($msg->created_at)) }}
111 </td> 111 </td>
112 <td class="px-4 py-3"> 112 <td class="px-4 py-3">
113 @if($msg->is_rejected) 113 @if($msg->is_rejected)
114 Отклонено 114 Отклонено
115 @elseif($msg->is_sent) 115 @elseif($msg->is_sent)
116 Отправлено 116 Отправлено
117 @else 117 @else
118 <div class=""> 118 <div class="">
119 <button class="rejecte-button mb-10 px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-red-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" 119 <button class="rejecte-button mb-10 px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-red-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"
120 data-fancybox data-src="#rejecte_message" 120 data-fancybox data-src="#rejecte_message"
121 > 121 >
122 Отклонить 122 Отклонить
123 </button> 123 </button>
124 <button class="send-button px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-green-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple" 124 <button class="send-button px-3 py-1 text-sm font-medium leading-5 text-white transition-colors duration-150 bg-green-600 border border-transparent rounded-md active:bg-purple-600 hover:bg-purple-700 focus:outline-none focus:shadow-outline-purple"
125 data-fancybox data-src="#send_message" 125 data-fancybox data-src="#send_message"
126 > 126 >
127 Отправить 127 Отправить
128 </button> 128 </button>
129 </div> 129 </div>
130 @endif 130 @endif
131 </td> 131 </td>
132 </tr> 132 </tr>
133 @endforeach 133 @endforeach
134 </tbody> 134 </tbody>
135 </table> 135 </table>
136 </div> 136 </div>
137 137
138 <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"> 138 <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">
139 <?=$Msgs->appends($_GET)->links('admin.pagginate'); ?> 139 <?=$Msgs->appends($_GET)->links('admin.pagginate'); ?>
140 </div> 140 </div>
141 </div><br> 141 </div><br>
142 142
143 <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block2"> 143 <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block2">
144 144
145 <form method="POST" action="{{ route('admin.admin-messages-post') }}" enctype="multipart/form-data"> 145 <form method="POST" action="{{ route('admin.admin-messages-post') }}" enctype="multipart/form-data">
146 @csrf 146 @csrf
147 <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"> 147 <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800">
148 <h3 class="text-gray-700 dark:text-gray-400">Отправка сообщения</h3> 148 <h3 class="text-gray-700 dark:text-gray-400">Отправка сообщения</h3>
149 <hr> 149 <hr>
150 <label for="ad_employer_id" class="block text-sm"> 150 <label for="ad_employer_id" class="block text-sm">
151 <input type="hidden" name="user_id" id="user_id" value="{{ $id_admin }}"/> 151 <input type="hidden" name="user_id" id="user_id" value="{{ $id_admin }}"/>
152 152
153 <span class="text-gray-700 dark:text-gray-400">Кому:</span> 153 <span class="text-gray-700 dark:text-gray-400">Кому:</span>
154 154
155 <select name="to_user_id" id="to_user_id" class="block change_js 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"> 155 <select name="to_user_id" id="to_user_id" class="block change_js 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">
156 @foreach($users as $user) 156 @foreach($users as $user)
157 <option value="{{ $user->id }}">{{ $user->name }} ({{ $user->id }})</option> 157 <option value="{{ $user->id }}">{{ $user->name }} ({{ $user->id }})</option>
158 @endforeach 158 @endforeach
159 </select> 159 </select>
160 </label><br> 160 </label><br>
161 161
162 <label class="block text-sm"> 162 <label class="block text-sm">
163 <span class="text-gray-700 dark:text-gray-400">Заголовок</span> 163 <span class="text-gray-700 dark:text-gray-400">Заголовок</span>
164 <input name="title" id="title" 164 <input name="title" id="title"
165 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" 165 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"
166 placeholder="Заголовок" value="{{ old('title') ?? '' }}" 166 placeholder="Заголовок" value="{{ old('title') ?? '' }}"
167 /> 167 />
168 @error('title') 168 @error('title')
169 <span class="text-xs text-red-600 dark:text-red-400"> 169 <span class="text-xs text-red-600 dark:text-red-400">
170 {{ $message }} 170 {{ $message }}
171 </span> 171 </span>
172 @enderror 172 @enderror
173 </label><br> 173 </label><br>
174 174
175 <label class="block text-sm"> 175 <label class="block text-sm">
176 <span class="text-gray-700 dark:text-gray-400">Текст</span> 176 <span class="text-gray-700 dark:text-gray-400">Текст</span>
177 <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" name="text" placeholder="Текст" required 177 <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" name="text" placeholder="Текст" required
178 rows="4">{{ old('text') ?? '' }}</textarea> 178 rows="4">{{ old('text') ?? '' }}</textarea>
179 @error('text') 179 @error('text')
180 <span class="text-xs text-red-600 dark:text-red-400"> 180 <span class="text-xs text-red-600 dark:text-red-400">
181 {{ $message }} 181 {{ $message }}
182 </span> 182 </span>
183 @enderror 183 @enderror
184 </label><br> 184 </label><br>
185 185
186 186
187 <label class="block text-sm"> 187 <label class="block text-sm">
188 <span class="text-gray-700 dark:text-gray-400">Файл</span> 188 <span class="text-gray-700 dark:text-gray-400">Файл</span>
189 <input type="file" class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 189 <input type="file" class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700
190 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple 190 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple
191 dark:text-gray-300 dark:focus:shadow-outline-gray form-input" 191 dark:text-gray-300 dark:focus:shadow-outline-gray form-input"
192 id="file" name="file"> 192 id="file" name="file" accept=".pdf, .doc, .docx">
193 @error('file') 193 @error('file')
194 <span class="text-xs text-red-600 dark:text-red-400"> 194 <span class="text-xs text-red-600 dark:text-red-400">
195 {{ $message }} 195 {{ $message }}
196 </span> 196 </span>
197 @enderror 197 @enderror
198 </label><br> 198 </label><br>
199 199
200 <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> 200 <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4">
201 <div> 201 <div>
202 <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"> 202 <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">
203 Отправить 203 Отправить
204 </button> 204 </button>
205 </div> 205 </div>
206 </div> 206 </div>
207 </div> 207 </div>
208 </form> 208 </form>
209 </div> 209 </div>
210 210
211 @include('modals.admin.messages.rejecte_message') 211 @include('modals.admin.messages.rejecte_message')
212 @include('modals.admin.messages.send_message') 212 @include('modals.admin.messages.send_message')
213 @endsection 213 @endsection
214 214
resources/views/admin/message/index2.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('change', '.checkread', function () { 6 $(document).on('change', '.checkread', function () {
7 var this_ = $(this); 7 var this_ = $(this);
8 var value = this_.val(); 8 var value = this_.val();
9 var ajax_block = $('#ajax_block'); 9 var ajax_block = $('#ajax_block');
10 var bool = 0; 10 var bool = 0;
11 11
12 if(this.checked){ 12 if(this.checked){
13 bool = 1; 13 bool = 1;
14 } else { 14 } else {
15 bool = 0; 15 bool = 0;
16 } 16 }
17 17
18 $.ajax({ 18 $.ajax({
19 type: "GET", 19 type: "GET",
20 url: "{{ url()->full()}}", 20 url: "{{ url()->full()}}",
21 data: "id=" + value + "&flag_new=" + bool, 21 data: "id=" + value + "&flag_new=" + bool,
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 }); 37 });
38 </script> 38 </script>
39 @endsection 39 @endsection
40 40
41 @section('search') 41 @section('search')
42 42
43 @endsection 43 @endsection
44 44
45 @section('content') 45 @section('content')
46 <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block"> 46 <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block">
47 <div class="w-full overflow-x-auto"> 47 <div class="w-full overflow-x-auto">
48 <table class="w-full whitespace-no-wrap"> 48 <table class="w-full whitespace-no-wrap">
49 <thead> 49 <thead>
50 <tr 50 <tr
51 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" 51 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"
52 > 52 >
53 <th class="px-4 py-3">№</th> 53 <th class="px-4 py-3">№</th>
54 <th class="px-4 py-3">От юзера</th> 54 <th class="px-4 py-3">От юзера</th>
55 <th class="px-4 py-3">К юзеру</th> 55 <th class="px-4 py-3">К юзеру</th>
56 <th class="px-4 py-3">Текст</th> 56 <th class="px-4 py-3">Текст</th>
57 <th class="px-4 py-3">Дата</th> 57 <th class="px-4 py-3">Дата</th>
58 <th class="px-4 py-3">Прочтено</th> 58 <th class="px-4 py-3">Прочтено</th>
59 </tr> 59 </tr>
60 </thead> 60 </thead>
61 <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800"> 61 <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800">
62 @foreach($Msgs as $msg) 62 @foreach($Msgs as $msg)
63 <tr class="text-gray-700 dark:text-gray-400" 63 <tr class="text-gray-700 dark:text-gray-400"
64 @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) style="background-color: #403998;" @endif> 64 @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) style="background-color: #403998;" @endif>
65 <td class="px-4 py-3"> 65 <td class="px-4 py-3">
66 {{$msg->id}} 66 {{$msg->id}}
67 </td> 67 </td>
68 <td class="px-4 py-3"> 68 <td class="px-4 py-3">
69 <!--if (isset($msg->user_from->name)) 69 <!--if (isset($msg->user_from->name))
70 $msg->user_from->name ($msg->user_from->id) 70 $msg->user_from->name ($msg->user_from->id)
71 else 71 else
72 Пользователь удален 72 Пользователь удален
73 endif--> 73 endif-->
74 </td> 74 </td>
75 <td class="px-4 py-3"> 75 <td class="px-4 py-3">
76 <!--if (isset($msg->user_to->name)) 76 <!--if (isset($msg->user_to->name))
77 $msg->user_to->name ($msg->user_to->id) 77 $msg->user_to->name ($msg->user_to->id)
78 else 78 else
79 Пользователь удален 79 Пользователь удален
80 @endif--> 80 @endif-->
81 </td> 81 </td>
82 <td class="px-4 py-3"> 82 <td class="px-4 py-3">
83 {{$msg->title}} 83 {{$msg->title}}
84 <div class="flex items-center text-sm"> 84 <div class="flex items-center text-sm">
85 <textarea cols="7" style="width:250px;">{{ $msg->text }}</textarea> 85 <textarea cols="7" style="width:250px;">{{ $msg->text }}</textarea>
86 </div> 86 </div>
87 </td> 87 </td>
88 <td class="px-4 py-3 text-sm"> 88 <td class="px-4 py-3 text-sm">
89 {{ $msg->created_at }} 89 {{ $msg->created_at }}
90 </td> 90 </td>
91 <td class="px-4 py-3 text-sm"> 91 <td class="px-4 py-3 text-sm">
92 @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1)) 92 @if (($msg->user_to->id == $id_admin) && ($msg->flag_new == 1))
93 <input type="checkbox" class="checkread" value="{{$msg->id}}" name="read_{{$msg->id}}"/> 93 <input type="checkbox" class="checkread" value="{{$msg->id}}" name="read_{{$msg->id}}"/>
94 @endif 94 @endif
95 </td> 95 </td>
96 </tr> 96 </tr>
97 @endforeach 97 @endforeach
98 </tbody> 98 </tbody>
99 </table> 99 </table>
100 </div> 100 </div>
101 101
102 <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"> 102 <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">
103 <?=$Msgs->appends($_GET)->links('admin.pagginate'); ?> 103 <?=$Msgs->appends($_GET)->links('admin.pagginate'); ?>
104 </div> 104 </div>
105 </div><br> 105 </div><br>
106 106
107 <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block2"> 107 <div class="w-full overflow-hidden rounded-lg shadow-xs" id="ajax_block2">
108 108
109 <form method="POST" action="{{ route('admin.admin-messages-post') }}" enctype="multipart/form-data"> 109 <form method="POST" action="{{ route('admin.admin-messages-post') }}" enctype="multipart/form-data">
110 @csrf 110 @csrf
111 <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800"> 111 <div class="px-4 py-3 mb-8 bg-white rounded-lg shadow-md dark:bg-gray-800">
112 <h3 class="text-gray-700 dark:text-gray-400">Отправка сообщения</h3> 112 <h3 class="text-gray-700 dark:text-gray-400">Отправка сообщения</h3>
113 <hr> 113 <hr>
114 <label for="ad_employer_id" class="block text-sm"> 114 <label for="ad_employer_id" class="block text-sm">
115 <input type="hidden" name="user_id" id="user_id" value="{{ $id_admin }}"/> 115 <input type="hidden" name="user_id" id="user_id" value="{{ $id_admin }}"/>
116 116
117 <span class="text-gray-700 dark:text-gray-400">Кому:</span> 117 <span class="text-gray-700 dark:text-gray-400">Кому:</span>
118 118
119 <select name="to_user_id" id="to_user_id" class="block change_js 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"> 119 <select name="to_user_id" id="to_user_id" class="block change_js 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">
120 @foreach($users as $user) 120 @foreach($users as $user)
121 <option value="{{ $user->id }}">{{ $user->name }} ({{ $user->id }})</option> 121 <option value="{{ $user->id }}">{{ $user->name }} ({{ $user->id }})</option>
122 @endforeach 122 @endforeach
123 </select> 123 </select>
124 </label><br> 124 </label><br>
125 125
126 <label class="block text-sm"> 126 <label class="block text-sm">
127 <span class="text-gray-700 dark:text-gray-400">Заголовок</span> 127 <span class="text-gray-700 dark:text-gray-400">Заголовок</span>
128 <input name="title" id="title" 128 <input name="title" id="title"
129 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" 129 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"
130 placeholder="Заголовок" value="{{ old('title') ?? '' }}" 130 placeholder="Заголовок" value="{{ old('title') ?? '' }}"
131 /> 131 />
132 @error('title') 132 @error('title')
133 <span class="text-xs text-red-600 dark:text-red-400"> 133 <span class="text-xs text-red-600 dark:text-red-400">
134 {{ $message }} 134 {{ $message }}
135 </span> 135 </span>
136 @enderror 136 @enderror
137 </label><br> 137 </label><br>
138 138
139 <label class="block text-sm"> 139 <label class="block text-sm">
140 <span class="text-gray-700 dark:text-gray-400">Текст</span> 140 <span class="text-gray-700 dark:text-gray-400">Текст</span>
141 <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" name="text" placeholder="Текст" required 141 <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" name="text" placeholder="Текст" required
142 rows="4">{{ old('text') ?? '' }}</textarea> 142 rows="4">{{ old('text') ?? '' }}</textarea>
143 @error('text') 143 @error('text')
144 <span class="text-xs text-red-600 dark:text-red-400"> 144 <span class="text-xs text-red-600 dark:text-red-400">
145 {{ $message }} 145 {{ $message }}
146 </span> 146 </span>
147 @enderror 147 @enderror
148 </label><br> 148 </label><br>
149 149
150 150
151 <label class="block text-sm"> 151 <label class="block text-sm">
152 <span class="text-gray-700 dark:text-gray-400">Файл</span> 152 <span class="text-gray-700 dark:text-gray-400">Файл</span>
153 <input type="file" class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700 153 <input type="file" class="block w-full mt-1 text-sm dark:border-gray-600 dark:bg-gray-700
154 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple 154 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple
155 dark:text-gray-300 dark:focus:shadow-outline-gray form-input" 155 dark:text-gray-300 dark:focus:shadow-outline-gray form-input"
156 id="file" name="file"> 156 id="file" name="file" accept=".pdf, .doc, .docx">
157 @error('file') 157 @error('file')
158 <span class="text-xs text-red-600 dark:text-red-400"> 158 <span class="text-xs text-red-600 dark:text-red-400">
159 {{ $message }} 159 {{ $message }}
160 </span> 160 </span>
161 @enderror 161 @enderror
162 </label><br> 162 </label><br>
163 163
164 <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4"> 164 <div class="flex flex-col flex-wrap mb-4 space-y-4 md:flex-row md:items-end md:space-x-4">
165 <div> 165 <div>
166 <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"> 166 <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">
167 Отправить 167 Отправить
168 </button> 168 </button>
169 </div> 169 </div>
170 </div> 170 </div>
171 </div> 171 </div>
172 </form> 172 </form>
173 </div> 173 </div>
174 @endsection 174 @endsection
175 175
resources/views/employers/dialog.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 $(function(){ 5 $(function(){
6 var chatbox_div = $('.chatbox__list'); 6 var chatbox_div = $('.chatbox__list');
7 chatbox_div.scrollTop(chatbox_div.prop("scrollHeight")); 7 chatbox_div.scrollTop(chatbox_div.prop("scrollHeight"));
8 8
9 $('form.chatbox__bottom [name="file"]').on('change', function() { 9 $('form.chatbox__bottom [name="file"]').on('change', function() {
10 var fileName = $(this).val().split('\\').pop(); 10 var fileName = $(this).val().split('\\').pop();
11 $('.chatbox-file-name-wrap').text('Добавлен файл: ' + fileName); 11 $('.chatbox-file-name-wrap').text('Добавлен файл: ' + fileName);
12 }); 12 });
13 }); 13 });
14 14
15 $(document).on('change', '#send_btn', function() { 15 $(document).on('change', '#send_btn', function() {
16 var this_ = $(this); 16 var this_ = $(this);
17 var val_ = this_.val(); 17 var val_ = this_.val();
18 console.log('sort items '+val_); 18 console.log('sort items '+val_);
19 19
20 $.ajax({ 20 $.ajax({
21 type: "GET", 21 type: "GET",
22 url: "{{ route('shipping_companies') }}", 22 url: "{{ route('shipping_companies') }}",
23 data: "sort="+val_+"&block=1", 23 data: "sort="+val_+"&block=1",
24 success: function (data) { 24 success: function (data) {
25 console.log('Выбор сортировки'); 25 console.log('Выбор сортировки');
26 console.log(data); 26 console.log(data);
27 $('#block_1').html(data); 27 $('#block_1').html(data);
28 }, 28 },
29 headers: { 29 headers: {
30 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 30 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
31 }, 31 },
32 error: function (data) { 32 error: function (data) {
33 data = JSON.stringify(data); 33 data = JSON.stringify(data);
34 console.log('Error: ' + data); 34 console.log('Error: ' + data);
35 } 35 }
36 }); 36 });
37 37
38 $.ajax({ 38 $.ajax({
39 type: "GET", 39 type: "GET",
40 url: "{{ route('shipping_companies') }}", 40 url: "{{ route('shipping_companies') }}",
41 data: "sort="+val_+"&block=2", 41 data: "sort="+val_+"&block=2",
42 success: function (data) { 42 success: function (data) {
43 console.log('Выбор сортировки2'); 43 console.log('Выбор сортировки2');
44 console.log(data); 44 console.log(data);
45 history.pushState({}, '', "{{ route('shipping_companies') }}?sort="+val_+"@if (isset($_GET['page']))&page={{ $_GET['page'] }}@endif"); 45 history.pushState({}, '', "{{ route('shipping_companies') }}?sort="+val_+"@if (isset($_GET['page']))&page={{ $_GET['page'] }}@endif");
46 $('#block_2').html(data); 46 $('#block_2').html(data);
47 }, 47 },
48 headers: { 48 headers: {
49 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 49 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
50 }, 50 },
51 error: function (data) { 51 error: function (data) {
52 data = JSON.stringify(data); 52 data = JSON.stringify(data);
53 console.log('Error: ' + data); 53 console.log('Error: ' + data);
54 } 54 }
55 }); 55 });
56 }); 56 });
57 </script> 57 </script>
58 @endsection 58 @endsection
59 59
60 @section('content') 60 @section('content')
61 <section class="cabinet"> 61 <section class="cabinet">
62 <div class="container"> 62 <div class="container">
63 <ul class="breadcrumbs cabinet__breadcrumbs"> 63 <ul class="breadcrumbs cabinet__breadcrumbs">
64 <li><a href="{{ route('index') }}">Главная</a></li> 64 <li><a href="{{ route('index') }}">Главная</a></li>
65 <li><b>Личный кабинет</b></li> 65 <li><b>Личный кабинет</b></li>
66 </ul> 66 </ul>
67 <div class="cabinet__wrapper"> 67 <div class="cabinet__wrapper">
68 <div class="cabinet__side"> 68 <div class="cabinet__side">
69 <div class="cabinet__side-toper"> 69 <div class="cabinet__side-toper">
70 @include('employers.emblema') 70 @include('employers.emblema')
71 </div> 71 </div>
72 @include('employers.menu', ['item' => 5]) 72 @include('employers.menu', ['item' => 5])
73 </div> 73 </div>
74 <div class="cabinet__body"> 74 <div class="cabinet__body">
75 <div class="cabinet__body-item"> 75 <div class="cabinet__body-item">
76 <h2 class="title cabinet__title">Сообщения</h2> 76 <h2 class="title cabinet__title">Сообщения</h2>
77 </div> 77 </div>
78 <div class="cabinet__body-item"> 78 <div class="cabinet__body-item">
79 <a href="{{ route('employer.messages', ['type_message' => 'input']) }}" class="back"> 79 <a href="{{ route('employer.messages', ['type_message' => 'input']) }}" class="back">
80 <svg> 80 <svg>
81 <use xlink:href="{{ asset('images/sprite.svg#back') }}"></use> 81 <use xlink:href="{{ asset('images/sprite.svg#back') }}"></use>
82 </svg> 82 </svg>
83 <span> 83 <span>
84 К списку чатов 84 К списку чатов
85 </span> 85 </span>
86 </a> 86 </a>
87 <div class="chatbox"> 87 <div class="chatbox">
88 <div class="chatbox__toper"> 88 <div class="chatbox__toper">
89 @if ($companion->is_worker) 89 @if ($companion->is_worker)
90 <div class="chatbox__toper-info messages__item-info"> 90 <div class="chatbox__toper-info messages__item-info">
91 <div class="messages__item-photo"> 91 <div class="messages__item-photo">
92 <svg> 92 <svg>
93 <use xlink:href="{{ asset('images/sprite.svg#pic') }}"></use> 93 <use xlink:href="{{ asset('images/sprite.svg#pic') }}"></use>
94 </svg> 94 </svg>
95 @if ((isset($companion->workers[0]->photo)) && 95 @if ((isset($companion->workers[0]->photo)) &&
96 (!empty($companion->workers[0]->photo))) 96 (!empty($companion->workers[0]->photo)))
97 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($companion->workers[0]->photo)) }}" alt=""> 97 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($companion->workers[0]->photo)) }}" alt="">
98 @else 98 @else
99 <img src="{{ asset('images/default_man.jpg') }}" alt=""> 99 <img src="{{ asset('images/default_man.jpg') }}" alt="">
100 @endif 100 @endif
101 </div> 101 </div>
102 <div class="messages__item-text"> 102 <div class="messages__item-text">
103 <div>{{ $companion->surname." ".$companion->name_man." ".$companion->surname2." (".$companion->id.")" }} </div> 103 <div>{{ $companion->surname." ".$companion->name_man." ".$companion->surname2." (".$companion->id.")" }} </div>
104 </div> 104 </div>
105 </div> 105 </div>
106 @if (isset($companion->workers[0]->id)) 106 @if (isset($companion->workers[0]->id))
107 <a href="{{ route('resume_profile', ['worker' => $companion->workers[0]->id]) }}" class="button chatbox__toper-button"> 107 <a href="{{ route('resume_profile', ['worker' => $companion->workers[0]->id]) }}" class="button chatbox__toper-button">
108 <svg> 108 <svg>
109 <use xlink:href="{{ asset('images/sprite.svg#cabinet-1') }}"></use> 109 <use xlink:href="{{ asset('images/sprite.svg#cabinet-1') }}"></use>
110 </svg> 110 </svg>
111 Перейти в профиль 111 Перейти в профиль
112 </a> 112 </a>
113 @endif 113 @endif
114 @else 114 @else
115 <div class="chatbox__toper-info messages__item-info"> 115 <div class="chatbox__toper-info messages__item-info">
116 <div class="messages__item-photo"> 116 <div class="messages__item-photo">
117 <svg> 117 <svg>
118 <use xlink:href="{{ asset('images/sprite.svg#pic') }}"></use> 118 <use xlink:href="{{ asset('images/sprite.svg#pic') }}"></use>
119 </svg> 119 </svg>
120 @if ((isset($companion->employers[0]->logo)) && 120 @if ((isset($companion->employers[0]->logo)) &&
121 (!empty($companion->employers[0]->logo))) 121 (!empty($companion->employers[0]->logo)))
122 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($companion->employers[0]->logo)) }}" alt=""> 122 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($companion->employers[0]->logo)) }}" alt="">
123 @else 123 @else
124 <img src="{{ asset('images/default_man.jpg') }}" alt=""> 124 <img src="{{ asset('images/default_man.jpg') }}" alt="">
125 @endif 125 @endif
126 </div> 126 </div>
127 <div class="messages__item-text"> 127 <div class="messages__item-text">
128 <div>{{ $companion->surname." ".$companion->name_man." ".$companion->surname2." (".$companion->id.")" }} </div> 128 <div>{{ $companion->surname." ".$companion->name_man." ".$companion->surname2." (".$companion->id.")" }} </div>
129 <div><span>Статус:</span> Работодатель или Администратор</div> 129 <div><span>Статус:</span> Работодатель или Администратор</div>
130 </div> 130 </div>
131 </div> 131 </div>
132 @if (isset($companion->employer->id)) 132 @if (isset($companion->employer->id))
133 <a href="" class="button chatbox__toper-button"> 133 <a href="" class="button chatbox__toper-button">
134 <svg> 134 <svg>
135 <use xlink:href="{{ asset('images/sprite.svg#cabinet-1') }}"></use> 135 <use xlink:href="{{ asset('images/sprite.svg#cabinet-1') }}"></use>
136 </svg> 136 </svg>
137 Перейти в профиль 137 Перейти в профиль
138 </a> 138 </a>
139 @endif 139 @endif
140 @endif 140 @endif
141 </div> 141 </div>
142 142
143 @if ($errors->any()) 143 @if ($errors->any())
144 <div class="red bold"> 144 <div class="red bold">
145 <ul> 145 <ul>
146 @foreach ($errors->all() as $error) 146 @foreach ($errors->all() as $error)
147 <li>{{ $error }}</li> 147 <li>{{ $error }}</li>
148 @endforeach 148 @endforeach
149 </ul> 149 </ul>
150 </div> 150 </div>
151 @endif 151 @endif
152 152
153 <div class="chatbox__list" id="dialogs" name="dialogs"> 153 <div class="chatbox__list" id="dialogs" name="dialogs">
154 @if ($Messages->count()) 154 @if ($Messages->count())
155 @foreach ($Messages as $it) 155 @foreach ($Messages as $it)
156 @if ($it->user_id == $companion->id) 156 @if ($it->user_id == $companion->id)
157 <div class="chatbox__item"> 157 <div class="chatbox__item">
158 <div class="chatbox__item-photo"> 158 <div class="chatbox__item-photo">
159 <svg> 159 <svg>
160 <use xlink:href="{{ asset('images/sprite.svg#pic') }}"></use> 160 <use xlink:href="{{ asset('images/sprite.svg#pic') }}"></use>
161 </svg> 161 </svg>
162 162
163 @if ($companion->is_worker) 163 @if ($companion->is_worker)
164 @if ((isset($companion->workers[0]->photo)) && 164 @if ((isset($companion->workers[0]->photo)) &&
165 (!empty($companion->workers[0]->photo))) 165 (!empty($companion->workers[0]->photo)))
166 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($companion->workers[0]->photo)) }}" alt=""> 166 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($companion->workers[0]->photo)) }}" alt="">
167 @else 167 @else
168 <img src="{{ asset('images/default_man.jpg') }}" alt=""> 168 <img src="{{ asset('images/default_man.jpg') }}" alt="">
169 @endif 169 @endif
170 @else 170 @else
171 @if ((isset($companion->employers[0]->logo)) && 171 @if ((isset($companion->employers[0]->logo)) &&
172 (!empty($companion->employers[0]->logo))) 172 (!empty($companion->employers[0]->logo)))
173 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($companion->employers[0]->logo)) }}" alt=""> 173 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($companion->employers[0]->logo)) }}" alt="">
174 @else 174 @else
175 <img src="{{ asset('images/default_man.jpg') }}" alt=""> 175 <img src="{{ asset('images/default_man.jpg') }}" alt="">
176 @endif 176 @endif
177 @endif 177 @endif
178 </div> 178 </div>
179 <div class="chatbox__item-body"> 179 <div class="chatbox__item-body">
180 @if($it->text || $it->reply_message_id || $it->ad_employer_id > 0) 180 @if($it->text || $it->reply_message_id || $it->ad_employer_id > 0)
181 <div class="chatbox__item-text"> 181 <div class="chatbox__item-text">
182 @if($it->ad_employer_id > 0) 182 @if($it->ad_employer_id > 0)
183 <b>Отклик на вакансию</b> "{{ \App\Models\Ad_employer::find($it->ad_employer_id)?->name }}"<br> 183 <b>Отклик на вакансию</b> "{{ \App\Models\Ad_employer::find($it->ad_employer_id)?->name }}"<br>
184 @if($it->text) 184 @if($it->text)
185 <b>Комментарий:</b> {{ $it->text }} 185 <b>Комментарий:</b> {{ $it->text }}
186 @endif 186 @endif
187 @else 187 @else
188 @if($it->text) 188 @if($it->text)
189 {{ $it->text }} 189 {{ $it->text }}
190 @endif 190 @endif
191 @endif 191 @endif
192 192
193 @if($it->reply_message_id) 193 @if($it->reply_message_id)
194 <div class="reply-message"> 194 <div class="reply-message">
195 {{ $it->reply_message->text }} 195 {{ $it->reply_message->text }}
196 </div> 196 </div>
197 @endif 197 @endif
198 </div> 198 </div>
199 @endif 199 @endif
200 @if ((isset($it->file)) && (!empty($it->file))) 200 @if ((isset($it->file)) && (!empty($it->file)))
201 <div class="chatbox__item-text chatbox__item-body-file-name-wrap"> 201 <div class="chatbox__item-text chatbox__item-body-file-name-wrap">
202 <div class=""> 202 <div class="">
203 @if($it->original_file_name) 203 @if($it->original_file_name)
204 {{ $it->original_file_name }} 204 {{ $it->original_file_name }}
205 @else 205 @else
206 <svg> 206 <svg>
207 <use xlink:href="{{ asset('images/sprite.svg#clip') }}"></use> 207 <use xlink:href="{{ asset('images/sprite.svg#clip') }}"></use>
208 </svg> 208 </svg>
209 @endif 209 @endif
210 </div> 210 </div>
211 <a href="{{ asset(Storage::url($it->file)) }}" class=""> 211 <a href="{{ asset(Storage::url($it->file)) }}" class="">
212 Скачать 212 Скачать
213 </a> 213 </a>
214 </div> 214 </div>
215 @endif 215 @endif
216 </div> 216 </div>
217 <div class="chatbox__item-time">{{ $it->created_at }}</div> 217 <div class="chatbox__item-time">{{ $it->created_at }}</div>
218 </div> 218 </div>
219 @else 219 @else
220 <div class="chatbox__item chatbox__item_reverse"> 220 <div class="chatbox__item chatbox__item_reverse">
221 <div class="chatbox__item-photo"> 221 <div class="chatbox__item-photo">
222 <svg> 222 <svg>
223 <use xlink:href="{{ asset('images/sprite.svg#pic') }}"></use> 223 <use xlink:href="{{ asset('images/sprite.svg#pic') }}"></use>
224 </svg> 224 </svg>
225 225
226 @if ($sender->is_worker) 226 @if ($sender->is_worker)
227 @if ((isset($sender->workers[0]->photo)) && 227 @if ((isset($sender->workers[0]->photo)) &&
228 (!empty($sender->workers[0]->photo))) 228 (!empty($sender->workers[0]->photo)))
229 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($sender->workers[0]->photo)) }}" alt=""> 229 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($sender->workers[0]->photo)) }}" alt="">
230 @else 230 @else
231 <img src="{{ asset('images/default_man.jpg') }}" alt=""> 231 <img src="{{ asset('images/default_man.jpg') }}" alt="">
232 @endif 232 @endif
233 @else 233 @else
234 @if ((isset($sender->employers[0]->logo)) && 234 @if ((isset($sender->employers[0]->logo)) &&
235 (!empty($sender->employers[0]->logo))) 235 (!empty($sender->employers[0]->logo)))
236 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($sender->employers[0]->logo)) }}" alt=""> 236 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($sender->employers[0]->logo)) }}" alt="">
237 @else 237 @else
238 <img src="{{ asset('images/default_man.jpg') }}" alt=""> 238 <img src="{{ asset('images/default_man.jpg') }}" alt="">
239 @endif 239 @endif
240 @endif 240 @endif
241 241
242 </div> 242 </div>
243 <div class="chatbox__item-body"> 243 <div class="chatbox__item-body">
244 @if($it->text) 244 @if($it->text)
245 <div class="chatbox__item-text"> 245 <div class="chatbox__item-text">
246 @if(\App\Models\Ad_employer::where('id', $it->ad_employer_id)->exists()) 246 @if(\App\Models\Ad_employer::where('id', $it->ad_employer_id)->exists())
247 <b>Отклик на вакансию</b> "{{ \App\Models\Ad_employer::find($it->ad_employer_id)->name }}"<br> 247 <b>Отклик на вакансию</b> "{{ \App\Models\Ad_employer::find($it->ad_employer_id)->name }}"<br>
248 @if($it->text) 248 @if($it->text)
249 <b>Комментарий:</b> {{ $it->text }} 249 <b>Комментарий:</b> {{ $it->text }}
250 @endif 250 @endif
251 @else 251 @else
252 @if($it->text) 252 @if($it->text)
253 {{ $it->text }} 253 {{ $it->text }}
254 @endif 254 @endif
255 @endif</div> 255 @endif</div>
256 @endif 256 @endif
257 @if ((isset($it->file)) && (!empty($it->file))) 257 @if ((isset($it->file)) && (!empty($it->file)))
258 <div class="chatbox__item-text chatbox__item-body-file-name-wrap"> 258 <div class="chatbox__item-text chatbox__item-body-file-name-wrap">
259 <a href="{{ asset(Storage::url($it->file)) }}" class=""> 259 <a href="{{ asset(Storage::url($it->file)) }}" class="">
260 Скачать 260 Скачать
261 </a> 261 </a>
262 <div class=""> 262 <div class="">
263 @if($it->original_file_name) 263 @if($it->original_file_name)
264 {{ $it->original_file_name }} 264 {{ $it->original_file_name }}
265 @else 265 @else
266 <svg> 266 <svg>
267 <use xlink:href="{{ asset('images/sprite.svg#clip') }}"></use> 267 <use xlink:href="{{ asset('images/sprite.svg#clip') }}"></use>
268 </svg> 268 </svg>
269 @endif 269 @endif
270 </div> 270 </div>
271 </div> 271 </div>
272 @endif 272 @endif
273 </div> 273 </div>
274 <div class="chatbox__item-time">{{ $it->created_at }}</div> 274 <div class="chatbox__item-time">{{ $it->created_at }}</div>
275 </div> 275 </div>
276 @endif 276 @endif
277 277
278 @endforeach 278 @endforeach
279 @endif 279 @endif
280 </div> 280 </div>
281 <div> 281 <div>
282 <form action="{{ route('employer.test123') }}" class="chatbox__bottom" enctype="multipart/form-data" method="POST" > 282 <form action="{{ route('employer.test123') }}" class="chatbox__bottom" enctype="multipart/form-data" method="POST" >
283 @csrf 283 @csrf
284 <label class="chatbox__bottom-file"> 284 <label class="chatbox__bottom-file">
285 <input id="file" name="file" type="file"> 285 <input id="file" name="file" type="file" accept=".pdf, .doc, .docx">
286 <svg> 286 <svg>
287 <use xlink:href="{{ asset('images/sprite.svg#clip') }}"></use> 287 <use xlink:href="{{ asset('images/sprite.svg#clip') }}"></use>
288 </svg> 288 </svg>
289 </label> 289 </label>
290 <input type="hidden" name="_token" value="{{ csrf_token() }}"/> 290 <input type="hidden" name="_token" value="{{ csrf_token() }}"/>
291 <input type="hidden" id="user_id" name="user_id" value="{{ $sender->id }}"/> 291 <input type="hidden" id="user_id" name="user_id" value="{{ $sender->id }}"/>
292 <input type="hidden" id="to_user_id" name="to_user_id" value="{{ $companion->id }}"/> 292 <input type="hidden" id="to_user_id" name="to_user_id" value="{{ $companion->id }}"/>
293 <input type="hidden" id="ad_employer_id" name="ad_employer_id" value="{{ $ad_employer }}"/> 293 <input type="hidden" id="ad_employer_id" name="ad_employer_id" value="{{ $ad_employer }}"/>
294 <input type="hidden" id="ad_name" name="ad_name" value="@if (isset($_GET['ad_name'])){{ $_GET['ad_name'] }} @endif"/> 294 <input type="hidden" id="ad_name" name="ad_name" value="@if (isset($_GET['ad_name'])){{ $_GET['ad_name'] }} @endif"/>
295 <input id="text" name="text" type="text" class="input chatbox__bottom-text" placeholder="Ответить"> 295 <input id="text" name="text" type="text" class="input chatbox__bottom-text" placeholder="Ответить">
296 <button type="submit" id="send_btn" name="send_btn" class="chatbox__bottom-send"> 296 <button type="submit" id="send_btn" name="send_btn" class="chatbox__bottom-send">
297 <svg> 297 <svg>
298 <use xlink:href="{{ asset('images/sprite.svg#arrow') }}"></use> 298 <use xlink:href="{{ asset('images/sprite.svg#arrow') }}"></use>
299 </svg> 299 </svg>
300 </button> 300 </button>
301 </form> 301 </form>
302 <div class="chatbox-file-name-wrap mt-5 fw600"></div> 302 <div class="chatbox-file-name-wrap mt-5 fw600"></div>
303 </div> 303 </div>
304 </div> 304 </div>
305 </div> 305 </div>
306 </div> 306 </div>
307 </div> 307 </div>
308 </div> 308 </div>
309 </section> 309 </section>
310 </div> 310 </div>
311 @endsection 311 @endsection
312 312
resources/views/employers/edit_vacancy.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('Приближаемся к системе, нас рой тут...'); 5 console.log('Приближаемся к системе, нас рой тут...');
6 $(document).on('change', '#position_id', function() { 6 $(document).on('change', '#position_id', function() {
7 var this_ = $(this); 7 var this_ = $(this);
8 var val_ = this_.val(); 8 var val_ = this_.val();
9 var ajax_ = $('#job_title_id'); 9 var ajax_ = $('#job_title_id');
10 10
11 console.log('Создания списка людей, которые поднимутся на корабль...'); 11 console.log('Создания списка людей, которые поднимутся на корабль...');
12 12
13 $.ajax({ 13 $.ajax({
14 type: "GET", 14 type: "GET",
15 url: "{{ route('employer.selected_people') }}", 15 url: "{{ route('employer.selected_people') }}",
16 data: "id="+val_, 16 data: "id="+val_,
17 success: function (data) { 17 success: function (data) {
18 console.log('Ответка пришла'); 18 console.log('Ответка пришла');
19 console.log('Список избранных людей создан'); 19 console.log('Список избранных людей создан');
20 ajax_.html(data); 20 ajax_.html(data);
21 }, 21 },
22 headers: { 22 headers: {
23 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 23 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
24 }, 24 },
25 error: function (data) { 25 error: function (data) {
26 console.log('Обрыв связи'); 26 console.log('Обрыв связи');
27 console.log('Error: ' + data); 27 console.log('Error: ' + data);
28 } 28 }
29 }); 29 });
30 }); 30 });
31 </script> 31 </script>
32 @endsection 32 @endsection
33 @section('content') 33 @section('content')
34 <section class="cabinet"> 34 <section class="cabinet">
35 <div class="container"> 35 <div class="container">
36 <ul class="breadcrumbs cabinet__breadcrumbs"> 36 <ul class="breadcrumbs cabinet__breadcrumbs">
37 <li><a href="{{ route('index') }}">Главная</a></li> 37 <li><a href="{{ route('index') }}">Главная</a></li>
38 <li><b>Личный кабинет</b></li> 38 <li><b>Личный кабинет</b></li>
39 </ul> 39 </ul>
40 <div class="cabinet__wrapper"> 40 <div class="cabinet__wrapper">
41 <div class="cabinet__side"> 41 <div class="cabinet__side">
42 <div class="cabinet__side-toper"> 42 <div class="cabinet__side-toper">
43 43
44 @include('employers.emblema') 44 @include('employers.emblema')
45 45
46 </div> 46 </div>
47 47
48 @include('employers.menu', ['item' => 3]) 48 @include('employers.menu', ['item' => 3])
49 49
50 </div> 50 </div>
51 51
52 <form class="cabinet__body" action="{{ route('employer.vacancy_save_me', ['ad_employer' => $ad_employer->id]) }}" method="POST"> 52 <form class="cabinet__body" action="{{ route('employer.vacancy_save_me', ['ad_employer' => $ad_employer->id]) }}" method="POST">
53 @csrf 53 @csrf
54 <input type="hidden" name="employer_id" value="{{ $Employer->id }}"/> 54 <input type="hidden" name="employer_id" value="{{ $Employer->id }}"/>
55 <div class="cabinet__body-item"> 55 <div class="cabinet__body-item">
56 <div class="cabinet__descr"> 56 <div class="cabinet__descr">
57 <h2 class="title cabinet__title">Редактировать вакансию</h2> 57 <h2 class="title cabinet__title">Редактировать вакансию</h2>
58 <p class="cabinet__text"><b>Данные по вакансии</b></p> 58 <p class="cabinet__text"><b>Данные по вакансии</b></p>
59 <p class="cabinet__text">Все поля обязательны для заполнения *</p> 59 <p class="cabinet__text">Все поля обязательны для заполнения *</p>
60 </div> 60 </div>
61 </div> 61 </div>
62 <div class="cabinet__body-item"> 62 <div class="cabinet__body-item">
63 <h4>Поля для вакансии</h4> 63 <h4>Поля для вакансии</h4>
64 <div class="cabinet__inputs"> 64 <div class="cabinet__inputs">
65 <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group"> 65 <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group">
66 <label class="form-group__label">Название вакансии</label> 66 <label class="form-group__label">Название вакансии</label>
67 <div class="form-group__item"> 67 <div class="form-group__item">
68 <input type="text" class="input" name="name" id="name" placeholder="Работа в море" value="{{ old('name') ?? $ad_employer->name ?? '' }}" required> 68 <input type="text" class="input" name="name" id="name" placeholder="Работа в море" value="{{ old('name') ?? $ad_employer->name ?? '' }}" required>
69 @error('name') 69 @error('name')
70 <span class="text-xs text-red-600 dark:text-red-400"> 70 <span class="text-xs text-red-600 dark:text-red-400">
71 {{ $message }} 71 {{ $message }}
72 </span> 72 </span>
73 @enderror 73 @enderror
74 </div> 74 </div>
75 </div> 75 </div>
76 76
77 <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group" style="display:none"> 77 <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group" style="display:none">
78 <label class="form-group__label">Телефон</label> 78 <label class="form-group__label">Телефон</label>
79 <div class="form-group__item"> 79 <div class="form-group__item">
80 <input type="text" class="input" name="telephone" id="telephone" value="{{ old('telephone') ?? $ad_employer->telephone ?? '' }}" placeholder="Свой телефон"> 80 <input type="text" class="input" name="telephone" id="telephone" value="{{ old('telephone') ?? $ad_employer->telephone ?? '' }}" placeholder="Свой телефон">
81 @error('telephone') 81 @error('telephone')
82 <span class="text-xs text-red-600 dark:text-red-400"> 82 <span class="text-xs text-red-600 dark:text-red-400">
83 {{ $message }} 83 {{ $message }}
84 </span> 84 </span>
85 @enderror 85 @enderror
86 </div> 86 </div>
87 </div> 87 </div>
88 88
89 <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group" style="display:none"> 89 <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group" style="display:none">
90 <label class="form-group__label">Емайл</label> 90 <label class="form-group__label">Емайл</label>
91 <div class="form-group__item"> 91 <div class="form-group__item">
92 <input type="text" class="input" name="email" id="email" value="{{ old('email') ?? $ad_employer->email ?? '' }}" placeholder="Своя почту"> 92 <input type="text" class="input" name="email" id="email" value="{{ old('email') ?? $ad_employer->email ?? '' }}" placeholder="Своя почту">
93 @error('email') 93 @error('email')
94 <span class="text-xs text-red-600 dark:text-red-400"> 94 <span class="text-xs text-red-600 dark:text-red-400">
95 {{ $message }} 95 {{ $message }}
96 </span> 96 </span>
97 @enderror 97 @enderror
98 </div> 98 </div>
99 </div> 99 </div>
100 100
101 <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group" style="display:none"> 101 <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group" style="display:none">
102 <label class="form-group__label">Зарплата среднестатистическая для вакансии</label> 102 <label class="form-group__label">Зарплата среднестатистическая для вакансии</label>
103 <div class="form-group__item"> 103 <div class="form-group__item">
104 <input type="text" class="input" name="salary" id="salary" value="{{ old('salary') ?? $ad_employer->salary ??'' }}" placeholder="Среднестатистическая зарплата"> 104 <input type="text" class="input" name="salary" id="salary" value="{{ old('salary') ?? $ad_employer->salary ??'' }}" placeholder="Среднестатистическая зарплата">
105 @error('salary') 105 @error('salary')
106 <span class="text-xs text-red-600 dark:text-red-400"> 106 <span class="text-xs text-red-600 dark:text-red-400">
107 {{ $message }} 107 {{ $message }}
108 </span> 108 </span>
109 @enderror 109 @enderror
110 </div> 110 </div>
111 </div> 111 </div>
112 112
113 <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group" style="display: none"> 113 <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group" style="display: none">
114 <label class="form-group__label">Город посадки</label> 114 <label class="form-group__label">Город посадки</label>
115 <div class="form-group__item"> 115 <div class="form-group__item">
116 <input type="text" class="input" name="city" id="city" value="{{ old('city') ?? $ad_employer->city ?? 'Не указан' }}" placeholder="Севастополь"> 116 <input type="text" class="input" name="city" id="city" value="{{ old('city') ?? $ad_employer->city ?? 'Не указан' }}" placeholder="Севастополь">
117 @error('city') 117 @error('city')
118 <span class="text-xs text-red-600"> 118 <span class="text-xs text-red-600">
119 {{ $message }} 119 {{ $message }}
120 </span> 120 </span>
121 @enderror 121 @enderror
122 </div> 122 </div>
123 </div> 123 </div>
124 <!--<div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group" style="">
125 <label class="form-group__label">Категория (локация)</label>
126 <div class="form-group__item">
127 <div class="select">
128 <select class="js-select2" name="category_id" id="category_id">
129 php $i = 1 endphp
130 if ($Positions->count())
131 foreach($Positions as $j)
132 if ($i == 1) <option> Выберите категорию из списка</option>
133 else
134 <option value=" $j->id }}" if ($ad_employer->category_id == $j->id) selected endif>$j->name }}</option>
135 endif
136 php $i++ endphp
137 endforeach
138 endif
139 </select>
140 error('category_id')
141 <span class="text-xs text-red-600 dark:text-red-400">
142 $message }}
143 </span>
144 enderror
145 </div>
146 </div>
147 </div>-->
148
149 <!--foreach ($ad_employer->jobs_code as $it_um)
150 <pre> print_r($it_um) }}</pre>
151 endforeach-->
152 <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group"> 124 <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group">
153 <label class="form-group__label">Редактирование должностей</label> 125 <label class="form-group__label">Редактирование должностей</label>
154 <div class="form-group__item"> 126 <div class="form-group__item">
155 <div class="select"> 127 <div class="select">
156 <select class="js-select2" name="job_title_id[]" id="job_title_id[]" multiple="multiple"> 128 <select class="js-select2" name="job_title_id[]" id="job_title_id[]" multiple="multiple">
157 @php $i = 1 @endphp 129 @php $i = 1 @endphp
158 @if ($jobs->count()) 130 @if ($jobs->count())
159 @foreach($jobs as $it) 131 @foreach($jobs as $it)
160 @php $selected = false; @endphp 132 @php $selected = false; @endphp
161 @foreach ($ad_employer->jobs_code as $it_um) 133 @foreach ($ad_employer->jobs_code as $it_um)
162 @if (isset($it_um->job_title_id)) 134 @if (isset($it_um->job_title_id))
163 @if ($it_um->job_title_id == $it->id)) 135 @if ($it_um->job_title_id == $it->id))
164 @php $selected = true; @endphp 136 @php $selected = true; @endphp
165 @endif 137 @endif
166 @endif 138 @endif
167 @endforeach 139 @endforeach
168 <option value="{{ $it->id }}" @if ($selected) selected @endif>{{ $it->name }}</option> 140 <option value="{{ $it->id }}" @if ($selected) selected @endif>{{ $it->name }}</option>
169 @endforeach 141 @endforeach
170 @endif 142 @endif
171 </select> 143 </select>
172 </div> 144 </div>
173 </div> 145 </div>
174 </div> 146 </div>
175 147
176 <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group"> 148 <div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group">
177 <label class="form-group__label">Описание вакансии</label> 149 <label class="form-group__label">Описание вакансии</label>
178 <div class="form-group__item"> 150 <div class="form-group__item">
179 <textarea class="textarea ckeditor" name="text" id="text">{{ old('text') ?? $ad_employer->text ?? '' }}</textarea> 151 <textarea class="textarea ckeditor" name="text" id="text">{{ old('text') ?? $ad_employer->text ?? '' }}</textarea>
180 @error('text') 152 @error('text')
181 <span class="text-xs text-red-600"> 153 <span class="text-xs text-red-600">
182 {{ $message }} 154 {{ $message }}
183 </span> 155 </span>
184 @enderror 156 @enderror
185 </div> 157 </div>
186 </div> 158 </div>
187
188 <!--<div class="cabinet__inputs-item cabinet__inputs-item_fullwidth form-group">
189 <h4 class="form-group__label">Редактирование должностей</h4>
190 <div class="form-group__item">
191 <a href=" route('employer.add_job_in_vac', ['ad_employer' => $ad_employer->id]) }}" class="button">Добавить</a>
192
193 if ($ad_employer->jobs->count())
194 foreach ($ad_employer->jobs as $key => $it_um)
195 <p>if (isset($ad_employer->jobs_code[$key]))
196 <a href=" route('employer.edit_job_in_vac', ['ad_job' => $ad_employer->jobs_code[$key]->id, 'ad_employer' => $ad_employer->id, 'job_title_id' => $it_um->id]) }}" style="text-decoration: underline">$it_um->name}}</a>
197 <a href=" route('employer.delete_job_in_vac', ['ad_job' => $ad_employer->jobs_code[$key]->id]) }}" style="text-decoration: underline">(Del)</a>
198 endif
199 </p>
200 endforeach
201 else
202 Нет связанных <br> с вакансией должностей
203 endif
204 </div>
205 </div>-->
206 </div> 159 </div>
207 160
208 <a class="button cabinet__submit" href="{{ route('employer.vacancy_list') }}">Назад</a> 161 <a class="button cabinet__submit" href="{{ route('employer.vacancy_list') }}">Назад</a>
209 <button type="submit" class="button cabinet__submit">Опубликовать</button> 162 <button type="submit" class="button cabinet__submit">Сохранить и опубликовать</button>
210 </div> 163 </div>
211 </form> 164 </form>
212 </div> 165 </div>
213 </div> 166 </div>
214 </section> 167 </section>
215 </div> 168 </div>
216 <script src="//cdn.ckeditor.com/4.14.0/standard/ckeditor.js"></script> 169 <script src="//cdn.ckeditor.com/4.14.0/standard/ckeditor.js"></script>
217 <script> 170 <script>
218 CKEDITOR.replace('text'); 171 CKEDITOR.replace('text');
219 //CKEDITOR.replace( 'text', { 172 //CKEDITOR.replace( 'text', {
220 // filebrowserUploadUrl: "{{route('ckeditor.image-upload', ['_token' => csrf_token() ])}}", 173 // filebrowserUploadUrl: "{{route('ckeditor.image-upload', ['_token' => csrf_token() ])}}",
221 // filebrowserImageUploadUrl: "{{ route('ckeditor.image-upload', ['_token' => csrf_token() ])}}", 174 // filebrowserImageUploadUrl: "{{ route('ckeditor.image-upload', ['_token' => csrf_token() ])}}",
222 // filebrowserUploadMethod: 'form' 175 // filebrowserUploadMethod: 'form'
223 // }); 176 // });
224 </script> 177 </script>
225 @endsection 178 @endsection
226 179
resources/views/employers/menu.blade.php
1 <div class="cabinet__side-item"> 1 <div class="cabinet__side-item">
2 <div class="cabinet__menu"> 2 <div class="cabinet__menu">
3 <button type="button" class="cabinet__menu-toper js-toggle"> 3 <button type="button" class="cabinet__menu-toper js-toggle">
4 <span class="cabinet__menu-toper-text"></span> 4 <span class="cabinet__menu-toper-text"></span>
5 <i class="cabinet__menu-toper-arrow"> 5 <i class="cabinet__menu-toper-arrow">
6 <svg> 6 <svg>
7 <use xlink:href="{{ asset('images/sprite.svg#arrow') }}"></use> 7 <use xlink:href="{{ asset('images/sprite.svg#arrow') }}"></use>
8 </svg> 8 </svg>
9 </i> 9 </i>
10 </button> 10 </button>
11 <div class="cabinet__menu-body"> 11 <div class="cabinet__menu-body">
12 <div class="cabinet__menu-items"> 12 <div class="cabinet__menu-items">
13 <a href="{{ route('employer.employer_info') }}" class="cabinet__menu-item @if ($item==0) active @endif"> 13 <a href="{{ route('employer.employer_info') }}" class="cabinet__menu-item @if ($item==0) active @endif">
14 <i> 14 <i>
15 <svg> 15 <svg>
16 <use xlink:href="{{ asset('images/sprite.svg#cabinet-1') }}"></use> 16 <use xlink:href="{{ asset('images/sprite.svg#cabinet-1') }}"></use>
17 </svg> 17 </svg>
18 </i> 18 </i>
19 <span>Личные данные</span> 19 <span>Личные данные</span>
20 </a> 20 </a>
21 <a href="{{ route('employer.cabinet') }}" class="cabinet__menu-item @if ($item==1) active @endif"> 21 <a href="{{ route('employer.cabinet') }}" class="cabinet__menu-item @if ($item==1) active @endif">
22 <i> 22 <i>
23 <svg> 23 <svg>
24 <use xlink:href="{{ asset('images/sprite.svg#cabinet-1') }}"></use> 24 <use xlink:href="{{ asset('images/sprite.svg#user_alt') }}"></use>
25 </svg> 25 </svg>
26 </i> 26 </i>
27 <span>Профиль</span> 27 <span>Профиль</span>
28 </a> 28 </a>
29 @if ((!Auth()->user()->is_worker) && (Auth()->user()->is_public)) 29 @if ((!Auth()->user()->is_worker) && (Auth()->user()->is_public))
30 <a href="{{ route('employer.cabinet_vacancie') }}" class="cabinet__menu-item @if ($item==2) active @endif"> 30 <a href="{{ route('employer.cabinet_vacancie') }}" class="cabinet__menu-item @if ($item==2) active @endif">
31 <i> 31 <i>
32 <svg> 32 <svg>
33 <use xlink:href="{{ asset('images/sprite.svg#cabinet-2') }}"></use> 33 <use xlink:href="{{ asset('images/sprite.svg#cabinet-2') }}"></use>
34 </svg> 34 </svg>
35 </i> 35 </i>
36 <span>Разместить вакансию</span> 36 <span>Разместить вакансию</span>
37 </a> 37 </a>
38 @else 38 @else
39 <a href="{{ route('employer.cabinet_vacancie_danger') }}" class="cabinet__menu-item @if ($item==2) active @endif"> 39 <a href="{{ route('employer.cabinet_vacancie_danger') }}" class="cabinet__menu-item @if ($item==2) active @endif">
40 <i> 40 <i>
41 <svg> 41 <svg>
42 <use xlink:href="{{ asset('images/sprite.svg#cabinet-2') }}"></use> 42 <use xlink:href="{{ asset('images/sprite.svg#cabinet-2') }}"></use>
43 </svg> 43 </svg>
44 </i> 44 </i>
45 <span>Разместить вакансию</span> 45 <span>Разместить вакансию</span>
46 </a> 46 </a>
47 @endif 47 @endif
48 <a href="{{ route('employer.vacancy_list') }}" class="cabinet__menu-item @if ($item==3) active @endif"> 48 <a href="{{ route('employer.vacancy_list') }}" class="cabinet__menu-item @if ($item==3) active @endif">
49 <i> 49 <i>
50 <svg> 50 <svg>
51 <use xlink:href="{{ asset('images/sprite.svg#cabinet-3') }}"></use> 51 <use xlink:href="{{ asset('images/sprite.svg#cabinet-3') }}"></use>
52 </svg> 52 </svg>
53 </i> 53 </i>
54 <span>Мои вакансии</span> 54 <span>Мои вакансии</span>
55 </a> 55 </a>
56 <a href="{{ route('employer.messages', ['type_message' => 'input']) }}" class="cabinet__menu-item @if ($item==5) active @endif"> 56 <a href="{{ route('employer.messages', ['type_message' => 'input']) }}" class="cabinet__menu-item @if ($item==5) active @endif">
57 <i> 57 <i>
58 <svg> 58 <svg>
59 <use xlink:href="{{ asset('images/sprite.svg#cabinet-5') }}"></use> 59 <use xlink:href="{{ asset('images/sprite.svg#cabinet-5') }}"></use>
60 </svg> 60 </svg>
61 </i> 61 </i>
62 <span>Сообщения</span> 62 <span>Сообщения</span>
63 </a> 63 </a>
64 <a href="{{ route('employer.favorites') }}" class="cabinet__menu-item @if ($item==6) active @endif"> 64 <a href="{{ route('employer.favorites') }}" class="cabinet__menu-item @if ($item==6) active @endif">
65 <i> 65 <i>
66 <svg> 66 <svg>
67 <use xlink:href="{{ asset('images/sprite.svg#cabinet-6') }}"></use> 67 <use xlink:href="{{ asset('images/sprite.svg#cabinet-6') }}"></use>
68 </svg> 68 </svg>
69 </i> 69 </i>
70 <span>Избранные кандидаты</span> 70 <span>Избранные кандидаты</span>
71 </a> 71 </a>
72 <a href="{{ route('employer.autolift') }}" class="cabinet__menu-item @if ($item==15) active @endif"> 72 <a href="{{ route('employer.autolift') }}" class="cabinet__menu-item @if ($item==15) active @endif">
73 <i> 73 <i>
74 <svg> 74 <svg>
75 <use xlink:href="{{ asset('images/sprite.svg#refresh') }}"></use> 75 <use xlink:href="{{ asset('images/sprite.svg#refresh') }}"></use>
76 </svg> 76 </svg>
77 </i> 77 </i>
78 <span>Автоподнятие вакансий</span> 78 <span>Автоподнятие вакансий</span>
79 </a> 79 </a>
80 @if ((!Auth()->user()->is_worker) && (Auth()->user()->is_lookin)) 80 @if ((!Auth()->user()->is_worker) && (Auth()->user()->is_lookin))
81 <a href="{{ route('employer.bd') }}" class="cabinet__menu-item @if ($item==7) active @endif"> 81 <a href="{{ route('employer.bd') }}" class="cabinet__menu-item @if ($item==7) active @endif">
82 <i> 82 <i>
83 <svg> 83 <svg>
84 <use xlink:href="{{ asset('images/sprite.svg#cabinet-7')}}"></use> 84 <use xlink:href="{{ asset('images/sprite.svg#cabinet-7')}}"></use>
85 </svg> 85 </svg>
86 </i> 86 </i>
87 <span>База данных</span> 87 <span>База данных</span>
88 </a> 88 </a>
89 <a href="{{ route('bd_resume') }}" target="_blank" class="cabinet__menu-item @if ($item==8) active @endif"> 89 <a href="{{ route('bd_resume') }}" target="_blank" class="cabinet__menu-item @if ($item==8) active @endif">
90 <i> 90 <i>
91 <svg> 91 <svg>
92 <use xlink:href="{{ asset('images/sprite.svg#cabinet-8') }}"></use> 92 <use xlink:href="{{ asset('images/sprite.svg#cabinet-8') }}"></use>
93 </svg> 93 </svg>
94 </i> 94 </i>
95 <span>База резюме</span> 95 <span>База резюме</span>
96 </a> 96 </a>
97 @endif 97 @endif
98 <a href="{{ route('employer.send_all_messages') }}" class="cabinet__menu-item @if ($item==9) active @endif"> 98 <a href="{{ route('employer.send_all_messages') }}" class="cabinet__menu-item @if ($item==9) active @endif">
99 <i> 99 <i>
100 <svg> 100 <svg>
101 <use xlink:href="{{ asset('images/sprite.svg#cabinet-9') }}"></use> 101 <use xlink:href="{{ asset('images/sprite.svg#cabinet-9') }}"></use>
102 </svg> 102 </svg>
103 </i> 103 </i>
104 <span>Рассылка сообщений</span> 104 <span>Рассылка сообщений</span>
105 </a> 105 </a>
106 <a href="{{ route('employer.autoresponder') }}" class="cabinet__menu-item @if ($item==16) active @endif"> 106 <a href="{{ route('employer.autoresponder') }}" class="cabinet__menu-item @if ($item==16) active @endif">
107 <i> 107 <i>
108 <svg> 108 <svg>
109 <use xlink:href="{{ asset('images/sprite.svg#answering') }}"></use> 109 <use xlink:href="{{ asset('images/sprite.svg#answering') }}"></use>
110 </svg> 110 </svg>
111 </i> 111 </i>
112 <span>Автоответчик</span> 112 <span>Автоответчик</span>
113 </a> 113 </a>
114 <a href="{{ route('employer.faq') }}" class="cabinet__menu-item @if ($item==10) active @endif"> 114 <a href="{{ route('employer.faq') }}" class="cabinet__menu-item @if ($item==10) active @endif">
115 <i> 115 <i>
116 <svg> 116 <svg>
117 <use xlink:href="{{ asset('images/sprite.svg#cabinet-10') }}"></use> 117 <use xlink:href="{{ asset('images/sprite.svg#cabinet-10') }}"></use>
118 </svg> 118 </svg>
119 </i> 119 </i>
120 <span>FAQ</span> 120 <span>FAQ</span>
121 </a> 121 </a>
122 <a href="{{ route('employer.slider_flot') }}" class="cabinet__menu-item @if ($item==12) active @endif"> 122 <a href="{{ route('employer.slider_flot') }}" class="cabinet__menu-item @if ($item==12) active @endif">
123 <i> 123 <i>
124 <svg> 124 <svg>
125 <use xlink:href="{{ asset('images/sprite.svg#cabinet-11') }}"></use> 125 <use xlink:href="{{ asset('images/sprite.svg#cabinet-11') }}"></use>
126 </svg> 126 </svg>
127 </i> 127 </i>
128 <span>Мой флот</span> 128 <span>Мой флот</span>
129 </a> 129 </a>
130 130
131 <nav> 131 <nav>
132 <ul class="drop-down closed"> 132 <ul class="drop-down closed">
133 <li> 133 <li>
134 <a style="background-color: white" class="nav-button cabinet__menu-item"> 134 <a style="background-color: white" class="nav-button cabinet__menu-item">
135 <i> 135 <i>
136 <svg> 136 <svg>
137 <use xlink:href="{{ asset('images/sprite.svg#cabinet-11') }}"></use> 137 <use xlink:href="{{ asset('images/sprite.svg#settings') }}"></use>
138 </svg> 138 </svg>
139 </i> 139 </i>
140 <span>Настройки</span> 140 <span>Настройки</span>
141 </a> 141 </a>
142 </li> 142 </li>
143 <li> 143 <li>
144 <a href="{{ route('employer.subscribe') }}" class="cabinet__menu-item @if ($item==11) active @endif"> 144 <a href="{{ route('employer.subscribe') }}" class="cabinet__menu-item @if ($item==11) active @endif">
145 <i><svg> 145 <i><svg>
146 <use xlink:href="{{ asset('images/sprite.svg#cabinet-11') }}"></use> 146 <use xlink:href="{{ asset('images/sprite.svg#cabinet-11') }}"></use>
147 </svg></i> 147 </svg></i>
148 <span>Настройки уведомлений</span> 148 <span>Настройки уведомлений</span>
149 </a> 149 </a>
150 </li> 150 </li>
151 <li> 151 <li>
152 <a href="{{ route('employer.password_reset') }}" class="cabinet__menu-item green @if ($item==13) active @endif"> 152 <a href="{{ route('employer.password_reset') }}" class="cabinet__menu-item green @if ($item==13) active @endif">
153 <i></i> 153 <i></i>
154 <span>Сменить пароль</span> 154 <span>Сменить пароль</span>
155 </a> 155 </a>
156 </li> 156 </li>
157 <li> 157 <li>
158 <a href="{{ route('employer.delete_people') }}" class="cabinet__menu-item red @if ($item==14) active @endif"> 158 <a href="{{ route('employer.delete_people') }}" class="cabinet__menu-item red @if ($item==14) active @endif">
159 <i></i> 159 <i></i>
160 <span>Удалить профиль</span> 160 <span>Удалить профиль</span>
161 </a> 161 </a>
162 </li> 162 </li>
163 </ul> 163 </ul>
164 </nav> 164 </nav>
165 </div> 165 </div>
166 <div class="cabinet__menu-bottom"> 166 <div class="cabinet__menu-bottom">
167 <a href="{{ route('logout') }}" class="button cabinet__menu-leave"> 167 <a href="{{ route('logout') }}" class="button cabinet__menu-leave">
168 <svg> 168 <svg>
169 <use xlink:href="{{ asset('images/sprite.svg#leave') }}"></use> 169 <use xlink:href="{{ asset('images/sprite.svg#leave') }}"></use>
170 </svg> 170 </svg>
171 Выход 171 Выход
172 </a> 172 </a>
173 <span class="cabinet__menu-copy"> 173 <span class="cabinet__menu-copy">
174 &copy; 2020 &ndash; Rekamore.su 174 &copy; 2020 &ndash; Rekamore.su
175 </span> 175 </span>
176 </div> 176 </div>
177 </div> 177 </div>
178 </div> 178 </div>
179 </div> 179 </div>
180 180
181 <script> 181 <script>
182 $(function(){ 182 $(function(){
183 var active_menu = $('.cabinet__menu-item.active'); 183 var active_menu = $('.cabinet__menu-item.active');
184 if (active_menu.length === 1){ 184 if (active_menu.length === 1){
185 $('.cabinet__menu-toper-text').html(active_menu.html()); 185 $('.cabinet__menu-toper-text').html(active_menu.html());
186 } 186 }
187 }); 187 });
188 188
189 $(function() { 189 $(function() {
190 // Bind Click event to the drop down navigation button 190 // Bind Click event to the drop down navigation button
191 $(".nav-button").click(function() { 191 $(".nav-button").click(function() {
192 /* Toggle the CSS closed class which reduces the height of the UL thus 192 /* Toggle the CSS closed class which reduces the height of the UL thus
193 hiding all LI apart from the first */ 193 hiding all LI apart from the first */
194 $(this).parent().parent().toggleClass("closed"); 194 $(this).parent().parent().toggleClass("closed");
195 }); 195 });
196 196
197 }); 197 });
198 </script> 198 </script>
199 199
resources/views/modals/send_admin.blade.php
1 <div id="send" class="modal"> 1 <div id="send" class="modal">
2 <div class="modal__body"> 2 <div class="modal__body">
3 <div class="modal__title">Отправить сообщение работодателю</div> 3 <div class="modal__title">Отправить сообщение работодателю</div>
4 <div class="modal__text">Если у вас возникли вопросы насчет вакансии, вы можете задать их работодателю</div> 4 <div class="modal__text">Если у вас возникли вопросы насчет вакансии, вы можете задать их работодателю</div>
5 <form class="modal__form"> 5 <form class="modal__form">
6 <div class="modal__form-item error"> 6 <div class="modal__form-item error">
7 <input id="i1" type="text" class="input" placeholder="Тема" required> 7 <input id="i1" type="text" class="input" placeholder="Тема" required>
8 <label for="i1">Не заполнено поле</label> 8 <label for="i1">Не заполнено поле</label>
9 </div> 9 </div>
10 <div class="modal__form-item"> 10 <div class="modal__form-item">
11 <textarea id="i2" class="textarea" placeholder="Укажите по какому поводу вы пишите работодателю, уточните название вакансии или прикрепите ссылку на вакансию, дайте как можно больше информации.&#10;&#10;ВАЖНО не стоит писать работодателю короткий текст цитирую «Какая зарплата?, работодатель не поймет о чем речь, опишите вопрос максимально подробно»." required></textarea> 11 <textarea id="i2" class="textarea" placeholder="Укажите по какому поводу вы пишите работодателю, уточните название вакансии или прикрепите ссылку на вакансию, дайте как можно больше информации.&#10;&#10;ВАЖНО не стоит писать работодателю короткий текст цитирую «Какая зарплата?, работодатель не поймет о чем речь, опишите вопрос максимально подробно»." required></textarea>
12 <label for="i2">Не заполнено поле</label> 12 <label for="i2">Не заполнено поле</label>
13 </div> 13 </div>
14 <div class="modal__form-item"> 14 <div class="modal__form-item">
15 <div class="file"> 15 <div class="file">
16 <label class="file__input"> 16 <label class="file__input">
17 <input type="file"> 17 <input type="file" accept=".pdf, .doc, .docx">
18 <span class="button button_light"> 18 <span class="button button_light">
19 <svg> 19 <svg>
20 <use xlink:href="images/sprite.svg#share"></use> 20 <use xlink:href="images/sprite.svg#share"></use>
21 </svg> 21 </svg>
22 Прикрепить резюме 22 Прикрепить резюме
23 </span> 23 </span>
24 </label> 24 </label>
25 <div class="file__list"> 25 <div class="file__list">
26 <div class="file__list-item"> 26 <div class="file__list-item">
27 <div class="file__list-item-left"> 27 <div class="file__list-item-left">
28 <svg> 28 <svg>
29 <use xlink:href="images/sprite.svg#clip"></use> 29 <use xlink:href="images/sprite.svg#clip"></use>
30 </svg> 30 </svg>
31 <span>image1.png</span> 31 <span>image1.png</span>
32 </div> 32 </div>
33 <button type="button" class="file__list-item-right js-parent-remove"> 33 <button type="button" class="file__list-item-right js-parent-remove">
34 <svg> 34 <svg>
35 <use xlink:href="images/sprite.svg#cross-bold"></use> 35 <use xlink:href="images/sprite.svg#cross-bold"></use>
36 </svg> 36 </svg>
37 </button> 37 </button>
38 </div> 38 </div>
39 <div class="file__list-item"> 39 <div class="file__list-item">
40 <div class="file__list-item-left"> 40 <div class="file__list-item-left">
41 <svg> 41 <svg>
42 <use xlink:href="images/sprite.svg#clip"></use> 42 <use xlink:href="images/sprite.svg#clip"></use>
43 </svg> 43 </svg>
44 <span>Резюме капитана корабля</span> 44 <span>Резюме капитана корабля</span>
45 </div> 45 </div>
46 <button type="button" class="file__list-item-right js-parent-remove"> 46 <button type="button" class="file__list-item-right js-parent-remove">
47 <svg> 47 <svg>
48 <use xlink:href="images/sprite.svg#cross-bold"></use> 48 <use xlink:href="images/sprite.svg#cross-bold"></use>
49 </svg> 49 </svg>
50 </button> 50 </button>
51 </div> 51 </div>
52 </div> 52 </div>
53 </div> 53 </div>
54 </div> 54 </div>
55 <div class="modal__form-item"> 55 <div class="modal__form-item">
56 <button type="submit" class="button">Отправить</button> 56 <button type="submit" class="button">Отправить</button>
57 </div> 57 </div>
58 </form> 58 </form>
59 </div> 59 </div>
60 </div> 60 </div>
61 61
resources/views/modals/send_employer.blade.php
1 <script> 1 <script>
2 $(document).on('change', '#file', function() { 2 $(document).on('change', '#file', function() {
3 let dirArray = $(this).val().split('\\') 3 let dirArray = $(this).val().split('\\')
4 $('#this_final_name').html(dirArray[dirArray.length - 1]) 4 $('#this_final_name').html(dirArray[dirArray.length - 1])
5 }); 5 });
6 </script> 6 </script>
7 <div id="send2" class="modal"> 7 <div id="send2" class="modal">
8 <div class="modal__body"> 8 <div class="modal__body">
9 <div class="modal__title">Отправить сообщение</div> 9 <div class="modal__title">Отправить сообщение</div>
10 <form class="modal__form" id="form_from_emp" name="form_from_emp" enctype="multipart/form-data" action="{{ route('employer.new_message') }}" method="POST"> 10 <form class="modal__form" id="form_from_emp" name="form_from_emp" enctype="multipart/form-data" action="{{ route('employer.new_message') }}" method="POST">
11 @csrf 11 @csrf
12 <div class="modal__form-item" style="display:none"> 12 <div class="modal__form-item" style="display:none">
13 <!-- Отправитель сообщения: --> 13 <!-- Отправитель сообщения: -->
14 <input type="hidden" id="_user_id" name="_user_id" class="input" placeholder="user_id" value=""> 14 <input type="hidden" id="_user_id" name="_user_id" class="input" placeholder="user_id" value="">
15 <!-- Получатель сообщения: --> 15 <!-- Получатель сообщения: -->
16 <input type="hidden" id="_to_user_id" name="_to_user_id" class="input" placeholder="to_user_id" value=""> 16 <input type="hidden" id="_to_user_id" name="_to_user_id" class="input" placeholder="to_user_id" value="">
17 <!-- Вакансия: --> 17 <!-- Вакансия: -->
18 <input type="hidden" id="_vacancy" name="_vacancy" class="input" placeholder="vacancy" value=""> 18 <input type="hidden" id="_vacancy" name="_vacancy" class="input" placeholder="vacancy" value="">
19 </div> 19 </div>
20 <div class="modal__form-item"> 20 <div class="modal__form-item">
21 <input id="i1" type="text" name="title" class="input" placeholder="Тема" required> 21 <input id="i1" type="text" name="title" class="input" placeholder="Тема" required>
22 <label for="i1">Не заполнено поле</label> 22 <label for="i1">Не заполнено поле</label>
23 </div> 23 </div>
24 <div class="modal__form-item"> 24 <div class="modal__form-item">
25 <textarea id="i2" class="textarea" name="text" placeholder="Напишите текст с предложением о работе" required></textarea> 25 <textarea id="i2" class="textarea" name="text" placeholder="Напишите текст с предложением о работе" required></textarea>
26 <label for="i2">Не заполнено поле</label> 26 <label for="i2">Не заполнено поле</label>
27 </div> 27 </div>
28 <div class="modal__form-item"> 28 <div class="modal__form-item">
29 <div class="file"> 29 <div class="file">
30 <label class="file__input"> 30 <label class="file__input">
31 <input type="file" name="file" id="file"> 31 <input type="file" name="file" id="file" accept=".pdf, .doc, .docx">
32 <span class="button button_light"> 32 <span class="button button_light">
33 <svg> 33 <svg>
34 <use xlink:href="{{ asset('images/sprite.svg#share') }}"></use> 34 <use xlink:href="{{ asset('images/sprite.svg#share') }}"></use>
35 </svg> 35 </svg>
36 Прикрепить документ 36 Прикрепить документ
37 </span> 37 </span>
38 </label> 38 </label>
39 39
40 <div class="file__list"> 40 <div class="file__list">
41 <div class="file__list-item"> 41 <div class="file__list-item">
42 <div class="file__list-item-left"> 42 <div class="file__list-item-left">
43 <svg> 43 <svg>
44 <use xlink:href="{{ asset('images/sprite.svg#clip') }}"></use> 44 <use xlink:href="{{ asset('images/sprite.svg#clip') }}"></use>
45 </svg> 45 </svg>
46 <span id="this_final_name" name="this_final_name"></span> 46 <span id="this_final_name" name="this_final_name"></span>
47 </div> 47 </div>
48 <button type="button" class="file__list-item-right js-parent-remove"> 48 <button type="button" class="file__list-item-right js-parent-remove">
49 <svg> 49 <svg>
50 <use xlink:href="{{ asset('images/sprite.svg#cross-bold') }}"></use> 50 <use xlink:href="{{ asset('images/sprite.svg#cross-bold') }}"></use>
51 </svg> 51 </svg>
52 </button> 52 </button>
53 </div> 53 </div>
54 </div> 54 </div>
55 </div> 55 </div>
56 </div> 56 </div>
57 <div class="modal__form-item"> 57 <div class="modal__form-item">
58 <button type="submit" class="button">Отправить</button> 58 <button type="submit" class="button">Отправить</button>
59 </div> 59 </div>
60 </form> 60 </form>
61 </div> 61 </div>
62 </div> 62 </div>
63 63
resources/views/modals/send_worker.blade.php
1 <script> 1 <script>
2 $("#form_worker" ).submit(function(event) { 2 $("#form_worker" ).submit(function(event) {
3 var val = $(this).val(); 3 var val = $(this).val();
4 var send_title = $('#send_title'); 4 var send_title = $('#send_title');
5 var send_title_val = send_title.val(); 5 var send_title_val = send_title.val();
6 }); 6 });
7 7
8 $(document).on('change', '#btn_send_file', function() { 8 $(document).on('change', '#btn_send_file', function() {
9 9 let dirArray = $(this).val().split('\\')
10 var send_name = $('#send_name'); 10 console.log(dirArray)
11 var send_name_val = send_name.val(); 11 $('#send_name_file3').html(dirArray[dirArray.length - 1])
12 var send_name_file = $('#send_name_file'); 12 console.log($('#send_name_file3').html())
13
14 send_name_file.html(send_name_val);
15
16 }); 13 });
17 </script> 14 </script>
18 <div id="send3" class="modal"> 15 <div id="send3" class="modal">
19 <div class="modal__body"> 16 <div class="modal__body">
20 <div class="modal__title">Отправить сообщение работодателю</div> 17 <div class="modal__title">Отправить сообщение работодателю</div>
21 <form class="modal__form" id="form_worker" name="form_worker" enctype="multipart/form-data" action="{{ route('worker.new_message') }}" method="POST"> 18 <form class="modal__form" id="form_worker" name="form_worker" enctype="multipart/form-data" action="{{ route('worker.new_message') }}" method="POST">
22 @csrf 19 @csrf
23 <input type="hidden" id="worker_user_id" name="user_from" value=""> 20 <input type="hidden" id="worker_user_id" name="user_from" value="">
24 <input type="hidden" id="worker_to_user_id" name="user_to" value=""> 21 <input type="hidden" id="worker_to_user_id" name="user_to" value="">
25 <input type="hidden" id="worker_vacancy" name="vacancy" value=""> 22 <input type="hidden" id="worker_vacancy" name="vacancy" value="">
26 <div class="modal__form-item send_text_div"> 23 <div class="modal__form-item send_text_div">
27 <textarea id="i2" class="textarea" id="send_text" name="comment" placeholder="Укажите по какому поводу вы пишите работодателю, уточните название вакансии или прикрепите ссылку на вакансию, дайте как можно больше информации.&#10;&#10;ВАЖНО не стоит писать работодателю короткий текст цитирую «Какая зарплата?, работодатель не поймет о чем речь, опишите вопрос максимально подробно»." required></textarea> 24 <textarea id="i2" class="textarea" id="send_text" name="comment" placeholder="Укажите по какому поводу вы пишите работодателю, уточните название вакансии или прикрепите ссылку на вакансию, дайте как можно больше информации.&#10;&#10;ВАЖНО не стоит писать работодателю короткий текст цитирую «Какая зарплата?, работодатель не поймет о чем речь, опишите вопрос максимально подробно»." required></textarea>
28 <label for="i2">Не заполнено поле</label> 25 <label for="i2">Не заполнено поле</label>
29 </div> 26 </div>
30 <div class="modal__form-item"> 27 <div class="modal__form-item">
31 <div class="file"> 28 <div class="file">
32 <label class="file__input" id="btn_send_file" name="btn_send_file"> 29 <label class="file__input">
33 <input type="file" name="file" id="send_name"> 30 <input type="file" name="file" id="btn_send_file" accept=".pdf, .doc, .docx">
34 <span class="button button_light"> 31 <span class="button button_light">
35 <svg> 32 <svg>
36 <use xlink:href="{{ asset('images/sprite.svg#share') }}"></use> 33 <use xlink:href="{{ asset('images/sprite.svg#share') }}"></use>
37 </svg> 34 </svg>
38 Прикрепить файл-документ 35 Прикрепить файл-документ
39 </span> 36 </span>
40 </label> 37 </label>
41 38
42 <div class="file__list" id="div_file" name="div_file"> 39 <div class="file__list" id="div_file" name="div_file">
43 <div class="file__list-item"> 40 <div class="file__list-item">
44 <div class="file__list-item-left"> 41 <div class="file__list-item-left">
45 <svg> 42 <svg>
46 <use xlink:href="{{ asset('images/sprite.svg#clip') }}"></use> 43 <use xlink:href="{{ asset('images/sprite.svg#clip') }}"></use>
47 </svg> 44 </svg>
48 <span id="send_name_file" name="send_name_file"></span> 45 <span id="send_name_file3"></span>
49 </div> 46 </div>
50 <button type="button" class="file__list-item-right js-parent-remove"> 47 <button type="button" class="file__list-item-right js-parent-remove">
51 <svg> 48 <svg>
52 <use xlink:href="{{ asset('images/sprite.svg#cross-bold') }}"></use> 49 <use xlink:href="{{ asset('images/sprite.svg#cross-bold') }}"></use>
53 </svg> 50 </svg>
54 </button> 51 </button>
55 </div> 52 </div>
56 </div> 53 </div>
57 </div> 54 </div>
58 </div> 55 </div>
59 <div class="modal__form-item"> 56 <div class="modal__form-item">
60 <button type="submit" id="submit_form_worker" name="submit_form_worker" class="button">Отправить</button> 57 <button type="submit" id="submit_form_worker" name="submit_form_worker" class="button">Отправить</button>
61 </div> 58 </div>
62 </form> 59 </form>
63 </div> 60 </div>
64 </div> 61 </div>
65 62
resources/views/modals/send_worker_new.blade.php
1 <script> 1 <script>
2 $(document).on('change', '#send_name', function() { 2 $(document).on('change', '#send_name', function() {
3 let dirArray = $(this).val().split('\\') 3 let dirArray = $(this).val().split('\\')
4 $('#send_name_file').html(dirArray[dirArray.length - 1]) 4 $('#send_name_file').html(dirArray[dirArray.length - 1])
5 }); 5 });
6 </script> 6 </script>
7 <div id="send" class="modal"> 7 <div id="send" class="modal">
8 <div class="modal__body"> 8 <div class="modal__body">
9 <div class="modal__title">Отправить сообщение работодателю</div> 9 <div class="modal__title">Отправить сообщение работодателю</div>
10 <form class="modal__form" id="form_worker" name="form_worker" enctype="multipart/form-data" action="{{ route('worker.new_message') }}" method="POST"> 10 <form class="modal__form" id="form_worker" name="form_worker" enctype="multipart/form-data" action="{{ route('worker.new_message') }}" method="POST">
11 @csrf 11 @csrf
12 <div class="modal__form-item" style="display: none"> 12 <div class="modal__form-item" style="display: none">
13 Отправитель сообщения: 13 Отправитель сообщения:
14 <input type="text" id="send_user_id" name="send_user_id" class="input" placeholder="user_id" value=""> 14 <input type="text" id="send_user_id" name="send_user_id" class="input" placeholder="user_id" value="">
15 Получатель сообщения: 15 Получатель сообщения:
16 <input type="text" id="send_to_user_id" name="send_to_user_id" class="input" placeholder="to_user_id" value=""> 16 <input type="text" id="send_to_user_id" name="send_to_user_id" class="input" placeholder="to_user_id" value="">
17 Вакансия: 17 Вакансия:
18 <input type="text" id="send_vacancy" name="send_vacancy" class="input" placeholder="vacancy" value=""> 18 <input type="text" id="send_vacancy" name="send_vacancy" class="input" placeholder="vacancy" value="">
19 Должность: 19 Должность:
20 <input type="text" id="send_job_title_id" name="send_job_title_id" class="input" placeholder="vacancy" value="0"> 20 <input type="text" id="send_job_title_id" name="send_job_title_id" class="input" placeholder="vacancy" value="0">
21 </div> 21 </div>
22 <div class="modal__form-item send_title_div error_"> 22 <div class="modal__form-item send_title_div error_">
23 <input id="send_title" name="send_title" type="text" class="input" placeholder="Тема" required> 23 <input id="send_title" name="send_title" type="text" class="input" placeholder="Тема" required>
24 <label for="title">Не заполнено поле</label> 24 <label for="title">Не заполнено поле</label>
25 </div> 25 </div>
26 <div class="modal__form-item send_text_div"> 26 <div class="modal__form-item send_text_div">
27 <textarea id="i2" class="textarea" id="send_text" name="send_text" placeholder="Напишите текст с предложением о работе" required></textarea> 27 <textarea id="i2" class="textarea" id="send_text" name="send_text" placeholder="Напишите текст с предложением о работе" required></textarea>
28 <label for="i2">Не заполнено поле</label> 28 <label for="i2">Не заполнено поле</label>
29 </div> 29 </div>
30 <div class="modal__form-item"> 30 <div class="modal__form-item">
31 <div class="file"> 31 <div class="file">
32 <label class="file__input" id="btn_send_file" name="btn_send_file"> 32 <label class="file__input" id="btn_send_file" name="btn_send_file">
33 <input type="file" name="send_file" id="send_name"> 33 <input type="file" name="send_file" id="send_name" accept=".pdf, .doc, .docx">
34 <span class="button button_light"> 34 <span class="button button_light">
35 <svg> 35 <svg>
36 <use xlink:href="{{ asset('images/sprite.svg#share') }}"></use> 36 <use xlink:href="{{ asset('images/sprite.svg#share') }}"></use>
37 </svg> 37 </svg>
38 Прикрепить файл-документ 38 Прикрепить файл-документ
39 </span> 39 </span>
40 </label> 40 </label>
41 41
42 <div class="file__list" id="div_file" name="div_file"> 42 <div class="file__list" id="div_file" name="div_file">
43 <div class="file__list-item"> 43 <div class="file__list-item">
44 <div class="file__list-item-left"> 44 <div class="file__list-item-left">
45 <svg> 45 <svg>
46 <use xlink:href="{{ asset('images/sprite.svg#clip') }}"></use> 46 <use xlink:href="{{ asset('images/sprite.svg#clip') }}"></use>
47 </svg> 47 </svg>
48 <span id="send_name_file" name="send_name_file"></span> 48 <span id="send_name_file" name="send_name_file"></span>
49 </div> 49 </div>
50 <button type="button" class="file__list-item-right js-parent-remove"> 50 <button type="button" class="file__list-item-right js-parent-remove">
51 <svg> 51 <svg>
52 <use xlink:href="{{ asset('images/sprite.svg#cross-bold') }}"></use> 52 <use xlink:href="{{ asset('images/sprite.svg#cross-bold') }}"></use>
53 </svg> 53 </svg>
54 </button> 54 </button>
55 </div> 55 </div>
56 </div> 56 </div>
57 </div> 57 </div>
58 </div> 58 </div>
59 <div class="modal__form-item"> 59 <div class="modal__form-item">
60 <button type="submit" id="submit_form_worker" name="submit_form_worker" class="button">Отправить</button> 60 <button type="submit" id="submit_form_worker" name="submit_form_worker" class="button">Отправить</button>
61 </div> 61 </div>
62 </form> 62 </form>
63 </div> 63 </div>
64 </div> 64 </div>
65 65
66 66
resources/views/workers/dialog.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 $(function(){ 5 $(function(){
6 var chatbox_div = $('.chatbox__list'); 6 var chatbox_div = $('.chatbox__list');
7 chatbox_div.scrollTop(chatbox_div.prop("scrollHeight")); 7 chatbox_div.scrollTop(chatbox_div.prop("scrollHeight"));
8 8
9 $('form.chatbox__bottom [name="file"]').on('change', function() { 9 $('form.chatbox__bottom [name="file"]').on('change', function() {
10 var fileName = $(this).val().split('\\').pop(); 10 var fileName = $(this).val().split('\\').pop();
11 $('.chatbox-file-name-wrap').text('Добавлен файл: ' + fileName); 11 $('.chatbox-file-name-wrap').text('Добавлен файл: ' + fileName);
12 }); 12 });
13 13
14 $('.admin-chat-answer').click(function(){ 14 $('.admin-chat-answer').click(function(){
15 var modal = $('#answer_from_admin_chat_modal'); 15 var modal = $('#answer_from_admin_chat_modal');
16 16
17 modal.data('to-user-id', $(this).data('to-user-id')); 17 modal.data('to-user-id', $(this).data('to-user-id'));
18 modal.data('message-id', $(this).data('message-id')); 18 modal.data('message-id', $(this).data('message-id'));
19 }); 19 });
20 }); 20 });
21 21
22 $(document).on('change', '#send_btn', function() { 22 $(document).on('change', '#send_btn', function() {
23 var this_ = $(this); 23 var this_ = $(this);
24 var val_ = this_.val(); 24 var val_ = this_.val();
25 console.log('sort items '+val_); 25 console.log('sort items '+val_);
26 26
27 $.ajax({ 27 $.ajax({
28 type: "GET", 28 type: "GET",
29 url: "{{ route('shipping_companies') }}", 29 url: "{{ route('shipping_companies') }}",
30 data: "sort="+val_+"&block=1", 30 data: "sort="+val_+"&block=1",
31 success: function (data) { 31 success: function (data) {
32 console.log('Выбор сортировки'); 32 console.log('Выбор сортировки');
33 console.log(data); 33 console.log(data);
34 $('#block_1').html(data); 34 $('#block_1').html(data);
35 }, 35 },
36 headers: { 36 headers: {
37 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 37 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
38 }, 38 },
39 error: function (data) { 39 error: function (data) {
40 data = JSON.stringify(data); 40 data = JSON.stringify(data);
41 console.log('Error: ' + data); 41 console.log('Error: ' + data);
42 } 42 }
43 }); 43 });
44 44
45 $.ajax({ 45 $.ajax({
46 type: "GET", 46 type: "GET",
47 url: "{{ route('shipping_companies') }}", 47 url: "{{ route('shipping_companies') }}",
48 data: "sort="+val_+"&block=2", 48 data: "sort="+val_+"&block=2",
49 success: function (data) { 49 success: function (data) {
50 console.log('Выбор сортировки2'); 50 console.log('Выбор сортировки2');
51 console.log(data); 51 console.log(data);
52 history.pushState({}, '', "{{ route('shipping_companies') }}?sort="+val_+"@if (isset($_GET['page']))&page={{ $_GET['page'] }}@endif"); 52 history.pushState({}, '', "{{ route('shipping_companies') }}?sort="+val_+"@if (isset($_GET['page']))&page={{ $_GET['page'] }}@endif");
53 $('#block_2').html(data); 53 $('#block_2').html(data);
54 }, 54 },
55 headers: { 55 headers: {
56 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 56 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
57 }, 57 },
58 error: function (data) { 58 error: function (data) {
59 data = JSON.stringify(data); 59 data = JSON.stringify(data);
60 console.log('Error: ' + data); 60 console.log('Error: ' + data);
61 } 61 }
62 }); 62 });
63 }); 63 });
64 </script> 64 </script>
65 @endsection 65 @endsection
66 66
67 @section('content') 67 @section('content')
68 <section class="cabinet"> 68 <section class="cabinet">
69 <div class="container"> 69 <div class="container">
70 <ul class="breadcrumbs cabinet__breadcrumbs"> 70 <ul class="breadcrumbs cabinet__breadcrumbs">
71 <li><a href="{{ route('index') }}">Главная</a></li> 71 <li><a href="{{ route('index') }}">Главная</a></li>
72 <li><b>Личный кабинет</b></li> 72 <li><b>Личный кабинет</b></li>
73 </ul> 73 </ul>
74 <div class="cabinet__wrapper"> 74 <div class="cabinet__wrapper">
75 <div class="cabinet__side"> 75 <div class="cabinet__side">
76 <div class="cabinet__side-toper"> 76 <div class="cabinet__side-toper">
77 @include('workers.emblema') 77 @include('workers.emblema')
78 </div> 78 </div>
79 @include('workers.menu', ['item' => 2]) 79 @include('workers.menu', ['item' => 2])
80 </div> 80 </div>
81 <div class="cabinet__body"> 81 <div class="cabinet__body">
82 <div class="cabinet__body-item"> 82 <div class="cabinet__body-item">
83 <h2 class="title cabinet__title">Сообщения</h2> 83 <h2 class="title cabinet__title">Сообщения</h2>
84 </div> 84 </div>
85 <div class="cabinet__body-item"> 85 <div class="cabinet__body-item">
86 <a href="{{ route('worker.messages', ['type_message' => 'input']) }}" class="back"> 86 <a href="{{ route('worker.messages', ['type_message' => 'input']) }}" class="back">
87 <svg> 87 <svg>
88 <use xlink:href="{{ asset('images/sprite.svg#back') }}"></use> 88 <use xlink:href="{{ asset('images/sprite.svg#back') }}"></use>
89 </svg> 89 </svg>
90 <span> 90 <span>
91 К списку чатов 91 К списку чатов
92 </span> 92 </span>
93 </a> 93 </a>
94 <div class="chatbox"> 94 <div class="chatbox">
95 <div class="chatbox__toper"> 95 <div class="chatbox__toper">
96 @if($chat->is_admin_chat) 96 @if($chat->is_admin_chat)
97 <div class="chatbox__toper-info messages__item-info"> 97 <div class="chatbox__toper-info messages__item-info">
98 @include('svg.logo_icon') 98 @include('svg.logo_icon')
99 <div class="messages__item-text bold font20"> 99 <div class="messages__item-text bold font20">
100 Администратор сайта 100 Администратор сайта
101 </div> 101 </div>
102 </div> 102 </div>
103 @elseif ($companion->is_worker) 103 @elseif ($companion->is_worker)
104 <div class="chatbox__toper-info messages__item-info"> 104 <div class="chatbox__toper-info messages__item-info">
105 <div class="messages__item-photo"> 105 <div class="messages__item-photo">
106 <svg> 106 <svg>
107 <use xlink:href="{{ asset('images/sprite.svg#pic') }}"></use> 107 <use xlink:href="{{ asset('images/sprite.svg#pic') }}"></use>
108 </svg> 108 </svg>
109 @if ((isset($companion->workers[0]->photo)) && 109 @if ((isset($companion->workers[0]->photo)) &&
110 (!empty($companion->workers[0]->photo))) 110 (!empty($companion->workers[0]->photo)))
111 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($companion->workers[0]->photo)) }}" alt=""> 111 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($companion->workers[0]->photo)) }}" alt="">
112 @else 112 @else
113 <img src="{{ asset('images/default_man.jpg') }}" alt=""> 113 <img src="{{ asset('images/default_man.jpg') }}" alt="">
114 @endif 114 @endif
115 </div> 115 </div>
116 </div> 116 </div>
117 @if (isset($companion->workers[0]->id)) 117 @if (isset($companion->workers[0]->id))
118 <a href="{{ route('resume_profile', ['worker' => $companion->workers[0]->id]) }}" class="button chatbox__toper-button"> 118 <a href="{{ route('resume_profile', ['worker' => $companion->workers[0]->id]) }}" class="button chatbox__toper-button">
119 <svg> 119 <svg>
120 <use xlink:href="{{ asset('images/sprite.svg#cabinet-1') }}"></use> 120 <use xlink:href="{{ asset('images/sprite.svg#cabinet-1') }}"></use>
121 </svg> 121 </svg>
122 Перейти в профиль 122 Перейти в профиль
123 </a> 123 </a>
124 @endif 124 @endif
125 @else 125 @else
126 <div class="chatbox__toper-info messages__item-info"> 126 <div class="chatbox__toper-info messages__item-info">
127 <div class="messages__item-photo"> 127 <div class="messages__item-photo">
128 <svg> 128 <svg>
129 <use xlink:href="{{ asset('images/sprite.svg#pic') }}"></use> 129 <use xlink:href="{{ asset('images/sprite.svg#pic') }}"></use>
130 </svg> 130 </svg>
131 @if ((isset($companion->employers[0]->logo)) && 131 @if ((isset($companion->employers[0]->logo)) &&
132 (!empty($companion->employers[0]->logo))) 132 (!empty($companion->employers[0]->logo)))
133 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($companion->employers[0]->logo)) }}" alt=""> 133 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($companion->employers[0]->logo)) }}" alt="">
134 @else 134 @else
135 <img src="{{ asset('images/default_man.jpg') }}" alt=""> 135 <img src="{{ asset('images/default_man.jpg') }}" alt="">
136 @endif 136 @endif
137 </div> 137 </div>
138 <div class="messages__item-text"> 138 <div class="messages__item-text">
139 <div>{{ $companion->surname." ".$companion->name_man." ".$companion->surname2." (".$companion->id.")" }} </div> 139 <div>{{ $companion->surname." ".$companion->name_man." ".$companion->surname2." (".$companion->id.")" }} </div>
140 <div><span>Статус:</span> Работодатель или Администратор</div> 140 <div><span>Статус:</span> Работодатель или Администратор</div>
141 </div> 141 </div>
142 </div> 142 </div>
143 @if (isset($companion->employers[0]->id)) 143 @if (isset($companion->employers[0]->id))
144 <a href="{{ route('info_company', ['company' => $companion->employers[0]->id]) }}" class="button chatbox__toper-button"> 144 <a href="{{ route('info_company', ['company' => $companion->employers[0]->id]) }}" class="button chatbox__toper-button">
145 <svg> 145 <svg>
146 <use xlink:href="{{ asset('images/sprite.svg#cabinet-1') }}"></use> 146 <use xlink:href="{{ asset('images/sprite.svg#cabinet-1') }}"></use>
147 </svg> 147 </svg>
148 Перейти в профиль 148 Перейти в профиль
149 </a> 149 </a>
150 @endif 150 @endif
151 @endif 151 @endif
152 </div> 152 </div>
153 153
154 @if ($errors->any()) 154 @if ($errors->any())
155 <div class="red bold"> 155 <div class="red bold">
156 <ul> 156 <ul>
157 @foreach ($errors->all() as $error) 157 @foreach ($errors->all() as $error)
158 <li>{{ $error }}</li> 158 <li>{{ $error }}</li>
159 @endforeach 159 @endforeach
160 </ul> 160 </ul>
161 </div> 161 </div>
162 @endif 162 @endif
163 163
164 <div class="chatbox__list" id="dialogs" name="dialogs"> 164 <div class="chatbox__list" id="dialogs" name="dialogs">
165 @if ($Messages->count()) 165 @if ($Messages->count())
166 @foreach ($Messages as $it) 166 @foreach ($Messages as $it)
167 @if ($it->user_id == $companion->id) 167 @if ($it->user_id == $companion->id)
168 <div class="chatbox__item"> 168 <div class="chatbox__item">
169 <div class="chatbox__item-photo"> 169 <div class="chatbox__item-photo">
170 <svg> 170 <svg>
171 <use xlink:href="{{ asset('images/sprite.svg#pic') }}"></use> 171 <use xlink:href="{{ asset('images/sprite.svg#pic') }}"></use>
172 </svg> 172 </svg>
173 @if($companion->is_worker) 173 @if($companion->is_worker)
174 @if ((isset($companion->workers[0]->photo)) && 174 @if ((isset($companion->workers[0]->photo)) &&
175 (!empty($companion->workers[0]->photo))) 175 (!empty($companion->workers[0]->photo)))
176 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($companion->workers[0]->photo)) }}" alt=""> 176 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($companion->workers[0]->photo)) }}" alt="">
177 @else 177 @else
178 <img src="{{ asset('images/default_man.jpg') }}" alt=""> 178 <img src="{{ asset('images/default_man.jpg') }}" alt="">
179 @endif 179 @endif
180 @else 180 @else
181 @if ((isset($companion->employers[0]->logo)) && 181 @if ((isset($companion->employers[0]->logo)) &&
182 (!empty($companion->employers[0]->logo))) 182 (!empty($companion->employers[0]->logo)))
183 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($companion->employers[0]->logo)) }}" alt=""> 183 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($companion->employers[0]->logo)) }}" alt="">
184 @else 184 @else
185 <img src="{{ asset('images/default_man.jpg') }}" alt=""> 185 <img src="{{ asset('images/default_man.jpg') }}" alt="">
186 @endif 186 @endif
187 @endif 187 @endif
188 </div> 188 </div>
189 <div class="chatbox__item-body"> 189 <div class="chatbox__item-body">
190 @if(\App\Models\Ad_employer::where('id', $it->ad_employer_id)->exists()) 190 @if(\App\Models\Ad_employer::where('id', $it->ad_employer_id)->exists())
191 <div class="chatbox__item-text"> 191 <div class="chatbox__item-text">
192 Отклик на вакансию {{ \App\Models\Ad_employer::find($it->ad_employer_id)->name }} 192 Отклик на вакансию {{ \App\Models\Ad_employer::find($it->ad_employer_id)->name }}
193 @if($it->text) 193 @if($it->text)
194 Комментарий: {{ $it->text }} 194 Комментарий: {{ $it->text }}
195 @endif 195 @endif
196 </div> 196 </div>
197 @else 197 @else
198 @if($it->text) 198 @if($it->text)
199 {{ $it->text }} 199 {{ $it->text }}
200 @endif 200 @endif
201 @endif 201 @endif
202 @if ((isset($it->file)) && (!empty($it->file))) 202 @if ((isset($it->file)) && (!empty($it->file)))
203 <div class="chatbox__item-text chatbox__item-body-file-name-wrap"> 203 <div class="chatbox__item-text chatbox__item-body-file-name-wrap">
204 <div class=""> 204 <div class="">
205 @if($it->original_file_name) 205 @if($it->original_file_name)
206 {{ $it->original_file_name }} 206 {{ $it->original_file_name }}
207 @else 207 @else
208 <svg> 208 <svg>
209 <use xlink:href="{{ asset('images/sprite.svg#clip') }}"></use> 209 <use xlink:href="{{ asset('images/sprite.svg#clip') }}"></use>
210 </svg> 210 </svg>
211 @endif 211 @endif
212 </div> 212 </div>
213 <a href="{{ asset(Storage::url($it->file)) }}" class=""> 213 <a href="{{ asset(Storage::url($it->file)) }}" class="">
214 Скачать 214 Скачать
215 </a> 215 </a>
216 </div> 216 </div>
217 @endif 217 @endif
218 </div> 218 </div>
219 <div class="chatbox__item-time">{{ $it->created_at }}</div> 219 <div class="chatbox__item-time">{{ $it->created_at }}</div>
220 </div> 220 </div>
221 @else 221 @else
222 <div class="chatbox__item chatbox__item_reverse"> 222 <div class="chatbox__item chatbox__item_reverse">
223 <div class="@if(!$chat->is_admin_chat) chatbox__item-photo @endif"> 223 <div class="@if(!$chat->is_admin_chat) chatbox__item-photo @endif">
224 @if($chat->is_admin_chat) 224 @if($chat->is_admin_chat)
225 @include('svg.logo_icon') 225 @include('svg.logo_icon')
226 @else 226 @else
227 @if ($sender->is_worker) 227 @if ($sender->is_worker)
228 @if ((isset($sender->workers[0]->photo)) && 228 @if ((isset($sender->workers[0]->photo)) &&
229 (!empty($sender->workers[0]->photo))) 229 (!empty($sender->workers[0]->photo)))
230 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($sender->workers[0]->photo)) }}" alt=""> 230 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($sender->workers[0]->photo)) }}" alt="">
231 @else 231 @else
232 <img src="{{ asset('images/default_man.jpg') }}" alt=""> 232 <img src="{{ asset('images/default_man.jpg') }}" alt="">
233 @endif 233 @endif
234 @else 234 @else
235 <svg> 235 <svg>
236 <use xlink:href="{{ asset('images/sprite.svg#pic') }}"></use> 236 <use xlink:href="{{ asset('images/sprite.svg#pic') }}"></use>
237 </svg> 237 </svg>
238 238
239 @if ((isset($sender->employers[0]->logo)) && 239 @if ((isset($sender->employers[0]->logo)) &&
240 (!empty($sender->employers[0]->logo))) 240 (!empty($sender->employers[0]->logo)))
241 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($sender->employers[0]->logo)) }}" alt=""> 241 <img src="{{ asset(\Illuminate\Support\Facades\Storage::url($sender->employers[0]->logo)) }}" alt="">
242 @else 242 @else
243 <img src="{{ asset('images/default_man.jpg') }}" alt=""> 243 <img src="{{ asset('images/default_man.jpg') }}" alt="">
244 @endif 244 @endif
245 @endif 245 @endif
246 @endif 246 @endif
247 </div> 247 </div>
248 <div class="chatbox__item-body"> 248 <div class="chatbox__item-body">
249 @if($chat->is_admin_chat || $it->text || $it->reply_message_id || $it->ad_employer_id > 0) 249 @if($chat->is_admin_chat || $it->text || $it->reply_message_id || $it->ad_employer_id > 0)
250 <div class="chatbox__item-text"> 250 <div class="chatbox__item-text">
251 @if($chat->is_admin_chat) 251 @if($chat->is_admin_chat)
252 <button class="button admin-chat-answer" data-fancybox data-src="#answer_from_admin_chat_modal" 252 <button class="button admin-chat-answer" data-fancybox data-src="#answer_from_admin_chat_modal"
253 data-to-user-id="{{ $it->user_id }}" data-message-id="{{ $it->id }}" 253 data-to-user-id="{{ $it->user_id }}" data-message-id="{{ $it->id }}"
254 > 254 >
255 Ответить 255 Ответить
256 </button> 256 </button>
257 @endif 257 @endif
258 258
259 @if(\App\Models\Ad_employer::where('id', $it->ad_employer_id)->exists())) 259 @if(\App\Models\Ad_employer::where('id', $it->ad_employer_id)->exists()))
260 <b>Отклик на вакансию</b> "{{ \App\Models\Ad_employer::find($it->ad_employer_id)->name }}"<br> 260 <b>Отклик на вакансию</b> "{{ \App\Models\Ad_employer::find($it->ad_employer_id)->name }}"<br>
261 @if($it->text) 261 @if($it->text)
262 <b>Комментарий:</b> {{ $it->text }} 262 <b>Комментарий:</b> {{ $it->text }}
263 @endif 263 @endif
264 @else 264 @else
265 @if($it->text) 265 @if($it->text)
266 {{ $it->text }} 266 {{ $it->text }}
267 @endif 267 @endif
268 @endif 268 @endif
269 269
270 @if($it->reply_message_id) 270 @if($it->reply_message_id)
271 <div class="reply-message"> 271 <div class="reply-message">
272 {{ $it->reply_message->text }} 272 {{ $it->reply_message->text }}
273 </div> 273 </div>
274 @endif 274 @endif
275 </div> 275 </div>
276 @endif 276 @endif
277 @if ((isset($it->file)) && (!empty($it->file))) 277 @if ((isset($it->file)) && (!empty($it->file)))
278 <div class="chatbox__item-text chatbox__item-body-file-name-wrap"> 278 <div class="chatbox__item-text chatbox__item-body-file-name-wrap">
279 <a href="{{ asset(Storage::url($it->file)) }}" class=""> 279 <a href="{{ asset(Storage::url($it->file)) }}" class="">
280 Скачать 280 Скачать
281 </a> 281 </a>
282 <div class=""> 282 <div class="">
283 @if($it->original_file_name) 283 @if($it->original_file_name)
284 {{ $it->original_file_name }} 284 {{ $it->original_file_name }}
285 @else 285 @else
286 <svg> 286 <svg>
287 <use xlink:href="{{ asset('images/sprite.svg#clip') }}"></use> 287 <use xlink:href="{{ asset('images/sprite.svg#clip') }}"></use>
288 </svg> 288 </svg>
289 @endif 289 @endif
290 </div> 290 </div>
291 </div> 291 </div>
292 @endif 292 @endif
293 </div> 293 </div>
294 <div class="chatbox__item-time">{{ $it->created_at }}</div> 294 <div class="chatbox__item-time">{{ $it->created_at }}</div>
295 </div> 295 </div>
296 @endif 296 @endif
297 297
298 @endforeach 298 @endforeach
299 @endif 299 @endif
300 </div> 300 </div>
301 @if(!$chat->is_admin_chat) 301 @if(!$chat->is_admin_chat)
302 <div> 302 <div>
303 <form action="{{ route('worker.test123') }}" class="chatbox__bottom" enctype="multipart/form-data" method="POST" > 303 <form action="{{ route('worker.test123') }}" class="chatbox__bottom" enctype="multipart/form-data" method="POST" >
304 @csrf 304 @csrf
305 <label class="chatbox__bottom-file"> 305 <label class="chatbox__bottom-file">
306 <input id="file" name="file" type="file"> 306 <input id="file" name="file" type="file" accept=".pdf, .doc, .docx">
307 <svg> 307 <svg>
308 <use xlink:href="{{ asset('images/sprite.svg#clip') }}"></use> 308 <use xlink:href="{{ asset('images/sprite.svg#clip') }}"></use>
309 </svg> 309 </svg>
310 </label> 310 </label>
311 <input type="hidden" name="_token" value="{{ csrf_token() }}"/> 311 <input type="hidden" name="_token" value="{{ csrf_token() }}"/>
312 <input type="hidden" id="user_id" name="user_id" value="{{ $sender->id }}"/> 312 <input type="hidden" id="user_id" name="user_id" value="{{ $sender->id }}"/>
313 <input type="hidden" id="to_user_id" name="to_user_id" value="{{ $companion->id }}"/> 313 <input type="hidden" id="to_user_id" name="to_user_id" value="{{ $companion->id }}"/>
314 <input type="hidden" id="ad_employer_id" name="ad_employer_id" value="{{ $ad_employer }}"/> 314 <input type="hidden" id="ad_employer_id" name="ad_employer_id" value="{{ $ad_employer }}"/>
315 <input type="hidden" id="ad_name" name="ad_name" value="@if (isset($_GET['ad_name'])){{ $_GET['ad_name'] }} @endif"/> 315 <input type="hidden" id="ad_name" name="ad_name" value="@if (isset($_GET['ad_name'])){{ $_GET['ad_name'] }} @endif"/>
316 <input id="text" name="text" type="text" class="input chatbox__bottom-text" placeholder="Ответить"> 316 <input id="text" name="text" type="text" class="input chatbox__bottom-text" placeholder="Ответить">
317 <button type="submit" id="send_btn" name="send_btn" class="chatbox__bottom-send"> 317 <button type="submit" id="send_btn" name="send_btn" class="chatbox__bottom-send">
318 <svg> 318 <svg>
319 <use xlink:href="{{ asset('images/sprite.svg#arrow') }}"></use> 319 <use xlink:href="{{ asset('images/sprite.svg#arrow') }}"></use>
320 </svg> 320 </svg>
321 </button> 321 </button>
322 </form> 322 </form>
323 <div class="chatbox-file-name-wrap mt-5 fw600"></div> 323 <div class="chatbox-file-name-wrap mt-5 fw600"></div>
324 </div> 324 </div>
325 @endif 325 @endif
326 </div> 326 </div>
327 </div> 327 </div>
328 </div> 328 </div>
329 </div> 329 </div>
330 </div> 330 </div>
331 </section> 331 </section>
332 </div> 332 </div>
333 333
334 @include('modals.chats.answer_from_admin_chat') 334 @include('modals.chats.answer_from_admin_chat')
335 @endsection 335 @endsection
336 336