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)
{
//
}
}