feature(send notification for report status): send mail to broker and user when admin resolves/rejects the reports
This commit is contained in:
parent
d7c06c38a6
commit
2fecd52d7e
@ -5,6 +5,8 @@
|
||||
use App\Enums\ReportStatus;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Report;
|
||||
use App\Notifications\ReportResolvedNotificationToBroker;
|
||||
use App\Notifications\ReportRejectedNotificationToUser;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class ReportController extends Controller
|
||||
@ -27,9 +29,13 @@ public function resolve(Report $report)
|
||||
$report->status = ReportStatus::Resolved;
|
||||
$report->save();
|
||||
|
||||
$report->user->notify(new ReportRejectedNotificationToUser($report->deals()->first()->title, false));
|
||||
$report->deals()->first()->broker->notify(new ReportResolvedNotificationToBroker($report->deals()->first()->title,
|
||||
false));
|
||||
|
||||
return back()->with('success', 'Report resolved successfully.');
|
||||
} catch (\Throwable $e) {
|
||||
\Log::error('Error resolving report', [$report->id, $e->getMessage(), $e->getTraceAsString()]);
|
||||
\Log::error('Error resolving report', [$report->id, $e->getMessage()]);
|
||||
|
||||
return back()->with('error', 'Something went wrong.');
|
||||
}
|
||||
@ -41,9 +47,11 @@ public function reject(Report $report)
|
||||
$report->status = ReportStatus::Rejected;
|
||||
$report->save();
|
||||
|
||||
$report->user->notify(new ReportRejectedNotificationToUser($report->deals()->first()->title));
|
||||
|
||||
return back()->with('success', 'Report Rejected successfully.');
|
||||
} catch (\Throwable $e) {
|
||||
\Log::error('Error rejecting report', [$report->id, $e->getMessage(), $e->getTraceAsString()]);
|
||||
\Log::error('Error rejecting report', [$report->id, $e->getMessage()]);
|
||||
|
||||
return back()->with('error', 'Something went wrong.');
|
||||
}
|
||||
@ -56,6 +64,11 @@ public function removeContent(Report $report)
|
||||
{
|
||||
try {
|
||||
DB::transaction(function () use ($report) {
|
||||
|
||||
$report->user->notify(new ReportRejectedNotificationToUser($report->deals()->first()->title, true));
|
||||
$report->deals()->first()->broker->notify(new ReportResolvedNotificationToBroker($report->deals()->first()->title,
|
||||
true));
|
||||
|
||||
$deal = $report->deals()->first();
|
||||
$deal->active = false;
|
||||
$report->status = ReportStatus::Resolved;
|
||||
|
||||
44
app/Notifications/ReportRejectedNotificationToUser.php
Normal file
44
app/Notifications/ReportRejectedNotificationToUser.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace App\Notifications;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Notifications\Messages\MailMessage;
|
||||
use Illuminate\Notifications\Notification;
|
||||
|
||||
class ReportRejectedNotificationToUser extends Notification implements ShouldQueue
|
||||
{
|
||||
use Queueable;
|
||||
|
||||
public function __construct(
|
||||
private readonly string $dealTitle,
|
||||
) {
|
||||
}
|
||||
|
||||
public function via($notifiable): array
|
||||
{
|
||||
return ['mail'];
|
||||
}
|
||||
|
||||
public function toMail($notifiable): MailMessage
|
||||
{
|
||||
|
||||
return (new MailMessage)
|
||||
->subject('Update on Your Recent Report: '.$this->dealTitle)
|
||||
->greeting('Hello!')
|
||||
->line("Thank you for helping us maintain the integrity of our marketplace.")
|
||||
->line("We have completed our review of the deal you reported: **{$this->dealTitle}**.")
|
||||
->line("Based on our moderation policy, we have rejected your report.")
|
||||
->action('View Marketplace', route('explore'))
|
||||
->line('Your feedback helps make our community a safer place for everyone.');
|
||||
}
|
||||
|
||||
public function toArray($notifiable): array
|
||||
{
|
||||
return [
|
||||
'report_outcome' => $this->isContentRemoved ? 'violation_confirmed' : 'no_violation_found',
|
||||
'deal_title' => $this->dealTitle
|
||||
];
|
||||
}
|
||||
}
|
||||
47
app/Notifications/ReportResolvedNotificationToBroker.php
Normal file
47
app/Notifications/ReportResolvedNotificationToBroker.php
Normal file
@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
namespace App\Notifications;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Notifications\Messages\MailMessage;
|
||||
use Illuminate\Notifications\Notification;
|
||||
|
||||
class ReportResolvedNotificationToBroker extends Notification implements ShouldQueue
|
||||
{
|
||||
use Queueable;
|
||||
|
||||
public function __construct(
|
||||
private readonly string $dealTitle,
|
||||
private readonly bool $isContentRemoved
|
||||
) {
|
||||
}
|
||||
|
||||
public function via($notifiable): array
|
||||
{
|
||||
return ['mail'];
|
||||
}
|
||||
|
||||
public function toMail($notifiable): MailMessage
|
||||
{
|
||||
$status = $this->isContentRemoved
|
||||
? 'has been removed following a policy review.'
|
||||
: 'has been reviewed and remains active.';
|
||||
|
||||
return (new MailMessage)
|
||||
->subject('Update Regarding Your Reported Deal: '.$this->dealTitle)
|
||||
->greeting('Hello!')
|
||||
->line("We are writing to inform you that the report regarding your deal, **{$this->dealTitle}**, has been resolved.")
|
||||
->line("Our moderation team has completed their review, and the content {$status}")
|
||||
->action('View My Deals', route('broker.dashboard')) // Adjusted for your UMS/Project structure
|
||||
->line('Thank you for being a part of our marketplace.');
|
||||
}
|
||||
|
||||
public function toArray($notifiable): array
|
||||
{
|
||||
return [
|
||||
'deal_title' => $this->dealTitle,
|
||||
'action_taken' => $this->isContentRemoved ? 'removed' : 'kept',
|
||||
];
|
||||
}
|
||||
}
|
||||
48
app/Notifications/ReportResolvedNotificationToUser.php
Normal file
48
app/Notifications/ReportResolvedNotificationToUser.php
Normal file
@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
namespace App\Notifications;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Notifications\Messages\MailMessage;
|
||||
use Illuminate\Notifications\Notification;
|
||||
|
||||
class ReportResolvedNotificationToUser extends Notification implements ShouldQueue
|
||||
{
|
||||
use Queueable;
|
||||
|
||||
public function __construct(
|
||||
private readonly string $dealTitle,
|
||||
private readonly bool $isContentRemoved
|
||||
) {
|
||||
}
|
||||
|
||||
public function via($notifiable): array
|
||||
{
|
||||
return ['mail'];
|
||||
}
|
||||
|
||||
public function toMail($notifiable): MailMessage
|
||||
{
|
||||
$outcome = $this->isContentRemoved
|
||||
? 'has been removed following our investigation.'
|
||||
: 'will remain active as it was found to be in compliance with our guidelines.';
|
||||
|
||||
return (new MailMessage)
|
||||
->subject('Update on Your Recent Report: '.$this->dealTitle)
|
||||
->greeting('Hello!')
|
||||
->line("Thank you for helping us maintain the integrity of our marketplace.")
|
||||
->line("We have completed our review of the deal you reported: **{$this->dealTitle}**.")
|
||||
->line("Based on our moderation policy, the content {$outcome}")
|
||||
->action('View Marketplace', route('explore'))
|
||||
->line('Your feedback helps make our community a safer place for everyone.');
|
||||
}
|
||||
|
||||
public function toArray($notifiable): array
|
||||
{
|
||||
return [
|
||||
'report_outcome' => $this->isContentRemoved ? 'violation_confirmed' : 'no_violation_found',
|
||||
'deal_title' => $this->dealTitle
|
||||
];
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user