mosamy/seenable

Laravel package that handle the headache of the translation problem.

1.0.2 2023-04-25 00:58 UTC

This package is auto-updated.

Last update: 2025-04-25 05:12:36 UTC


README

Monitor to show if a record is seen and by whom

Installation

composer require mosamy/seenable
php artisan migrate

Usage


namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Message extends Model
{
  use \Mosamy\Seenable\Seenable;
}

To detect if a message was seen just check is_seen property

$message = Message::find(1);
echo $message->is_seen; //boolean

markAsSeen()

To mark a record as seen.

$message = Message::find(1);
$message->markAsSeen();

markAsUnseen()

To mark a record as unseen.

$message = Message::find(1);
$message->markAsUnseen();

views

Get a list of views by users that saw a record. If you plan to use this feature in a list don't forget to eager load this function by using with('views')

$message = Message::find(1);
$views = $message->views;

foreach($views as $view){
	echo $views->seener;
}

seenBy()

Get records that have been seen by specific user type (Model class name).

$message = Message::seenBy(App\Models\Admin::class)->get();

// specifiy a user id

$message = Message::seenBy(App\Models\Admin::class, 1)->get();

seenByMe()

Get records that have been seen by logged in user.

$message = Message::seenByMe()->get();

haventSeenBy()

Get records that haven't been seen by specific user type (Model class name).

$message = Message::haventSeenBy(App\Models\Admin::class)->get();

// specifiy a user id

$message = Message::haventSeenBy(App\Models\Admin::class, 1)->get();

haventSeenByMe()

Get records that haven't been seen by logged in user.

$message = Message::haventSeenByMe()->get();

orderBySeen()

Order records by seen first.

$message = Message::orderBySeen()->get();

orderByUnseen()

Order records by unseen first.

$message = Message::orderByUnseen()->get();