WorkerController.php 6.72 KB
<?php

namespace App\Http\Controllers;

use App\Models\Message;
use App\Models\Static_worker;
use App\Models\User;
use App\Models\Worker;
use Illuminate\Auth\Events\Registered;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;

class WorkerController extends Controller
{
    public $status_work = array(0 => 'Ищу работу', 1 => 'Не указано', 2 => 'Не ищу работу');

    //профиль
    public function profile(Worker $worker)
    {
        $get_date = date('Y.m');

        $c = Static_worker::query()->where('year_month', '=', $get_date)
            ->where('user_id', '=', $worker->users->id)
            ->get();

        if ($c->count() > 0) {
            $upd = Static_worker::find($c[0]->id);
            $upd->lookin = $upd->lookin + 1;
            $upd->save();
        } else {
            $crt = new Static_worker();
            $crt->lookin = 1;
            $crt->year_month = $get_date;
            $crt->user_id = $worker->user_id;
            $crt->save();
        }

        $stat = Static_worker::query()->where('year_month', '=', $get_date)
            ->where('user_id', '=', $worker->users->id)
            ->get();

        return view('public.workers.profile', compact('worker', 'stat'));
    }

    // лист база резюме
    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('Резюме для скачивания');
    }

    // Кабинет работника
    public function cabinet(Worker $worker)
    {
        return view('workers.cabinet', compact('worker'));
    }

    // Сохранение данных
    public function cabinet_save(Worker $worker, Request $request)
    {

    }

    // Сообщения данные
    public function messages($type_message)
    {
        $user_id = Auth()->user()->id;

        $messages_input = Message::query()->with('vacancies')->with('user_from')->
        Where('to_user_id', $user_id)->OrderByDesc('created_at');

        $messages_output = Message::query()->with('vacancies')->
        with('user_to')->where('user_id', $user_id)->
        OrderByDesc('created_at');


        $count_input = $messages_input->count();
        $count_output = $messages_output->count();

        if ($type_message == 'input') {
            $messages = $messages_input->paginate(15);
        }

        if ($type_message == 'output') {
            $messages = $messages_output->paginate(15);
        }
        // Вернуть все 100%
        return view('workers.messages', compact('messages', 'count_input', 'count_output', 'type_message', 'user_id'));
    }

    // Избранный
    public function favorite()
    {

        return view('workers.favorite');
    }


    // Сменить пароль
    public function new_password()
    {
        return view('workers.new_password');
    }

    // Удаление профиля
    public function delete_profile()
    {

        return view('workers.delete_profile');
    }

    // Регистрация соискателя
    public function register_worker(Request $request)
    {
        $params = $request->all();

        $rules = [
            'surname' => ['required', 'string', 'max:255'],
            'name_man' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:8'],
            'confirmed' => ['required', 'string', 'min:8'],
        ];

        $messages = [
            'required' => 'Укажите обязательное поле',
            'min' => [
                'string' => 'Поле «:attribute» должно быть не меньше :min символов',
                'integer' => 'Поле «:attribute» должно быть :min или больше',
                'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт'
            ],
            'max' => [
                'string' => 'Поле «:attribute» должно быть не больше :max символов',
                'integer' => 'Поле «:attribute» должно быть :max или меньше',
                'file' => 'Файл «:attribute» должен быть не больше :max Кбайт'
            ]
        ];



        if ($request->get('password') !== $request->get('confirmed')){
            return json_encode(Array("ERROR" => "Error: Не совпадают пароль и подтверждение пароля"));
        }

        $validator = Validator::make($request->all(), $rules, $messages);

        if ($validator->fails()) {
            return json_encode(Array("ERROR" => "Error: Регистрация оборвалась ошибкой! Не все обязательные поля заполнены"));
        } else {
            $user = $this->create($params);
            event(new Registered($user));

            Auth::guard()->login($user);
        }
        if ($user) {
            return json_encode(Array("REDIRECT" => redirect()->route('worker.cabinet')->getTargetUrl()));;
        } else {
            return json_encode(Array("ERROR" => "Данные были утеряны!"));
        }
    }

    // Создание пользователя
    protected function create(array $data)
    {
        $Use = new User();
        $Code_user = $Use->create([
                            'name' => $data['surname']." ".$data['name_man'],
                            'subscribe_email' => $data['email'],
                            'email' => $data['email'],
                            'telephone' => $data['telephone'],
                            'password' => Hash::make($data['password']),
                            'pubpassword' => base64_encode($data['password']),
                        ]);
        dd($Code_user);
    }
}