Browse Source

Merge branch 'master' of https://gitea.hooradev.ir/mahdihty/liwo into mohammad

mohammad
Mohammad Akbari 4 years ago
parent
commit
235babe541
Signed by: akbarjimi GPG Key ID: 55726AEFECE5E683
  1. 66
      app/Listeners/BusinessUserCreateNotif.php
  2. 64
      app/Listeners/ProjectUserCreateNotif.php
  3. 68
      app/Listeners/TaskCreateNotif.php
  4. 92
      app/Listeners/TaskUpdateNotif.php
  5. 43
      app/Utilities/HelperClass/NotificationHelper.php

66
app/Listeners/BusinessUserCreateNotif.php

@ -2,27 +2,27 @@
namespace App\Listeners; namespace App\Listeners;
use App\Channels\FcmChannel;
use App\Events\BusinessUserCreate; use App\Events\BusinessUserCreate;
use App\Models\Business; use App\Models\Business;
use App\Models\User; use App\Models\User;
use App\Notifications\DBNotification;
use App\Notifications\FcmNotification;
use App\Notifications\MailNotification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Notification;
use App\Utilities\HelperClass\NotificationHelper;
class BusinessUserCreateNotif class BusinessUserCreateNotif
{ {
/**
* @var NotificationHelper
*/
public $helper;
/** /**
* Create the event listener. * Create the event listener.
* *
* @return void * @return void
*/ */
public function __construct()
public function __construct(NotificationHelper $helper)
{ {
//
$this->helper = $helper;
} }
/** /**
@ -42,52 +42,10 @@ class BusinessUserCreateNotif
$new_user = User::findOrFail($payload->data->original->user_id); $new_user = User::findOrFail($payload->data->original->user_id);
$owners = Business::findOrFail($payload->business)->owners()->where('id', '!=', $new_user->id)->get(); $owners = Business::findOrFail($payload->business)->owners()->where('id', '!=', $new_user->id)->get();
$notif = $this->makeNotif($payload,['business' => request('_business_info')['name'], 'user' => $new_user->name]);
$users = $owners->prepend($new_user); $users = $owners->prepend($new_user);
$this->sendNotifications($users, $notif);
}
/**
* Make notification object
*
* @param $payload
* @param array $options
* @return array
*/
public function makeNotif($payload, $options = []) {
return [
'greeting' => $this->getMessageLine($payload, 'greeting'),
'subject' => $this->getMessageLine($payload, 'subject'),
'title' => $this->getMessageLine($payload, 'title'),
'body' => $this->getMessageLine($payload, 'body', $options)
];
}
/**
* Fetch message from notifications lang file
*
* @param $payload
* @param $key
* @param null $options
* @return array|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Translation\Translator|string|null
*
*/
public function getMessageLine($payload, $key, $options = [])
{
return __('notification.'.$payload->data->table_name.'.'.enum('cruds.inverse.'.$payload->data->crud_id.'.singular_name').'.'.$key, $options);
}
/**
* Call notifications
*
* @param $users
* @param $notif
*/
public function sendNotifications($users, $notif) {
Notification::send($users, new MailNotification($notif));
Notification::send($users, new DBNotification($notif));
Notification::send($users, new FcmNotification($notif));
$this->helper->makeNotif($payload, null,
['business' => request('_business_info')['name'], 'user' => $new_user->name]
)->sendNotifications($users, 'critical');
} }
} }

64
app/Listeners/ProjectUserCreateNotif.php

