309 lines
7.6 KiB
Markdown
309 lines
7.6 KiB
Markdown
# Territory Manager
|
|
|
|
Sistema di gestione territori per cartoline della città. Web application PHP semplice, moderna e facilmente manutenibile.
|
|
|
|
## Caratteristiche
|
|
|
|
- ✅ Gestione completa territori (CRUD)
|
|
- ✅ Sistema di assegnazioni con tracking
|
|
- ✅ Link temporanei per condivisione territori
|
|
- ✅ Dashboard con liste automatiche:
|
|
- Territori da assegnare
|
|
- Territori prioritari
|
|
- Territori da riconsegnare
|
|
- ✅ Statistiche in tempo reale
|
|
- ✅ Media percorrenza mensile e annuale
|
|
- ✅ Upload immagini piantine territori
|
|
- ✅ Export PDF delle liste
|
|
- ✅ Sistema di autenticazione
|
|
- ✅ Pannello amministrazione
|
|
- ✅ Design moderno e responsive
|
|
|
|
## Requisiti
|
|
|
|
- PHP 7.4 o superiore
|
|
- MySQL 5.7 o superiore
|
|
- Web Server (Apache/Nginx)
|
|
- Estensioni PHP:
|
|
- PDO
|
|
- pdo_mysql
|
|
- GD (per gestione immagini)
|
|
|
|
## Installazione
|
|
|
|
### 1. Copia i file
|
|
|
|
Copia tutti i file nella cartella del tuo web server (es. `htdocs`, `www`, `public_html`).
|
|
|
|
### 2. Crea il database
|
|
|
|
Accedi a phpMyAdmin o dalla riga di comando MySQL:
|
|
|
|
```sql
|
|
CREATE DATABASE territory_manager CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
```
|
|
|
|
Importa lo schema del database:
|
|
|
|
```bash
|
|
mysql -u root -p territory_manager < database.sql
|
|
```
|
|
|
|
Oppure copia il contenuto di `database.sql` ed eseguilo in phpMyAdmin.
|
|
|
|
### 3. Configura la connessione
|
|
|
|
Modifica il file `config.php` con i tuoi dati:
|
|
|
|
```php
|
|
define('DB_HOST', 'localhost');
|
|
define('DB_NAME', 'territory_manager');
|
|
define('DB_USER', 'tuo_utente');
|
|
define('DB_PASS', 'tua_password');
|
|
```
|
|
|
|
### 4. Crea la cartella uploads
|
|
|
|
Assicurati che la cartella `uploads` esista e abbia i permessi corretti:
|
|
|
|
```bash
|
|
mkdir uploads
|
|
chmod 755 uploads
|
|
```
|
|
|
|
### 5. Accedi al sistema
|
|
|
|
Apri il browser e vai all'URL della tua installazione:
|
|
|
|
```
|
|
http://tuosito.com/territory-manager/
|
|
```
|
|
|
|
**Credenziali di default:**
|
|
- Username: `admin`
|
|
- Password: `admin123`
|
|
|
|
⚠️ **IMPORTANTE**: Cambia immediatamente la password dopo il primo accesso!
|
|
|
|
## Struttura File
|
|
|
|
```
|
|
territory-manager/
|
|
├── config.php # Configurazione applicazione
|
|
├── db.php # Gestione database
|
|
├── functions.php # Funzioni helper
|
|
├── database.sql # Schema database
|
|
├── index.php # Dashboard principale
|
|
├── login.php # Pagina login
|
|
├── logout.php # Logout
|
|
├── header.php # Template header
|
|
├── footer.php # Template footer
|
|
├── territories.php # Gestione territori
|
|
├── assignments.php # Gestione assegnazioni
|
|
├── statistics.php # Statistiche
|
|
├── settings.php # Impostazioni (admin)
|
|
├── export_pdf.php # Export PDF
|
|
├── view_territory.php # Visualizzazione pubblica territorio
|
|
├── style.css # Stili CSS
|
|
├── script.js # JavaScript
|
|
├── uploads/ # Cartella immagini (da creare)
|
|
└── README.md # Questo file
|
|
```
|
|
|
|
## Utilizzo
|
|
|
|
### Dashboard
|
|
|
|
La dashboard mostra tre liste principali:
|
|
- **Territori da Assegnare**: Territori in reparto da più di X giorni
|
|
- **Territori Prioritari**: Territori in reparto da più di Y giorni
|
|
- **Territori da Riconsegnare**: Territori assegnati da più di Z giorni
|
|
|
|
I tempi sono configurabili nelle Impostazioni.
|
|
|
|
### Gestione Territori
|
|
|
|
1. Vai su "Territori" nel menu
|
|
2. Clicca "+ Nuovo Territorio"
|
|
3. Compila i campi:
|
|
- Numero territorio
|
|
- Zona
|
|
- Tipologia
|
|
- Carica piantina (opzionale)
|
|
- Note (opzionale)
|
|
|
|
### Assegnazione Territorio
|
|
|
|
1. Dalla dashboard, clicca "Assegna" su un territorio disponibile
|
|
2. Oppure vai su "Assegnazioni" → "+ Nuova Assegnazione"
|
|
3. Compila:
|
|
- Seleziona territorio
|
|
- Nome assegnatario
|
|
- Data assegnazione
|
|
- Priorità (opzionale)
|
|
4. Viene generato automaticamente un link temporaneo
|
|
|
|
### Link Temporanei
|
|
|
|
Quando assegni un territorio, viene creato un link unico che permette di visualizzare il territorio senza login.
|
|
|
|
Il link scade dopo X giorni (configurabile) e mostra:
|
|
- Dettagli territorio
|
|
- Piantina
|
|
- Informazioni assegnazione
|
|
|
|
### Riconsegna
|
|
|
|
1. Vai su "Assegnazioni"
|
|
2. Clicca "Riconsegna" sul territorio da restituire
|
|
3. Conferma la data di restituzione
|
|
|
|
### Statistiche
|
|
|
|
La pagina Statistiche mostra:
|
|
- Totale territori
|
|
- Territori assegnati/disponibili
|
|
- Attività ultimi 7 giorni
|
|
- Media percorrenza mensile
|
|
- Media percorrenza annuale
|
|
- Statistiche per zona
|
|
- Top 10 territori più assegnati
|
|
- Top 10 persone
|
|
- Territori mai assegnati
|
|
|
|
### Export PDF
|
|
|
|
Puoi esportare in PDF:
|
|
- Lista territori da assegnare
|
|
- Lista territori prioritari
|
|
- Lista territori da riconsegnare
|
|
|
|
Clicca sul pulsante "📄 Export PDF" nella dashboard.
|
|
|
|
### Impostazioni (Solo Admin)
|
|
|
|
Configura:
|
|
- **Giorni validità link**: Durata dei link temporanei
|
|
- **Giorni territori da assegnare**: Soglia per "da assegnare"
|
|
- **Giorni territori prioritari**: Soglia per "prioritari"
|
|
- **Giorni da riconsegnare**: Soglia per "da riconsegnare"
|
|
|
|
Gestisci anche:
|
|
- Cambio password
|
|
- Utenti del sistema
|
|
|
|
## Manutenzione
|
|
|
|
### Backup Database
|
|
|
|
Esegui regolarmente backup del database:
|
|
|
|
```bash
|
|
mysqldump -u root -p territory_manager > backup_$(date +%Y%m%d).sql
|
|
```
|
|
|
|
### Backup File
|
|
|
|
Copia periodicamente la cartella `uploads` con le immagini.
|
|
|
|
### Pulizia Link Scaduti
|
|
|
|
I link scaduti vengono controllati automaticamente. Non è necessaria pulizia manuale.
|
|
|
|
### Log Errori
|
|
|
|
Gli errori PHP vengono salvati nel log del server. In produzione, disattiva la visualizzazione errori in `config.php`:
|
|
|
|
```php
|
|
ini_set('display_errors', 0);
|
|
error_reporting(0);
|
|
```
|
|
|
|
## Personalizzazione
|
|
|
|
### Modificare i Colori
|
|
|
|
Modifica le variabili CSS in `style.css`:
|
|
|
|
```css
|
|
:root {
|
|
--primary: #3498db; /* Colore principale */
|
|
--success: #27ae60; /* Verde */
|
|
--danger: #e74c3c; /* Rosso */
|
|
--warning: #f39c12; /* Arancione */
|
|
}
|
|
```
|
|
|
|
### Aggiungere Campi ai Territori
|
|
|
|
1. Modifica la tabella `territories` in MySQL:
|
|
```sql
|
|
ALTER TABLE territories ADD COLUMN nuovo_campo VARCHAR(100);
|
|
```
|
|
|
|
2. Aggiungi il campo nei form in `territories.php`
|
|
|
|
3. Aggiorna le query di INSERT/UPDATE
|
|
|
|
### Modificare Template Email
|
|
|
|
Attualmente non ci sono notifiche email. Per aggiungerle:
|
|
|
|
1. Installa PHPMailer o usa `mail()`
|
|
2. Crea funzioni in `functions.php`
|
|
3. Chiama le funzioni dopo assegnazioni/riconsegne
|
|
|
|
## Risoluzione Problemi
|
|
|
|
### Errore connessione database
|
|
- Verifica credenziali in `config.php`
|
|
- Controlla che MySQL sia avviato
|
|
- Verifica che il database esista
|
|
|
|
### Upload immagini non funziona
|
|
- Controlla permessi cartella `uploads` (755)
|
|
- Verifica `upload_max_filesize` in `php.ini`
|
|
- Controlla `post_max_size` in `php.ini`
|
|
|
|
### Sessione scade troppo presto
|
|
- Modifica `SESSION_LIFETIME` in `config.php`
|
|
- Controlla `session.gc_maxlifetime` in `php.ini`
|
|
|
|
### Link temporanei non funzionano
|
|
- Verifica che `HTTP_HOST` sia configurato correttamente
|
|
- Controlla che `view_territory.php` sia accessibile
|
|
|
|
## Sicurezza
|
|
|
|
- ✅ Password criptate con bcrypt
|
|
- ✅ Protezione SQL injection (prepared statements)
|
|
- ✅ Sanitizzazione input
|
|
- ✅ Validazione file upload
|
|
- ✅ Controllo sessioni
|
|
- ✅ Token CSRF non implementato (da aggiungere se necessario)
|
|
|
|
**Raccomandazioni:**
|
|
1. Cambia password admin dopo installazione
|
|
2. Usa HTTPS in produzione
|
|
3. Limita accesso alla cartella uploads
|
|
4. Aggiorna PHP regolarmente
|
|
|
|
## Supporto e Contributi
|
|
|
|
Questo è un progetto semplice e facilmente estendibile. Puoi:
|
|
- Modificare il codice secondo le tue esigenze
|
|
- Aggiungere nuove funzionalità
|
|
- Migliorare la grafica
|
|
|
|
## Licenza
|
|
|
|
Questo progetto è fornito "così com'è" per uso personale e interno.
|
|
|
|
## Versione
|
|
|
|
**v1.0.0** - 6 dicembre 2025
|
|
|
|
---
|
|
|
|
**Buona gestione dei territori! 🗺️**
|