init
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
namespace Esun\CustomerMessage\Model;
|
||||
|
||||
use Magento\Framework\App\ResourceConnection;
|
||||
|
||||
class MessageProvider
|
||||
{
|
||||
public function __construct(private readonly ResourceConnection $resource)
|
||||
{
|
||||
}
|
||||
|
||||
public function getForCustomer(int $customerId, int $storeId, int $limit = 50): array
|
||||
{
|
||||
$connection = $this->resource->getConnection();
|
||||
return $connection->fetchAll($connection->select()->from(['recipient'=>$this->resource->getTableName('esun_customer_message_recipient')], ['recipient_id','is_read','read_at'])
|
||||
->joinInner(['message'=>$this->resource->getTableName('esun_customer_message')], 'message.message_id=recipient.message_id', ['message_id','title','content','message_type','created_at','expires_at'])
|
||||
->where('recipient.customer_id=?', $customerId)->where('message.is_active=?', 1)
|
||||
->where('message.store_id IN (?)', [0,$storeId])->where('(message.expires_at IS NULL OR message.expires_at > UTC_TIMESTAMP())')
|
||||
->order('recipient.is_read ASC')->order('message.created_at DESC')->limit(max(1, min(100, $limit))));
|
||||
}
|
||||
|
||||
public function markRead(int $recipientId, int $customerId): bool
|
||||
{
|
||||
return (bool)$this->resource->getConnection()->update($this->resource->getTableName('esun_customer_message_recipient'), ['is_read'=>1,'read_at'=>gmdate('Y-m-d H:i:s')], ['recipient_id=?'=>$recipientId,'customer_id=?'=>$customerId]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user