# Elenco ToDo

Di seguito l'elenco dei todo da completare

## Framework

Importante:
- [ ] Traduzione OVUNQUE x ogni termine/etichetta/button..

## Modello dati

Da sistemare

- [x] Eliminazione dell'oggetto DoorType (navigazione, tab db)
- [x] creare nuova migration + update DB x fix TypeDoor
- [x] Verificare che le porte duplicate (da template o da stesso ordine) riportino in TypeId il cod porta originale e che le altre abbiano 1
- [x] verificare eventualmente cambio nome campo TypeId --> DoorIdParent

## Pagine

### UIX generale

Verifiche generali

- [ ] pulsanti update(save)/cancel
  - [ ] omogenei (colore, icona, x forma cerchio/quadrato vediamo...)
  - [ ] valutazione omogeneità forma (cerchio/quadrato... normalizzare? al contrario differenziare?)
- [ ] icone di update che siano omogenee
- [ ] pulsanti operativi siano omogenei
- [ ] selettori a tendina da omogeneizzare

### HOME page

... non saprei, forse link a
- help
- sito web generale DCA
- sito egalware
- statistiche...

### Orders Home page

Per completare
- [x] aggiunta paginatore
- [x] aggiunta stato ordine
- [x] aggiunta filtri ricerca
  - periodo da-a
  - search generico
  - stato ordine
- [x] ordinamento
- [ ] aggiungere data promessa consegna: dato sul db, valore default (+30gg?), gestione filtro...
- [x] aggiungere calcolo (FAKE) dei prezzi
- [x] aggiungere company x ordini (x viste DCA almeno)
- [x] gestione modifica descrizione/codice ordini (da p\rte del cliente finale)
- [x] aggiunta gestione DCA x conferma prezzi e tempistiche
- [x] aggiunta gestione DCA x approvazione ordini
- [ ] verifica HW con Filippo/Emmanuele da info ABH/Kit
- [ ] verificare significato della dicitura "Model Number": cosa indica esattamente? è corretta sul db? è calcolata correttamente da interfaccia?

### DCA Order Mans

FORSE la Orders home Page NON VA bene x gli utenti backoffice, oppure va estesa, perché x confermare quotazione, indicare avanzamento ordini gli operatori ABH/DCA devono avere una pagina operativa...

### OrderDetails

Per completare:

- [x] aggiunta button x il cambio stato da end-user
- [x] sistemare con paginatore max 3 righe x 4 porte
- [x] fix button verde add-new
- [x] ombreggiatura blocco
- [x] gestione calcolo prezzi (fake, random)

### DoorDefinition BaseParams
- [x] conteggio num modifiche da salvare
- [x] armonizzare il cancel/save nella pagina
- [x] revisione testata fino al btn del salva generale
- [x] sostituire il salva generale con 2 buttons:
  - salva, o meglio RECALC PNG = update PNG, potrebbe andare in automatico DOPO i vari SALVA nella pagina (opzione x auto-recalc?!?)
  - get 3D obj (in new window/tab)

- [x] delete singola porta da ordine
- [x] navigazione in ritorno come da FIGMA in HwNewInst
- [x] refresh conteggi su approvazione
- [x] conteggio istanze in aggiunta HW

### DoorDefinition Hardware

Sistemare:
- [x] da implementare davvero lettura pdf (da cartella pdf di esempi)
- [x] fix cancel/save: globale x Hardware oppure x ognuno con icona?
- [x] verificare perché NON si aggiorna al salvataggio pagina dei 18 hw
- [x] mancano il totale componenti x ogni hw attivato
- [x] aggiungere icone/immagini x gli HW da inserire nelle porte


### Import componenti DOOR

Procedura per import componenti, sempre GLOBALE (= TUTTI)

- [x] definizione cartelle di base:
  - [x] (A) R:\WebDoor\CurComp x componenti ATTUALI/cottenti/approvati
  - [x] (B) R:\WebDoor\NewComp x componenti DA valutare x import
- [x] scansione della cartella (B)
- [x] ciclo x ogni file della cartella B
  - [x] rilevo path (assoluto e relativo = togliendo parte (B))
  - [x] calcolo MD5
  - [x] rilevo lenght
  - [x] rilevo last mod
  - [ ] cerco sul DB record x il PATH (RELATIVO) in oggetto (opzionalmente unique sul db)
- [ ] salvo datetime = adesso
- [ ] in base alla verifica precedente mi tengo set in memoria dalla lista del DB con
  - [ ] NON trovo record --> registro nuovo record, con stato = new (=1)
  - [ ] trovo record
    - [ ] SE cambia MD5/lenght/(last mod?) --> registro stato MOD (=2) + lastCheck = adesso
    - [ ] se NON cambia --> registro lastCheck = adesso + stato CONFIRM ( =0)
- [ ] verifico TUTTI i record del DB, e quelli con lastCheck < adesso --> segno come ELIMINATI (=3)
- [ ] step di check puntuale: TUTTI quelli con stato > 0 sono mostrati x azione (1 check x ogni riga, con seleziona tutti/nessuno)
- [ ] l'utente deve poter VEDERE la differenza tra i file (modificati) di (A) e (B) (con diff tramite modale, ...)
- [ ] l'utente checca 0/+ righe e clicca su CONFERMA: si cicla x TUTTE le righe checked x aggiornarle sul DB
  - [ ] le righe NUOVE confermate --> sono registrate (con valid from...), stato CONFIRM ( =0), viene copiato file/cartelle da (B) ad (A)
  - [ ] le righe modificate --> si registra modifica, stato CONFIRM ( =0), viene sovrascritto/sostituito file/cartelle da (B) ad (A)
  - [ ] le righe eliminate --> si imposta cancellazione logica (validUntil), stato DELETED ( =-1), viene sovrascritto/sostituito file/cartelle da (B) ad (A)
- [ ] le righe NON checked, ma NON aggiorno sul DB:
  - [ ] se erano nuove (=1) --> elimino dal DB (e NON copio folder)
  - [ ] se erano modificate (=2) --> riporto a stato precedente (0/-1) (e NON copio)
  - [ ] se erano eliminate (=3) --> riporto a 0 (e NON faccio nulla)


#### Report 

- [x] Va inserita una lista dei componenti + elenco quote.
- [x] Esportabile in pdf, comprensivo di "check pdf fatto da tizio alle ..."

## Componenti
- [x] costruire libreria componenti (ad esempio waiter/loader) da siti di esempio componenti in EgwCoreLib.Razor --> ProgressBar e nuovi Loader


### Top

Da sistemare

- [x] btn effettivi
- [x] dinamico da user-role?
- [x] fix responsive