@ -5,23 +5,23 @@ namespace App\Listeners;
use App\Events\ProjectUserCreate; use App\Events\ProjectUserCreate;
use App\Models\Project; use App\Models\Project;
use App\Models\User; use App\Models\User;
use App\Notifications\DBNotification;
use App\Notifications\FcmNotification;
use App\Notifications\MailNotification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Notification;
use App\Utilities\HelperClass\NotificationHelper;
class ProjectUserCreateNotif class ProjectUserCreateNotif
{ {
/**
* @var NotificationHelper
*/
public $helper;
/** /**
* Create the event listener. * Create the event listener.
* *
* @return void * @return void
*/ */
public function __construct()
public function __construct(NotificationHelper $helper)
{ {
//
$this->helper = $helper;
} }
/** /**
@ -42,52 +42,10 @@ class ProjectUserCreateNotif
$owners = User::whereIn('id', array_keys($owners_id))->get(); $owners = User::whereIn('id', array_keys($owners_id))->get();
$notif = $this->makeNotif($payload,['project' => $project->name, 'user' => $new_user->name]);
$users = $owners->prepend($new_user); $users = $owners->prepend($new_user);
$this->sendNotifications($users, $notif);
}
/**
* Make notification object
*
* @param $payload
* @param array $options
* @return array
*/
public function makeNotif($payload, $options = []) {
return [
'greeting' => $this->getMessageLine($payload, 'greeting'),
'subject' => $this->getMessageLine($payload, 'subject'),
'title' => $this->getMessageLine($payload, 'title'),
'body' => $this->getMessageLine($payload, 'body', $options)
];
}
/**
* Fetch message from notifications lang file
*
* @param $payload
* @param $key
* @param null $options
* @return array|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Translation\Translator|string|null
*
*/
public function getMessageLine($payload, $key, $options = [])
{
return __('notification.'.$payload->data->table_name.'.'.enum('cruds.inverse.'.$payload->data->crud_id.'.singular_name').'.'.$key, $options);
}
/**
* Call notifications
*
* @param $users
* @param $notif
*/
public function sendNotifications($users, $notif) {
Notification::send($users, new MailNotification($notif));
Notification::send($users, new DBNotification($notif));
Notification::send($users, new FcmNotification($notif));
$this->helper->makeNotif($payload, null,
['project' => $project->name, 'user' => $new_user->name]
)->sendNotifications($users, 'critical');
} }
} }

68
app/Listeners/TaskCreateNotif.php

@ -5,21 +5,23 @@ namespace App\Listeners;
use App\Events\TaskCreate; use App\Events\TaskCreate;
use App\Models\Task; use App\Models\Task;
use App\Models\User; use App\Models\User;
use App\Notifications\DBNotification;
use App\Notifications\FcmNotification;
use App\Notifications\MailNotification;
use Illuminate\Support\Facades\Notification;
use App\Utilities\HelperClass\NotificationHelper;
class TaskCreateNotif class TaskCreateNotif
{ {
/**
* @var NotificationHelper
*/
public $helper;
/** /**
* Create the event listener. * Create the event listener.
* *
* @return void * @return void
*/ */
public function __construct()
public function __construct(NotificationHelper $helper)
{ {
//
$this->helper = $helper;
} }
/** /**
@ -44,61 +46,15 @@ class TaskCreateNotif
$user = User::findOrFail($payload->data->original->assignee_id); $user = User::findOrFail($payload->data->original->assignee_id);
$task = Task::findOrFail($payload->data->original->id); $task = Task::findOrFail($payload->data->original->id);
$notif = $this->makeNotif($payload, 'assignee', ['task' => $task->title]);
$this->sendNotifications($user, $notif);
$this->helper->makeNotif($payload, 'assignee', ['task' => $task->title])
->sendNotifications($user, 'critical');
} }
public function approverNotifHandler($payload) { public function approverNotifHandler($payload) {
$user = User::findOrFail($payload->data->original->approver_id); $user = User::findOrFail($payload->data->original->approver_id);
$task = Task::findOrFail($payload->data->original->id); $task = Task::findOrFail($payload->data->original->id);
$notif = $this->makeNotif($payload, 'approver', ['task' => $task->title]);
$this->sendNotifications($user, $notif);
}
/**
* Make notification object
*
* @param $payload
* @param null $route
* @param array $options
* @return array
*/
public function makeNotif($payload, $route = null, $options = []) {
$route = $route == null ? "" : $route.'.';
return [
'greeting' => $this->getMessageLine($payload, $route.'greeting'),
'subject' => $this->getMessageLine($payload, $route.'subject'),
'title' => $this->getMessageLine($payload, $route.'title'),
'body' => $this->getMessageLine($payload, $route.'body', $options)
];
}
/**
* Fetch message from notifications lang file
*
* @param $payload
* @param $key
* @param null $options
* @return array|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Translation\Translator|string|null
*
*/
public function getMessageLine($payload, $key, $options = [])
{
return __('notification.'.$payload->data->table_name.'.'.enum('cruds.inverse.'.$payload->data->crud_id.'.singular_name').'.'.$key, $options);
}
/**
* Call notifications
*
* @param $users
* @param $notif
*/
public function sendNotifications($users, $notif) {
Notification::send($users, new MailNotification($notif));
Notification::send($users, new DBNotification($notif));
Notification::send($users, new FcmNotification($notif));
$this->helper->makeNotif($payload, 'approver', ['task' => $task->title])
->sendNotifications($user, 'critical');
} }
} }

