libra/docs/stories/story-8.5-booking-rejected-...

1.4 KiB

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

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