first commit
This commit is contained in:
78
app/Models/ServiceChatMessage.php
Normal file
78
app/Models/ServiceChatMessage.php
Normal file
@@ -0,0 +1,78 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Storage;
|
||||
|
||||
class ServiceChatMessage extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
public const PATH_PREFIX = 'public/chats';
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $fillable = [
|
||||
'service_chat_id',
|
||||
'message',
|
||||
'from_user_id',
|
||||
'to_user_id',
|
||||
'to_admin',
|
||||
'is_file',
|
||||
'file_name',
|
||||
'is_read',
|
||||
];
|
||||
|
||||
public function getElapsedTimeAttribute()
|
||||
{
|
||||
$time = time() - $this->created_at->timestamp;
|
||||
$time = $time < 1 ? 1 : $time;
|
||||
$tokens = [
|
||||
31536000 => 'year',
|
||||
2592000 => 'month',
|
||||
604800 => 'week',
|
||||
86400 => 'day',
|
||||
3600 => 'hour',
|
||||
60 => 'min',
|
||||
1 => 'second',
|
||||
];
|
||||
|
||||
foreach ($tokens as $unit => $text) {
|
||||
if ($time < $unit) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$numberOfUnits = floor($time / $unit);
|
||||
|
||||
return $numberOfUnits . ' ' . $text . ($numberOfUnits > 1 ? 's' : '') . ' ago';
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
public function getFolderPathAttribute()
|
||||
{
|
||||
return self::PATH_PREFIX . '/' . $this->service_chat_id;
|
||||
}
|
||||
|
||||
public function getFilePathAttribute()
|
||||
{
|
||||
return ! $this->file_name ? null : $this->getFolderPathAttribute() . "/{$this->file_name}";
|
||||
}
|
||||
|
||||
public function getFileUrlAttribute()
|
||||
{
|
||||
$path = $this->getFilePathAttribute();
|
||||
|
||||
if ($path && Storage::exists($path)) {
|
||||
return env('AWS_ENDPOINT') . env('AWS_BUCKET') . '/' . $path;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user