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/Observers/ServiceObserver.php
<?php

namespace App\Observers;

use App\Models\ActTc;
use App\Models\Order;
use App\Models\Repair\Repair;
use App\Models\Service\Service;
use App\Models\Shipment;
use App\Services\Email\SendEmailService;
use App\Services\Log\LogService;
use App\Services\Service\ServiceService;
use App\User;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Auth;

class ServiceObserver extends BaseObserver
{

    /**
     * Handle the service "updated" event.
     *
     * @param \App\Models\Service\Service $service
     *
     * @return void
     */
    public function updated(Model $service)
    {
        parent::updated($service);
        $send_flag = 0;

        if ($service->display <> $service->getOriginal('display') || $service->branch_id != $service->getOriginal('branch_id')) {
            /** @var User $user */
            $user = $service->user()->first();

            $oldBranchId = $service->getOriginal('branch_id');

            ActTc::query()->where('branch_id', $oldBranchId)->where('service_id', $service->id)->update(['branch_id' => $service->branch_id]);
            Order::query()->where('branch_id', $oldBranchId)->where('service_id', $service->id)->update(['branch_id' => $service->branch_id]);
            Repair::query()->where('branch_id', $oldBranchId)->where('service_id', $service->id)->update(['branch_id' => $service->branch_id]);
            Shipment::query()->where('branch_id', $oldBranchId)->where('service_id', $service->id)->update(['branch_id' => $service->branch_id]);

            if ($service->display && $service->display <> $service->getOriginal('display')) {
                ServiceService::updateDisplay($service);

                $user->service_id = $service->id;
                $user = User::withoutEvents(function () use ($user) {
                    $user->save();

                    return $user;
                });

                $old_service = $service->getOldService();
                if ($old_service) {
                    $old_service_name = $service->getOldService()->name;
                } else {
                    $old_service_name = '';
                }

                SendEmailService::companyActivationMail($service, 'company-activation', $old_service_name);
                $send_flag = 1;
            }

            $userBranchIds = $user->getBranchIds();
            if (!in_array($service->branch_id, $userBranchIds)) {
                $userBranchIds[] = $service->branch_id;
                $user->syncBranches($userBranchIds);
                LogService::updated($user);
            }
        }

        if ($service->notice <> $service->getOriginal('notice')) {
            return;
        }

        if (!Auth::user()) {
            return;
        }

        if (!$send_flag) {
            SendEmailService::editServiceMail($service, 'edit-service');
        }
    }

    /**
     * Handle the service "deleted" event.
     *
     * @param \App\Models\Service\Service $service
     *
     * @return void
     */
    public function deleted(Model $service)
    {
        parent::deleted($service);
        $service->user()->delete();
    }

    /**
     * Handle the service "restored" event.
     *
     * @param \App\Models\Service\Service $service
     *
     * @return void
     */
    public function restored(Service $service)
    {
        //
    }

    /**
     * Handle the service "force deleted" event.
     *
     * @param \App\Models\Service\Service $service
     *
     * @return void
     */
    public function forceDeleted(Service $service)
    {
        //
    }

}