# Epic 7: Client Dashboard

## Epic Goal

Create a client portal where logged-in clients can view their consultations, case timelines, profile information, and book new consultations.

## Epic Description

### Business Context

Clients need a simple, intuitive interface to access their information and services. They can view (but not modify) their profile, see upcoming and past consultations, track case progress through timelines, and request new consultations.

### Technical Context

- **Access:** Authenticated clients only
- **Capabilities:** Read-mostly (can only submit bookings)
- **Restrictions:** Cannot edit profile, cancel bookings, or comment
- **Design:** Mobile-friendly, professional

### Success Criteria

- [ ] Client overview dashboard
- [ ] View upcoming and past consultations
- [ ] Download calendar files
- [ ] View case timelines (read-only)
- [ ] View profile information
- [ ] Submit new booking requests
- [ ] Booking limit enforcement (1 per day)
- [ ] Responsive mobile design

---

## Stories

### Story 7.1: Client Dashboard Overview

**Description:** Main dashboard page for clients showing key information at a glance.

**Acceptance Criteria:**
- [ ] Welcome message with client name
- [ ] **Upcoming Consultations Widget:**
  - Next consultation date/time
  - Type (free/paid)
  - Status
  - Quick link to details
- [ ] **Active Cases Widget:**
  - Count of active timelines
  - Latest update preview
  - Link to full list
- [ ] **Recent Updates Widget:**
  - Last 3 timeline updates (across all cases)
  - Case name and date
  - Link to full timeline
- [ ] **Booking Status Widget:**
  - Pending booking requests
  - Daily booking limit indicator
  - Quick book button
- [ ] Clean, card-based layout
- [ ] Bilingual content

**Technical Notes:**
- Scoped to authenticated user's data only
- Use Livewire components for widgets
- Mobile-first responsive design

---

### Story 7.2: My Consultations View

**Description:** List of all client's consultations (upcoming and past).

**Acceptance Criteria:**
- [ ] **Upcoming Consultations Section:**
  - Date and time
  - Consultation type (free/paid)
  - Status (approved/pending)
  - Payment status (for paid)
  - Download .ics calendar file button
- [ ] **Pending Requests Section:**
  - Submitted bookings awaiting approval
  - Submission date
  - Problem summary preview
  - Status: "Pending Review"
- [ ] **Past Consultations Section:**
  - Historical consultations
  - Status (completed/cancelled/no-show)
  - Date and type
- [ ] Visual status indicators
- [ ] Sort by date (default: newest first for past)
- [ ] Pagination if many consultations
- [ ] No edit/cancel capabilities

**Technical Notes:**
- Filter by authenticated user
- Group by status categories
- Calendar download from Epic 3

---

### Story 7.3: My Cases/Timelines View

**Description:** List and detail view of client's case timelines.

**Acceptance Criteria:**
- [ ] **Active Cases Section:**
  - List of active timelines
  - Case name and reference
  - Last update date
  - Update count
  - "View" button
- [ ] **Archived Cases Section:**
  - Clearly separated from active
  - Different visual styling (muted)
  - Still accessible for viewing
- [ ] **Individual Timeline View:**
  - Case name and reference
  - Status badge (active/archived)
  - All updates in chronological order
  - Each update shows:
    - Date and time
    - Update content
  - Read-only (no interactions)
- [ ] Back to cases list navigation
- [ ] Responsive layout

**Technical Notes:**
- Reuse components from Epic 4
- Read-only view only
- Proper date formatting per locale

---

### Story 7.4: My Profile View

**Description:** Display client's profile information (read-only).

**Acceptance Criteria:**
- [ ] **Individual Client Profile:**
  - Full name
  - National ID
  - Email address
  - Phone number
  - Preferred language
  - Account created date
- [ ] **Company Client Profile:**
  - Company name
  - Registration number
  - Contact person name
  - Contact person ID
  - Email address
  - Phone number
  - Preferred language
  - Account created date
- [ ] Account type indicator
- [ ] No edit capabilities
- [ ] Message: "Contact admin to update your information"
- [ ] Logout button

**Technical Notes:**
- Display based on user_type
- Mask sensitive data if needed (e.g., partial ID)

---

### Story 7.5: New Booking Interface

**Description:** Interface for clients to submit new consultation booking requests.

**Acceptance Criteria:**
- [ ] Quick access from dashboard
- [ ] Calendar view showing available dates
- [ ] Available time slots for selected date
- [ ] **Booking Form:**
  - Selected date/time (display)
  - Problem summary (required, textarea)
  - Submit button
- [ ] **Validation:**
  - Enforce 1 booking per day limit
  - Show warning if already booked that day
  - Prevent booking on unavailable slots
- [ ] Confirmation before submission
- [ ] Success message with "Pending Review" status
- [ ] Redirect to consultations list

**Technical Notes:**
- Reuse availability calendar from Epic 3
- Client-side validation + server-side enforcement
- Check existing bookings for same day

---

### Story 7.6: Booking Limit Indicator

**Description:** Visual indicator of client's booking status and limits.

**Acceptance Criteria:**
- [ ] Show on dashboard and booking page
- [ ] Display current booking status:
  - "You can book a consultation today"
  - "You already have a booking for today"
  - "You have a pending request for [date]"
- [ ] Calendar shows booked days as unavailable
- [ ] Clear messaging about 1-per-day limit
- [ ] Bilingual messages

**Technical Notes:**
- Query consultations for user
- Consider future bookings in calculation

---

## Dependencies

| Epic | Dependency |
|------|------------|
| Epic 1 | Authentication, base UI |
| Epic 2 | User accounts (client data) |
| Epic 3 | Consultation data, booking interface |
| Epic 4 | Timeline data |

## Risks & Mitigations

| Risk | Impact | Mitigation |
|------|--------|------------|
| Confusion over read-only restrictions | Medium | Clear messaging, contact admin prompts |
| Mobile usability issues | Medium | Thorough mobile testing |
| Booking limit bypass attempts | Low | Server-side validation always |

## Definition of Done

- [ ] All stories completed with acceptance criteria met
- [ ] Dashboard displays accurate data
- [ ] Consultations list works correctly
- [ ] Timelines display read-only
- [ ] Profile shows correct information
- [ ] Booking limit enforced
- [ ] Calendar files downloadable
- [ ] Mobile responsive verified
- [ ] Bilingual support verified
- [ ] Code formatted with Pint
