# 🏊 Pool Portal - Sitemap & Development Log

## 📋 Γενική Δομή Έργου

```
www/
├── admin/                          # Διαχειριστικό Panel
│   ├── dashboard.php              # Dashboard Διαχειριστή
│   ├── manage-customer-accounts.php
│   ├── manage-emergency-requests.php
│   ├── get-task-form.php
│   └── ... άλλα
│
├── portal/                         # 🌟 Portal Πελάτη (ΝΕΟ/ΒΕΛΤΙΩΜΕΝΟ)
│   ├── dashboard.php              # ✅ ΒΕΛΤΙΩΜΕΝΟ - Δύο τμήματα (Πρόσφατες/Προγραμματισμένες)
│   ├── billing.php                # ✅ ΑΝΑΝΕΩΜΈΝΟ - Accordion layout με scroll
│   ├── visit-list.php             # 🆕 ΝΕΟ - Ιστορικό Επισκέψεων ανά πισίνα
│   ├── task-details.php
│   ├── emergency.php
│   ├── request-visit.php
│   ├── change-password.php
│   ├── logout.php
│   └── includes/
│       └── config.php
│
└── includes/
    └── config.php                 # Κύρια σύνδεση βάσης δεδομένων
```

---

## 🎯 Αρχεία που Τροποποιήθηκαν

### 1. **portal/dashboard.php** ✅ ΑΝΑΝΕΩΜΈΝΟ
**Τοποθεσία:** `c:\laragon\www\portal\dashboard.php`

**Αλλαγές:**
- ✨ Διαχωρισμός εργασιών σε 2 τμήματα:
  - **Πρόσφατες Επισκέψεις** (Ολοκληρωμένες, τελευταίες 10)
  - **Προγραμματισμένες Επισκέψεις** (Εκκρεμείς, πρώτες 5)
- 🔧 Ξεχωριστές queries για κάθε κατηγορία
- 📅 Σωστή εμφάνιση ημερομηνιών:
  - DueDate για προγραμματισμένες
  - CompletedDate για ολοκληρωμένες
  - "Χωρίς ημερομηνία" αν δεν υπάρχει
- 📍 **Νέο κουμπί Menu**: "📋 Επισκέψεις" που οδηγεί στο visit-list.php

**Queries:**
- Completed tasks (LIMIT 10)
- Scheduled tasks (LIMIT 5)
- Completed emergencies (LIMIT 10)
- Scheduled emergencies (LIMIT 5)

---

### 2. **portal/billing.php** ✅ ΑΝΑΝΕΩΜΈΝΟ
**Τοποθεσία:** `c:\laragon\www\portal\billing.php`

**Αλλαγές:**
- 🎨 **Layout με Accordion**:
  - 🔧 Χρεώσεις Επισκέψεων (κανονικές εργασίες)
  - 🚨 Έκτακτα Αιτήματα (emergency requests)
  - ✅ Ιστορικό Πληρωμών (sidebar)

- 📊 **Στατιστικά Cards** (Top):
  - 💰 Σύνολο Χρέωσης
  - ✅ Ολοκληρωμένες (COUNT, όχι ποσό)
  - 💳 Πληρωμές
  - 🔴 Ανεξόφλητα

- 📈 **Οικονομική Επισκόπηση** (4 κάρτες):
  - Συνολικές Χρεώσεις (Επισκέψεων)
  - Συνολικές Χρεώσεις (Υλικών)
  - Συνολικές Πληρωμές
  - Υπόλοιπο Πληρωμής

- 🔒 **Max-height με Scroll**:
  - Accordion sections: 400px
  - Ιστορικό Πληρωμών: 300px
  - Κάθετη scroll bar με styling

- 💾 **Queries**:
  - Tasks με materials cost: `(m.TotalAmount + SUM(tblmaterial_usage.Cost))`
  - Emergency requests με materials: `(AdminCost + SUM(tblemergency_materials.Cost))`
  - Ξεχωριστή μέτρηση visit vs material charges