92
app/Listeners/TaskUpdateNotif.php

@ -5,21 +5,23 @@ namespace App\Listeners;
use App\Events\TaskUpdate; use App\Events\TaskUpdate;
use App\Models\Task; use App\Models\Task;
use App\Models\User; use App\Models\User;
use App\Notifications\DBNotification;
use App\Notifications\FcmNotification;
use App\Notifications\MailNotification;
use Illuminate\Support\Facades\Notification;
use App\Utilities\HelperClass\NotificationHelper;
class TaskUpdateNotif class TaskUpdateNotif
{ {
/**
* @var NotificationHelper
*/
public $helper;
/** /**
* Create the event listener. * Create the event listener.
* *
* @return void * @return void
*/ */
public function __construct()
public function __construct(NotificationHelper $helper)
{ {
//
$this->helper = $helper;
} }
/** /**
@ -49,18 +51,16 @@ class TaskUpdateNotif
$user = User::findOrFail($payload->data->diff->assignee_id); $user = User::findOrFail($payload->data->diff->assignee_id);
$task = Task::findOrFail($payload->data->original->id); $task = Task::findOrFail($payload->data->original->id);
$notif = $this->makeNotif($payload, 'assignee', ['task' => $task->title]);
$this->sendNotifications($user, $notif);
$this->helper->makeNotif($payload, 'assignee', ['task' => $task->title])
->sendNotifications($user, 'critical');
} }
public function approverNotifHandler($payload) { public function approverNotifHandler($payload) {
$user = User::findOrFail($payload->data->diff->approver_id); $user = User::findOrFail($payload->data->diff->approver_id);
$task = Task::findOrFail($payload->data->original->id); $task = Task::findOrFail($payload->data->original->id);
$notif = $this->makeNotif($payload, 'approver', ['task' => $task->title]);
$this->sendNotifications($user, $notif);
$this->helper->makeNotif($payload, 'approver', ['task' => $task->title])
->sendNotifications($user, 'critical');
} }
public function completedNotifHandler($payload){ public function completedNotifHandler($payload){
@ -74,9 +74,8 @@ class TaskUpdateNotif
$users = User::whereIn('id', $user_ids)->where('id', '!=', auth()->id())->get(); $users = User::whereIn('id', $user_ids)->where('id', '!=', auth()->id())->get();
$notif = $this->makeNotif($payload, 'completed', ['task' => $task->title]);
$this->sendNotifications($users, $notif);
$this->helper->makeNotif($payload, 'completed', ['task' => $task->title])
->sendNotifications($users, 'critical');
} }
public function readyNotifHandler($payload) public function readyNotifHandler($payload)
@ -90,66 +89,7 @@ class TaskUpdateNotif
$users = User::whereIn('id', $user_ids)->where('id', '!=', auth()->id())->get(); $users = User::whereIn('id', $user_ids)->where('id', '!=', auth()->id())->get();
$notif = $this->makeNotif($payload, 'ready', ['task' => $task->title]);
$this->sendNotifications($users, $notif);
}
/**
* Make notification object
*
* @param $payload
* @param null $route
* @param array $options
* @return array
*/
public function makeNotif($payload, $route = null, $options = []) {
$route = $route == null ? "" : $route.'.';
return [
'greeting' => $this->getMessageLine($payload, $route.'greeting'),
'subject' => $this->getMessageLine($payload, $route.'subject'),
'title' => $this->getMessageLine($payload, $route.'title'),
'body' => $this->getMessageLine($payload, $route.'body', $options)
];
}
/**
* Fetch message from notifications lang file
*
* @param $payload
* @param $key
* @param null $options
* @return array|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Translation\Translator|string|null
*
*/
public function getMessageLine($payload, $key, $options = [])
{
return __('notification.'.$payload->data->table_name.'.'.enum('cruds.inverse.'.$payload->data->crud_id.'.singular_name').'.'.$key, $options);
}
/**
* Call notifications
*
* @param $users
* @param $notif
*/
public function sendNotifications($users, $notif) {
// switch ($level) {
// case "emergency":
//// Notification::send($users, new SmsNotification($notif));
// case "critical":
// Notification::send($users, new MailNotification($notif));
// case "high":
// Notification::send($users, new DBNotification($notif));
// case "medium":
// Notification::send($users, new FcmNotification($notif));
// case "low":
//// Notification::send($users, new SocketNotification($notif));
// default:
//// Notification::send($users, new SocketNotification($notif));
// }
Notification::send($users, new MailNotification($notif));
Notification::send($users, new DBNotification($notif));
Notification::send($users, new FcmNotification($notif));
$this->helper->makeNotif($payload, 'ready', ['task' => $task->title])
->sendNotifications($users, 'critical');
} }
} }

