generated sotries
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
# Story 8.5: Booking Rejected Email
|
||||
|
||||
## Epic Reference
|
||||
**Epic 8:** Email Notification System
|
||||
|
||||
## User Story
|
||||
As a **client**,
|
||||
I want **to be notified when my booking is rejected**,
|
||||
So that **I can understand why and request a new consultation if needed**.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
### Trigger
|
||||
- [ ] Sent on booking rejection by admin
|
||||
|
||||
### Content
|
||||
- [ ] "Your consultation request could not be approved"
|
||||
- [ ] Original requested date and time
|
||||
- [ ] Rejection reason (if provided by admin)
|
||||
- [ ] Invitation to request new consultation
|
||||
- [ ] Contact info for questions
|
||||
|
||||
### Tone
|
||||
- [ ] Empathetic, professional
|
||||
|
||||
### Language
|
||||
- [ ] Email in client's preferred language
|
||||
|
||||
## Technical Notes
|
||||
|
||||
```php
|
||||
class BookingRejectedEmail extends Mailable
|
||||
{
|
||||
use Queueable, SerializesModels;
|
||||
|
||||
public function __construct(
|
||||
public Consultation $consultation,
|
||||
public ?string $reason = null
|
||||
) {}
|
||||
|
||||
public function content(): Content
|
||||
{
|
||||
$locale = $this->consultation->user->preferred_language ?? 'ar';
|
||||
|
||||
return new Content(
|
||||
markdown: "emails.booking.rejected.{$locale}",
|
||||
with: [
|
||||
'consultation' => $this->consultation,
|
||||
'reason' => $this->reason,
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Definition of Done
|
||||
- [ ] Email sent on rejection
|
||||
- [ ] Reason included if provided
|
||||
- [ ] Empathetic tone
|
||||
- [ ] Bilingual templates
|
||||
- [ ] Tests pass
|
||||
|
||||
## Estimation
|
||||
**Complexity:** Low | **Effort:** 2 hours
|
||||
Reference in New Issue
Block a user