Skip to content

Commit 0ffa312

Browse files
author
Chri$
committed
feat :[LAR-61]Add notification for rejet article and fix unsend mail for approved article
1 parent 7d707d6 commit 0ffa312

File tree

11 files changed

+302
-117
lines changed

11 files changed

+302
-117
lines changed

.phpunit.cache/test-results

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"version":"pest_2.35.1","defects":{"P\\Tests\\Feature\\Article\\SendTelegramNotificationTest::__pest_evaluable_Send_notification_on_telegram_after_submition_on_article":8},"times":{"P\\Tests\\Feature\\Article\\SendTelegramNotificationTest::__pest_evaluable_Send_notification_on_telegram_after_submition_on_article":0.191}}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<?php
2+
3+
namespace App\Http\Livewire\Modals;
4+
5+
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
6+
use App\Notifications\SendDeclinedArticle;
7+
use Illuminate\Support\Facades\Cache;
8+
use LivewireUI\Modal\ModalComponent;
9+
use Livewire\Attributes\Validate;
10+
use App\Policies\ArticlePolicy;
11+
use App\Models\Article;
12+
13+
class DeclinedArticle extends ModalComponent
14+
{
15+
use AuthorizesRequests;
16+
17+
public ?string $raison = null;
18+
19+
public ?string $description = null;
20+
21+
public ?Article $article = null;
22+
23+
protected $rules = [
24+
'raison' => 'required|string|min:6',
25+
'description' => 'required|string',
26+
];
27+
28+
public function mount(int $id): void
29+
{
30+
$this->article = Article::find($id);
31+
}
32+
33+
public static function modalMaxWidth(): string
34+
{
35+
return 'xl';
36+
}
37+
38+
public function declined(): void
39+
{
40+
$data = $this->validate();
41+
42+
$this->authorize(ArticlePolicy::DISAPPROVE, $this->article);
43+
44+
$this->article->update(['declined_at' => now()]); // @phpstan-ignore-line
45+
46+
Cache::forget('post-'.$this->article->id); // @phpstan-ignore-line
47+
48+
$this->article->user->notify(new SendDeclinedArticle($this->article, $data)); // @phpstan-ignore-line
49+
50+
session()->flash('status', __('L\'article a été décliné et le mail a été envoyé à l\'auteur pour le notifier.'));
51+
52+
$this->redirectRoute('articles');
53+
}
54+
55+
56+
public function render()
57+
{
58+
return view('livewire.modals.declined-article');
59+
}
60+
}

app/Notifications/SendApprovedArticle.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@
66

77
use App\Models\Article;
88
use Illuminate\Bus\Queueable;
9-
use Illuminate\Contracts\Queue\ShouldQueue;
109
use Illuminate\Notifications\Messages\MailMessage;
1110
use Illuminate\Notifications\Notification;
1211

13-
final class SendApprovedArticle extends Notification implements ShouldQueue
12+
final class SendApprovedArticle extends Notification
1413
{
1514
use Queueable;
1615

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Notifications;
6+
7+
use App\Models\Article;
8+
use Illuminate\Bus\Queueable;
9+
use Illuminate\Notifications\Messages\MailMessage;
10+
use Illuminate\Notifications\Notification;
11+
12+
final class SendDeclinedArticle extends Notification
13+
{
14+
use Queueable;
15+
16+
public function __construct(public Article $article,public array $data)
17+
{}
18+
19+
public function via(object $notifiable): array
20+
{
21+
return ['mail'];
22+
}
23+
24+
public function toMail(object $notifiable): MailMessage
25+
{
26+
return (new MailMessage)
27+
->subject(__('Article Décliné ❌.'))
28+
->greeting(__('Article Décliné :'.$this->data['raison']))
29+
->line(__('Nous avons le regret de vous informer que votre article a été décliné.'))
30+
->line($this->data['description'])
31+
->action(__('Voir mon article'), route('articles.show', $this->article))
32+
->line(__('Merci d\'avoir utilisé Laravel Cameroun.!'));
33+
}
34+
}

resources/views/articles/show.blade.php

Lines changed: 154 additions & 114 deletions
Large diffs are not rendered by default.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
<button {{ $attributes->merge(['class' => 'inline-flex justify-center w-full rounded-md border border-transparent px-4 py-2 bg-negative-600 text-base leading-6 font-medium text-white shadow-sm hover:bg-negative-500 focus:outline-none focus:border-negative-700 sm:text-sm sm:leading-5 focus:ring-2 focus:ring-offset-2 focus:ring-offset-body focus:ring-negative-500']) }}>
1+
<button {{ $attributes->merge(['class' => 'button inline-flex items-center justify-center rounded-md border border-transparent px-4 py-2 bg-danger-600 text-base leading-6 font-medium text-white shadow-sm hover:bg-danger-500 focus:outline-none focus:border-danger-700 sm:text-sm sm:leading-5 focus:ring-2 focus:ring-offset-2 focus:ring-offset-body focus:ring-danger-500']) }}>
22
{{ $slot }}
33
</button>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
@props(['messages'])
2+
3+
@if ($messages)
4+
<ul {{ $attributes->merge(['class' => 'text-sm text-danger-600 space-y-1']) }}>
5+
@foreach ((array) $messages as $message)
6+
<li>{{ $message }}</li>
7+
@endforeach
8+
</ul>
9+
@endif
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
@props(['disabled' => false])
2+
3+
<input {{ $disabled ? 'disabled' : '' }} {!! $attributes->merge(['class' => 'inline-flex w-full py-2 rounded-lg placeholder-gray-500 border-gray-200 focus:ring-primary-500 focus:ring-2 focus:border-transparent focus:outline-none sm:text-sm']) !!}>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
@props(['value', 'required'])
2+
3+
<label {{ $attributes->merge(['class' => 'block font-medium text-sm text-gray-700']) }}>
4+
{{ $value ?? $slot }}
5+
@if(isset($required))
6+
<span class="text-red-600">*</span>
7+
@endif
8+
</label>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
@props(['disabled' => false])
2+
3+
<textarea {{ $disabled ? 'disabled' : '' }} {!! $attributes->merge(['class' => 'block p-2.5 w-full text-sm placeholder-gray-500 bg-gray-50 rounded-lg border border-gray-200 focus:ring-primary-500 focus:border-primary-500']) !!}>{{ $slot }}</textarea>

0 commit comments

Comments
 (0)