---

### 3. **admin/manage-customer-accounts.php** ✅ ΞΑΝΑΓΡΑΜΜΈΝΟ
**Τοποθεσία:** `c:\laragon\www\admin\manage-customer-accounts.php`

**Αλλαγές:**
- ✅ Πρόσθεση emergency requests στο σύνολο χρεώσης
- 🔗 Σωστό INNER JOIN με tblpools για CustomerID
- 💰 Περιλαμβάνονται όλα:
  - Tasks (base cost + materials)
  - Emergency requests (base cost + materials)
  - Payments

---

### 4. **admin/manage-emergency-requests.php** ✅ ΒΕΛΤΙΩΜΈΝΟ
**Τοποθεσία:** `c:\laragon\www\admin\manage-emergency-requests.php`

**Αλλαγές:**
- 📦 Materials cost added to total calculation
- 📊 Responsive DataTables
- 🎯 Icon-only buttons (χωρίς χρώμα)
- 💾 Εμφάνιση breakdown: "(Εργασία: X€ + Υλικά: Y€)"

---

### 5. **admin/get-task-form.php** ✅ ΞΑΝΑΓΡΑΜΜΈΝΟ
**Τοποθεσία:** `c:\laragon\www\admin\get-task-form.php`

**Αλλαγές:**
- 🚫 **Customer materials NOT charged**: Cost = 0
- ✅ **Company materials ARE charged**: Cost = actual price
- Line 213: `$finalCost = ($source == 'Company') ? $cost : 0;`
- 📦 Σωστή αποθήκευση: tblmaterial_usage.Cost

**Αποτέλεσμα:**
- Πελάτης βλέπει 0€ για τα δικά του υλικά
- Πελάτης βλέπει κανονική τιμή για υλικά της εταιρείας

---

## 🆕 Νέα Αρχεία

### **portal/visit-list.php** 🆕 ΝΕΟ ΑΡΧΕΙΟ
**Τοποθεσία:** `c:\laragon\www\portal\visit-list.php`

**Περιγραφή:**
- 📋 Ιστορικό ολοκληρωμένων επισκέψεων ανά πισίνα
- 🏊 Δυναμικός επιλογέας πισίνας (dropdown)
- 📊 Αναλυτική χρέωση ανά επίσκεψη

**Στήλες:**
| Ημερομηνία | Εργασία | Κόστος Επίσκεψης | Κόστος Υλικών | Σύνολο | Δράση |
|-----------|---------|-----------------|---------------|--------|--------|

**Χαρακτηριστικά:**
- 📄 Εκτύπωση ιστορικού
- 🔗 Link προς "Λεπτομέρειες" κάθε επίσκεψης
- 📱 Responsive design
- 📊 Σελιδοποίηση (10 items per page)
- 🎨 Beautiful styling με Bootstrap 5

**Queries:**
- Pool verification (ανήκει στον πελάτη)
- Completed tasks με materials cost
- Pagination

---

## 🔄 Χρηματοοικονομικοί Υπολογισμοί

### Τύπος Συνολικής Χρέωσης:

```
TOTAL_CHARGES = 
  SUM(tasks.TotalAmount) +
  SUM(materials.Cost WHERE source='Company') +
  SUM(emergency_requests.AdminCost) +
  SUM(emergency_materials.Cost)
```

### Τύπος Υπολοίπου:

```
BALANCE = TOTAL_CHARGES - TOTAL_PAYMENTS
```

### Κατηγοριοποίηση Χρεώσεων:

**visitCharges** = Base cost of visits (tasks + emergencies)
**materialCharges** = Cost of materials supplied by company

---

## 📱 Portal Navigation Menu

Όλα τα αρχεία portal έχουν το top menu με:

```
[📊 Dashboard] [📋 Επισκέψεις] [💰 Λογαριασμός] [📅 Αίτημα Επίσκεψης] [🔐 Κωδικός] [🚨 ΕΚΤΑΚΤΟ]
```

