File: /var/www/ipsremont-demo/app/Repository/Notification/NotificationRepository.php
<?php
namespace App\Repository\Notification;
use App\Helpers\TableColumnsHelper;
use App\Models\Notification;
use App\User;
use Illuminate\Support\Facades\Auth;
class NotificationRepository
{
public static function create(string $text): void
{
/** @var User $user */
$user = Auth::user();
$braches = $user->getBranchIds();
// Если пользователь привязан к нескольким подразделениям, то оповещения уйдут отдельно для каждого
foreach ($braches as $branch) {
$notification = new Notification(['user_id' => $user->id, 'branch_id' => $branch, 'text' => $text]);
$notification->save();
}
$notification->save();
}
public static function getNotificationsListColumns(): array
{
$table = new TableColumnsHelper();
$table->setField('text', 'notifications.table_text', 'text-left')
->setField('user_id', 'notifications.table_user_id', 'text-left')
->setField('created_at', 'notifications.table_created_at', 'text-left');
return $table->getColumns();
}
public static function getLast($branchId): ?Notification
{
if (empty($branchId)) {
/** @var User $user */
$user = Auth::user();
$branchId = $user->getBranchIds();
}
/** @var Notification $notification */
$notification = Notification::query()->whereIn('branch_id', $branchId)->latest('created_at')->first();
return $notification;
}
}