43
app/Utilities/HelperClass/NotificationHelper.php

@ -11,6 +11,7 @@ use Illuminate\Support\Facades\Notification;
class NotificationHelper class NotificationHelper
{ {
protected $notif;
/** /**
* Make notification object * Make notification object
* *
@ -21,12 +22,13 @@ class NotificationHelper
*/ */
public function makeNotif($payload, $route = null, $options = []) { public function makeNotif($payload, $route = null, $options = []) {
$route = $route == null ? "" : $route.'.'; $route = $route == null ? "" : $route.'.';
return [
$this->notif = [
'greeting' => $this->getMessageLine($payload, $route.'greeting'), 'greeting' => $this->getMessageLine($payload, $route.'greeting'),
'subject' => $this->getMessageLine($payload, $route.'subject'), 'subject' => $this->getMessageLine($payload, $route.'subject'),
'title' => $this->getMessageLine($payload, $route.'title'), 'title' => $this->getMessageLine($payload, $route.'title'),
'body' => $this->getMessageLine($payload, $route.'body', $options) 'body' => $this->getMessageLine($payload, $route.'body', $options)
]; ];
return $this;
} }
/** /**
@ -38,7 +40,7 @@ class NotificationHelper
* @return array|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Translation\Translator|string|null * @return array|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Translation\Translator|string|null
* *
*/ */
public function getMessageLine($payload, $key, $options = [])
protected function getMessageLine($payload, $key, $options = [])
{ {
return __('notification.'.$payload->data->table_name.'.'.enum('cruds.inverse.'.$payload->data->crud_id.'.singular_name').'.'.$key, $options); return __('notification.'.$payload->data->table_name.'.'.enum('cruds.inverse.'.$payload->data->crud_id.'.singular_name').'.'.$key, $options);
} }
@ -49,24 +51,25 @@ class NotificationHelper
* @param $users * @param $users
* @param $notif * @param $notif
*/ */
public function sendNotifications($users, $notif) {
// switch ($level) {
// case "emergency":
//// Notification::send($users, new SmsNotification($notif));
// case "critical":
// Notification::send($users, new MailNotification($notif));
// case "high":
// Notification::send($users, new DBNotification($notif));
// case "medium":
// Notification::send($users, new FcmNotification($notif));
// case "low":
//// Notification::send($users, new SocketNotification($notif));
// default:
//// Notification::send($users, new SocketNotification($notif));
// }
Notification::send($users, new MailNotification($notif));
Notification::send($users, new DBNotification($notif));
Notification::send($users, new FcmNotification($notif));
public function sendNotifications($users, $level = null) {
switch ($level) {
case "emergency":
// Notification::send($users, new SmsNotification($notif));
case "critical":
Notification::send($users, new MailNotification($notif));
case "high":
Notification::send($users, new DBNotification($notif));
case "medium":
Notification::send($users, new FcmNotification($notif));
case "low":
// Notification::send($users, new SocketNotification($notif));
default:
// Notification::send($users, new SocketNotification($notif));
}
// Notification::send($users, new MailNotification($this->notif));
// Notification::send($users, new DBNotification($this->notif));
// Notification::send($users, new FcmNotification($this->notif));
} }
} }
Loading…
Cancel
Save