Νέο κουμπί: **📋 Επισκέψεις** → `portal/visit-list.php`

---

## 🎨 UI/UX Improvements

### Dashboard
- ✨ Gradient navbar (purple-blue)
- 🔄 Split view: Recent vs Scheduled
- 📊 Stats cards with icons
- 🎯 Limited display (10 recent, 5 scheduled)

### Billing
- 🎪 Accordion collapse/expand
- 📋 Organized by category
- 🔒 Auto-scroll (400px per section)
- 💎 Styled scrollbars
- 📦 Payment sidebar

### Visit List
- 📋 Clean table format
- 🏊 Pool selector dropdown
- 🎫 Cost breakdown per visit
- 🖨️ Print functionality
- 📱 Mobile responsive

---

## 🗂️ Database Tables Χρησιμοποιούμενες

| Table | Χρήση |
|-------|--------|
| `tblmaintenance_tasks` | Βασικές εργασίες |
| `tblmaterial_usage` | Υλικά χρησιμοποιημένα (Cost field) |
| `tblemergency_requests` | Έκτακτα αιτήματα |
| `tblemergency_materials` | Υλικά έκτακτων αιτημάτων |
| `tblcustomer_payments` | Πληρωμές πελατών |
| `tblcustomers` | Στοιχεία πελάτη |
| `tblpools` | Πισίνες πελάτη |

---

## ✅ Χαρακτηριστικά που Υλοποιήθηκαν

- ✅ Ακριβής χρηματοοικονομικός υπολογισμός
- ✅ Διαχωρισμός Company vs Customer materials
- ✅ Accordion layout με collapse/expand
- ✅ Responsive design (mobile-friendly)
- ✅ Σελιδοποίηση
- ✅ Εκτύπωση
- ✅ Auto-scroll με max-height
- ✅ Styled scrollbars
- ✅ Dynamic pool selector
- ✅ Πλήρης portal navigation

---

## 🚀 Τρέχουσα Κατάσταση

| Σελίδα | Κατάσταση | Περιγραφή |
|--------|-----------|-----------|
| portal/dashboard.php | ✅ Παραγωγή | Δύο τμήματα, σωστές ημερομηνίες |
| portal/billing.php | ✅ Παραγωγή | Accordion, scroll, πληρωμές |
| portal/visit-list.php | ✅ Παραγωγή | Ιστορικό επισκέψεων, εκτύπωση |
| admin/manage-customer-accounts.php | ✅ Παραγωγή | Όλες οι χρεώσεις ενσωματωμένες |
| admin/manage-emergency-requests.php | ✅ Παραγωγή | Materials cost, responsive |
| admin/get-task-form.php | ✅ Παραγωγή | Σωστή χρέωση υλικών |

---

## 📍 URLs Portal

```
http://localhost/portal/dashboard.php     - Main dashboard
http://localhost/portal/visit-list.php    - Visit history
http://localhost/portal/billing.php       - Billing & payments
http://localhost/portal/task-details.php  - Task details
http://localhost/portal/emergency.php     - Emergency requests
http://localhost/portal/request-visit.php - Request a visit
http://localhost/portal/change-password.php - Change password
```

---

## 🎯 Επόμενα Βήματα (Προαιρετικά)

- [ ] Προσθήκη φωτογραφιών στο visit-list.php
- [ ] Φίλτρο ημερομηνιών (date range filter)
- [ ] Export σε CSV/Excel
- [ ] SMS notifications
- [ ] Email reminders
- [ ] Mobile app
- [ ] Payment gateway integration

---

**Τελευταία Ενημέρωση:** 08/01/2026
**Σύστημα:** Pool Portal - Customer Dashboard
**Γλώσσα:** Greek (Ελληνικά)
**Framework:** Bootstrap 5 + Custom CSS + PHP + MySQLi
