HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/ipsremont-demo/app/Http/Controllers/ProfileController.php
<?php

namespace App\Http\Controllers;

use App\Helpers\UserHelper;
use App\Http\Requests\Service\ActiveIdRequest;
use App\Http\Requests\Service\AddCompanyRequest;
use App\Http\Requests\Service\UpdateServiceRequest;
use App\Http\Requests\User\UpdateProfileRequest;
use App\Models\Service\Service;
use App\Models\UserProfile;
use App\Services\Email\SendEmailService;
use App\Services\Service\ServiceService;
use App\Traits\UserTrait;
use Illuminate\Support\Facades\Auth;

class ProfileController extends Controller
{

    use UserTrait;

    /**
     * Show the form for editing the specified resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $data = UserProfile::findOrFail(Auth::user()->getAuthIdentifier());

        $validate = new UpdateProfileRequest();

        return view('profile.index', compact('data', 'validate'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param UpdateProfileRequest $request
     *
     * @return \Illuminate\Http\Response
     */
    public function update(UpdateProfileRequest $request)
    {
        $user = UserHelper::getUser();

        $fields = $request->all();

        $userData = UserProfile::query()->findOrFail($user->id);

        if ($fields['old_password'] && $fields['new_password']) {
            $fields['password'] = bcrypt($fields['new_password']);
        }

        $this->userUpdate($fields, $userData);

        return redirect()->route('profile.edit')->with(['messageSuccess' => __('admins.profile.success')]);
    }

    public function companyShow()
    {
        if (!Auth::user()->isService()) {
            return redirect()->route('dashboard');
        }

        $service = Auth::user()->service()->first();
        $price = $service->getPrice()->get();
        $address = $service->getAddress();

        if ($service->notice) {
            $service->notice = 0;
            $service->save();
        }

        $allServices = null;
        if (Auth::user()->isMultiService()) {
            $allServices = Auth::user()->getAllServices();
        }

        return view('services.show', compact('service', 'price', 'allServices', 'address'));
    }

    public function companyEdit()
    {
        if (!Auth::user()->isService()) {
            return redirect()->route('dashboard');
        }

        $data = Auth::user()->service()->first();
        $validate = new UpdateServiceRequest();

        $managersRelation = $managers = $branches = false;

        return view('services.edit', compact('data', 'managersRelation', 'managers', 'branches', 'validate'));
    }

    public function companyUpdate(UpdateServiceRequest $request)
    {
        if (!Auth::user()->isService()) {
            return redirect()->route('dashboard');
        }

        $request->validate($request->rules());
        $fields = $request->all();

        $denyFields = [
            'branch_id',
            'display',
            'external_id',
            'display',
            'managers',
        ];

        foreach ($denyFields as $field) {
            if (isset($fields[$field])) {
                unset($fields[$field]);
            }
        }

        $service = Auth::user()->service()->first();
        $service->fill($fields);
        $service->update();

        return redirect()->route('profile.company.show')
            ->with('messageSuccess', __('services.messageUpdateServices'));
    }


    public function companyAdd()
    {
        if (!Auth::user()->isService()) {
            return redirect()->route('dashboard');
        }

        $model = new Service();
        $validate = new AddCompanyRequest();

        return view('profile.create', compact('model', 'validate'));
    }

    public function companyStore(AddCompanyRequest $request)
    {
        $request->validate($request->rules());
        $fields = $request->all();

        $managers = Auth::user()->service->managers()->get()->pluck('id')->toArray();

        $fields['branch_id'] = Auth::user()->getFirstBranchId();
        $fields['user_id'] = Auth::user()->getAuthIdentifier();
        $fields['display'] = 0;

        $serviceService = new ServiceService();
        $serviceModel = $serviceService->save($fields, $managers);
        $service = ServiceService::getById(Auth::user()->getRealServiceId());

        SendEmailService::newServiceMail($service, $serviceModel);

        return redirect()->route('profile.company.show')
            ->with('messageSuccess', __('profile.messageCreateService'));
    }

    public function companyChange(ActiveIdRequest $request)
    {
        $serviceService = new ServiceService();
        $service = $serviceService->getById($request->current_service_id);
        $request->session()->put('current_service_id', $service->id);

        return redirect()->route('dashboard')
            ->with('messageSuccess', __('profile.messageSetActive', ['name' => $service->getName()]));
    }
}