You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

67 lines
1.9 KiB

<?php
namespace App\Controllers;
use App\Models\Notification;
class NotificationController extends AdminController
{
public function __construct()
{
parent::__construct();
}
// Récupérer toutes les notifications selon les règles définies dans le modèle
public function getNotification()
{
$Notification = new Notification();
$notifications = $Notification->getNotifications();
return $this->response->setJSON($notifications);
}
// Marquer une notification comme lue
public function markAsRead(int $id)
{
$Notification = new Notification();
$Notification->markAsRead($id);
return $this->response->setJSON(['status' => 'success']);
}
// Créer une nouvelle notification
public function createNotification(string $message, string $group, ?int $store_id, ?string $link)
{
$Notification = new Notification();
$data = [
'message' => $message,
'is_read' => 0,
'forgroup' => $group,
'store_id' => $store_id,
'link' => $link,
'created_at' => date('Y-m-d H:i:s')
];
$Notification->insertNotification($data);
}
// Marquer toutes les notifications comme lues pour l'utilisateur connecté
public function markAllAsRead()
{
$Notification = new Notification();
$session = session();
$users = $session->get('user');
// Mettre à jour toutes les notifications non lues pour ce store et ce groupe
$builder = $Notification->builder();
$builder->where('store_id', $users['store_id'])
->groupStart()
->where('forgroup', $users['group_name'])
->orWhere('forgroup', strtolower('TOUS'))
->groupEnd()
->where('is_read', 0)
->set(['is_read' => 1])
->update();
return $this->response->setJSON(['status' => 'success']);
}
}