diff --git a/app/Http/Controllers/EmployerController.php b/app/Http/Controllers/EmployerController.php index 7d2d96f..8c474cc 100644 --- a/app/Http/Controllers/EmployerController.php +++ b/app/Http/Controllers/EmployerController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers; use App\Models\Ad_employer; use App\Models\Category; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; class EmployerController extends Controller { @@ -25,4 +26,10 @@ class EmployerController extends Controller return view('vacance-item', compact('title', 'Query')); } } + + public function logout() { + Auth::logout(); + return redirect()->route('index') + ->with('success', 'Вы вышли из личного кабинета'); + } } diff --git a/app/Http/Controllers/MainController.php b/app/Http/Controllers/MainController.php index c7e0637..c7cab52 100644 --- a/app/Http/Controllers/MainController.php +++ b/app/Http/Controllers/MainController.php @@ -10,6 +10,8 @@ use App\Models\Job_title; use App\Models\News; use App\Models\reclame; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Validator; class MainController extends Controller { @@ -28,6 +30,16 @@ class MainController extends Controller return view('index', compact('news', 'categories', 'employers')); } + public function search_vacancies(Request $request) { + if ($request->has('search')) { + $search = $request->get('search'); + $job_titles = Job_title::query()->where('name', 'LIKE', "%$search%")->first(); + if (isset($job_titles->id)) + if ($job_titles->id > 0) + return redirect()->route('vacancies', ['job' => $job_titles->id]); + } + } + public function vacancies(Request $request) { //должности $Job_title = Job_title::query()->orderBy('name')->get(); @@ -38,7 +50,7 @@ class MainController extends Controller ->join('ad_jobs', 'ad_jobs.ad_employer_id', '=', 'ad_employers.id'); //категории и вакансии - if ($request->ajax()) { + if (($request->has('job')) && ($request->get('job') > 0)) { $categories = $categories->Where('job_title_id', '=', $request->get('job')) ->OrderByDesc('created_at') ->GroupBy('categories.id') @@ -115,4 +127,55 @@ class MainController extends Controller public function contacts() { return view('contacts'); } + + // Вход в личный кабинет + public function input_login(Request $request) + { + $rules = [ + 'email' => 'required|string|email', + 'password' => 'required|string', + ]; + + $messages = [ + 'required' => 'Укажите обязательное поле «:attribute»', + 'email' => 'Введите корректный email', + 'min' => [ + 'string' => 'Поле «:attribute» должно быть не меньше :min символов', + 'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт' + ], + 'max' => [ + 'string' => 'Поле «:attribute» должно быть не больше :max символов', + 'file' => 'Файл «:attribute» должен быть не больше :max Кбайт' + ], + ]; + + $validator = Validator::make($request->all(), $rules, $messages); + + if ($validator->fails()) { + return Array("ERROR" => "Емайл невалидный");//$validator; //back()->withErrors($validator)->withInput(); + } else { + $credentials = $request->only('email', 'password'); + + if (Auth::attempt($credentials, $request->has('remember'))) { + + if (is_null(Auth::user()->email_verified_at)) { + Auth::logout(); + return Array("ERROR" => "Адрес почты не подтвержден"); + + } + + if (Auth::user()->is_worker) { + return Array("REDIRECT" => redirect()->route('worker.cabinet')->getTargetUrl()); + } else { + return Array("REDIRECT" => redirect()->route('employer.cabinet')->getTargetUrl()); + } + + return Array("SUCCESS" => "Вы успешно вошли в личный кабинет"); + //->route('index') + //->with('success', 'Вы вошли в личный кабинет.'); + } else { + return Array("ERROR" => "Неверный логин или пароль!"); + } + } + } } diff --git a/app/Http/Controllers/WorkerController.php b/app/Http/Controllers/WorkerController.php index 066b15f..9bc35e1 100644 --- a/app/Http/Controllers/WorkerController.php +++ b/app/Http/Controllers/WorkerController.php @@ -8,11 +8,7 @@ use Illuminate\Http\Request; class WorkerController extends Controller { - //главная - public function index() { - return; - } - + public $status_work = Array(0 => 'Ищу работу', 1=> 'Не указано', 2=>'Не ищу работу'); //профиль public function profile(Worker $worker) { $get_date = date('Y.m'); @@ -40,8 +36,30 @@ class WorkerController extends Controller return view('public.workers.profile', compact('worker', 'stat')); } - //публичная оферта - public function public_offer() { - return; + // лист база резюме + public function bd_resume() { + $status_work = $this->status_work; + $resumes = Worker::query()->with('users')->with('job_titles'); + + $res_count = $resumes->count(); + $resumes = $resumes->paginate(5); + + return view('resume', compact('resumes', 'status_work', 'res_count')); + } + + // анкета соискателя + public function resume_profile(Worker $worker) { + $status_work = $this->status_work; + $Query = Worker::query()->with('users')->with('job_titles') + ->with('place_worker')->with('sertificate')->with('prev_company') + ->with('infobloks'); + $Query = $Query->where('id', '=', $worker->id); + $Query = $Query->get(); + return view('worker', compact('Query', 'status_work')); + } + + // скачать анкету соискателя + public function resume_download(Worker $worker) { + print_r('Резюме для скачивания'); } } diff --git a/app/Models/PrevCompany.php b/app/Models/PrevCompany.php new file mode 100644 index 0000000..426c44c --- /dev/null +++ b/app/Models/PrevCompany.php @@ -0,0 +1,13 @@ +belongsTo(User::class, 'user_id'); } + // Связь Работника с сертификами (0-0 - 1) + public function sertificate() { + return $this->hasMany(sertification::class); + } + + // Связь Работника с должностями (0-0 - 1) + public function job_titles() { + return $this->hasMany(Job_title::class, 'id'); + } + + //Связь Работника с опытом работы (1 - 0-0) + public function place_worker() { + return $this->hasMany(place_works::class); + } + public function scopeActive($query) { return $query->where('is_remove', '=', '0'); } + + //Связь Работника с предыдущими компаниями + public function prev_company() { + return $this->hasMany(PrevCompany::class); + } + + //Связь Работника с инфоблоками (0-0 - 0-0) + public function infobloks() { + return $this->belongsToMany(infobloks::class,'dop_info', 'worker_id', 'infoblok_id'); + } } diff --git a/database/migrations/2024_02_22_080113_alter_table_sertification.php b/database/migrations/2024_02_22_080113_alter_table_sertification.php new file mode 100644 index 0000000..2d82dc7 --- /dev/null +++ b/database/migrations/2024_02_22_080113_alter_table_sertification.php @@ -0,0 +1,34 @@ +string('name', 255)->nullable(false); + $table->string('education', 255)->nullable(false); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('sertifications', function (Blueprint $table) { + $table->dropColumn('name'); + $table->dropColumn('education'); + }); + } +}; diff --git a/database/migrations/2024_02_22_092030_create_table_prev_company.php b/database/migrations/2024_02_22_092030_create_table_prev_company.php new file mode 100644 index 0000000..89b531f --- /dev/null +++ b/database/migrations/2024_02_22_092030_create_table_prev_company.php @@ -0,0 +1,36 @@ +id(); + $table->bigInteger('worker_id')->nullable(false); + $table->string('name_company', 255)->nullable(true); + $table->string('direct', 255)->nullable(true); + $table->string('telephone', 255)->nullable(false); + $table->string('telephone2', 255)->nullable(false); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('prev_company'); + } +}; diff --git a/public/images/default_man.jpg b/public/images/default_man.jpg new file mode 100644 index 0000000000000000000000000000000000000000..869243e4d0bcb11f7892b4ea6ee58a7ae799f0e5 GIT binary patch literal 26409 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 TpkWyZElm0tv0xu^LCgOE9Kr0A literal 0 HcmV?d00001 diff --git a/public/js/script.js b/public/js/script.js index c85b84c..a7b31a0 100644 --- a/public/js/script.js +++ b/public/js/script.js @@ -6,6 +6,22 @@ let scripts = function () { $('.js-parent-toggle').on('click', function () { $(this).parent().toggleClass('active'); }); + $('.js-parent-remove').on('click', function () { + $(this).parent().remove(); + }); + $('.js-menu-toggle').on('click', function () { + window.scrollTo(0,0); + $('#body').toggleClass('menu-is-actived'); + }); + $('.js-cookies-close').on('click', function () { + $('#body').removeClass('cookies-is-actived'); + }); + $('.js-works-edit').on('click', function () { + $(this).parent().parent().parent().addClass('active'); + }); + $('.js-works-remove').on('click', function () { + $(this).parent().parent().parent().parent().remove(); + }); $('[data-tab]').on('click',function(){ $('[data-tab]').removeClass('active'); @@ -15,6 +31,16 @@ let scripts = function () { $('[data-body='+id+']').addClass('showed'); }); + $('.js-password-show').on('click',function(){ + $(this).parent().addClass('active'); + $(this).parent().parent().find('input').attr('type','text'); + }); + + $('.js-password-hide').on('click',function(){ + $(this).parent().removeClass('active'); + $(this).parent().parent().find('input').attr('type','password'); + }); + let checkScrollTop = function () { if ($(document).scrollTop() == 0) { $('#body').removeClass('begin'); @@ -30,6 +56,8 @@ let scripts = function () { let closeAll = function () { $('.js-toggle').removeClass('active'); $('.js-parent-toggle').parent().removeClass('active'); + $('#body').removeClass('menu-is-actived'); + $('#body').removeClass('cookies-is-actived'); } $(document).keyup(function (e) { diff --git a/resources/views/index.blade.php b/resources/views/index.blade.php index 1562997..12bdd31 100644 --- a/resources/views/index.blade.php +++ b/resources/views/index.blade.php @@ -1,9 +1,41 @@ @extends('layout.frontend', ['title' => 'Главная страница РекаМоре']) +@section('scripts') + +@endsection + @section('content')
- +
Работа в море / @@ -16,23 +48,23 @@
Тысячи соискателей увидят Ваше объявление
Десятки компаний выкладывают объявления каждый день
- - + Я ищу сотрудника
Скачать приложение - - + + - - + +
@@ -66,7 +98,7 @@
Новые вакансии
- + Все должности
@if ($categories->count()) @foreach ($categories as $cat) @@ -115,7 +147,7 @@
- Все должности + Все работодатели
@@ -127,14 +159,14 @@
Для работодателей Наш ресурс позволит Вам за демократичную цену найти нужных специалистов в кратчайшие - сроки, подробнее об условиях можно узнать здесь. - + сроки, подробнее об условиях можно узнать здесь. + Поиск сотрудников
Для сотрудников Наше преимущество — это большой объем вакансий, более 70 судоходных компаний России и СНГ ищут сотрудников через наши ресурсы - + Посмотреть вакансии
@@ -147,12 +179,12 @@ diff --git a/resources/views/layout/frontend.blade.php b/resources/views/layout/frontend.blade.php index 3927b97..cdfcdc7 100644 --- a/resources/views/layout/frontend.blade.php +++ b/resources/views/layout/frontend.blade.php @@ -33,12 +33,16 @@
+ @guest + + @else + @endguest
@guest - Войти + Войти @else Выйти @endguest @@ -216,11 +220,260 @@
+ +@endsection diff --git a/resources/views/vacancies.blade.php b/resources/views/vacancies.blade.php index 3c0ed45..20c2753 100644 --- a/resources/views/vacancies.blade.php +++ b/resources/views/vacancies.blade.php @@ -46,10 +46,10 @@ diff --git a/resources/views/worker.blade.php b/resources/views/worker.blade.php new file mode 100644 index 0000000..879b3b6 --- /dev/null +++ b/resources/views/worker.blade.php @@ -0,0 +1,272 @@ +@extends('layout.frontend', ['title' => 'Карточка соискателя - РекаМоре']) + +@section('scripts') + +@endsection + +@section('content') +
+
+ +
+ +
+

@if (isset($Query[0]->users)) {{ $Query[0]->users->surname." ".$Query[0]->users->name_man." ".$Query[0]->users->surname2 }} @else Неизвестно @endif

+

Сложно сказать, почему ключевые особенности структуры проекта рассмотрены + исключительно в разрезе маркетинговых и финансовых предпосылок.

+ +
+
+
+
+
+
+
+
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Имя:{{ $Query[0]->users->name_man }}
Должность:@if (isset($Query[0]->job_titles)) {{ $Query[0]->job_titles[0]->name }} @else Не указано @endif
Телефон:{{ $Query[0]->telephone }}
E-mail:{{ $Query[0]->email }}
Возраст:{{ $Query[0]->old_year }}
Статус:{{ $status_work[$Query[0]->status_work] }}
Город проживания:{{ $Query[0]->city }}
Уровень английского:{{ $Query[0]->en_is }}
Опыт работы:{{ $Query[0]->experience }}
+
+
+
+ +
+ + @if (isset($Query[0]->sertificate)) + @if ($Query[0]->sertificate->count()) + @foreach($Query[0]->sertificate as $it) + + + + + + + + + + + + + + + + + + + +
Название сертификата:{{ $it->name }}
Организация выдавшая документ:{{ $it->education }}
Дата начала обучения:{{ $it->date_begin }}
Дата конца обучения:{{ $it->end_begin }}
+
+ @endforeach + @endif + @endif +
+
+ +
+ +
+ + @if (isset($Query[0]->place_worker)) + @if ($Query[0]->place_worker->count()) + @foreach($Query[0]->place_worker as $it) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Должность:{{ $it->job_title }}
Опыт работы в танкерном флоте:@if($it->tanker==1) Есть @else Нет @endif
Дата начала работы:{{ $it->begin_work }}
Дата конца работы:{{ $it->end_work }}
Название компании:{{ $it->name_company }}
GWT тип{{ $it->GWT }}
ГД:{{ $it->KBT }}
+
+ @endforeach + @endif + @endif +
+
+ +
+ +
+ + @if (isset($Query[0]->infobloks)) + @if ($Query[0]->infobloks->count()) + + + @foreach($Query[0]->infobloks as $it) + + + + + @endforeach + +
Документ:{{ $it->name }}
+ @endif + @endif +
+
+
+
+

О себе

+

{{ $Query[0]->text }}

+
Написать сообщение
+
+
+

Данные о прошлых компаниях

+
+ + @if (isset($Query[0]->prev_company)) + @if ($Query[0]->prev_company->count()) + @foreach ($Query[0]->prev_company as $it) +
+

{{ $it->name_company }}

+
    +
  • + Руководитель + {{ $it->direct }} +
  • +
  • + Телефон того, кто может дать рекомендацию + + @if (!empty($it->telephone)) + {{ $it->telephone }} + @endif + @if (!empty($it->telephone2)) + {{ $it->telephone2 }} + @endif + +
  • +
+
+ @endforeach + @endif + @endif +
+
+
+

Оставить отзыв о работнике

+
+
Ваша оценка:
+
+ +
+
+
+

Ваш отзыв

+ + +
+
+
+
+
+ +@endsection diff --git a/routes/web.php b/routes/web.php index dbc8d07..e46507e 100644 --- a/routes/web.php +++ b/routes/web.php @@ -397,6 +397,9 @@ Route::get('employer/ad/{ad_employer}', [AdEmployerController::class, 'ad_employ //Вакансии Route::get('vacancies', [MainController::class, 'vacancies'])->name('vacancies'); +//Вакансии поиск на главной +Route::get('search-vacancies', [MainController::class, 'search_vacancies'])->name('search_vacancies'); + //Вакансии категория детальная Route::get('list-vacancies/{categories}', [MainController::class, 'list_vacancies'])->name('list-vacancies'); @@ -419,4 +422,34 @@ Route::get('news', [MainController::class, 'news'])->name('news'); Route::get('contacts', [MainController::class, 'contacts'])->name('contacts'); //База резюме -Route::get('bd-resume', [MainController::class, 'bd_resume'])->name('bd_resume'); +Route::get('bd-resume', [WorkerController::class, 'bd_resume'])->name('bd_resume'); + +//Анкета соискателя +Route::get('resume-profile/{worker}', [WorkerController::class, 'resume_profile'])->name('resume_profile'); + +//Скачать резюме +Route::get('resume-download/{worker}', [WorkerController::class, 'resume_download'])->name('resume_download'); + +//Вход в кабинет +Route::get('login', [MainController::class, 'input_login'])->name('login'); + +// Выход из кабинета +Route::get('logout', [EmployerController::class, 'logout'])->name('logout'); + +// Личный кабинет работника +Route::group([ + 'as' => 'worker.', // имя маршрута, например auth.index + 'prefix' => 'worker', // префикс маршрута, например auth/index + 'middleware' => ['auth'], ['is_worker'], +], function() { + Route::get('cabinet', [])->name('cabinet'); +}); + +// Личный кабинет работодателя +Route::group([ + 'as' => 'employer.', // имя маршрута, например auth.index + 'prefix' => 'employer', // префикс маршрута, например auth/index + 'middleware' => ['auth'], !['is_worker'], +], function() { + Route::get('cabinet', [])->name('cabinet'); +});