jankyValidation [#3]: La Strozus Finanziamenti

Un esempio concreto...La STROZUS Finanziamenti
Siete degli sviluppatori di applicazioni, e state lavorando per il portale di back end della nota società Strozus.
La Strozus è una importante società di strozz..ehm di finanziamento il cui motto è:
"...con Strozus otterrai senza problemi il tuo finanziamento!
Nessuna garanzia, nessuna busta paga...ci basta sapere come ti chiami...e dove vanno a scuola i tuoi figli!
E se ti dimentichi di pagare una rata...Sandrone (energumeno di 200kg) viene direttamente a casa tua a ricordartelo di persona!"
(Per informazioni sulla Strozus, chiedere a quelli di Mai dire Gol, o a Paola Cortellesi...nessun riferimento a fatti e persone è casuale...)

Ecco il l vostro modello di dati:

Ed ecco le operazioni che un operatore Strozus può effettuare sulla pratica di finanziamento con le relative regole di validazione:
1. Inizializzazione (inserisce la pratica nel db)
  • Codice deve matchare con uno specifico pattern
  • Cliente non nullo
  • Operatore non nullo

2. Approvazione (la pratica viene finanziata)
  • Stesse di Inizializzazione
  • L'operatore che gestisce la pratica deve avere almeno 15 pratiche concluse positivamente OPPURE deve avere 10 anni di lavoro in Strozus
  • Indice Sicurezza del Cliente maggiore di 8

3. Approvazione Con Riserva (la pratica viene finanziata ma con riserva, è necessaria una visita di Sandrone...come avvertimento!)
  • stesse di Inizializzazione
  • Importo della Richiesta > 80000 oppure IndiceSicurezzaCliente compreso tra 6 e 8

Ecco qui tutta la solution basata su un 3tier e il codice della Janky.Validation
La definizione dei vari ValidationContext è effettuata nel BusinessLayer (in modo da poter essere riutilizzati in vari layer di presentazione):

 

Inserisco qui per riferimento qualche frammento di codice come riferimento, ma rimando per una visione più dettagliata direttamente al progetto. Spero di aver scritto in modo auto-parlante.

public class SavingValidation : ValidationContext
{
    protected Finanziamento finanziamento;

    public SavingValidation(Finanziamento finanziamento)
    { 
       this.finanziamento = finanziamento; 
    } 
    public override void Initialize()
    { 
       this.Rules.Add(new MatchRegexRule("Codice errato, deve essere almeno di 5 cifre", this.finanziamento.Codice, "\\d{5}"));
       this.Rules.Add(new IsNotNullRule("Manca il cliente", this.finanziamento.Cliente)); 
       this.Rules.Add(new IsNotNullRule("Manca l'operatore", this.finanziamento.Operatore)); 
       this.Rules.Add(new ValueComparisonRule("Troppi soldi!", this.finanziamento.ImportoRichiesto, 100000, ComparisonType.LesserOrEqual));
    }
}


e prossimamente si potrebbe scendere nel dettaglio di alcune chicche, come la cortocircuitazione delle regole o l'uso del context nel presentation.

Print | posted on lunedì 27 marzo 2006 11.18

Comments on this post

# re: jankyValidation [#3]: La Strozus Finanziamenti

Requesting Gravatar...
Grande janky ... più o meno come la souzione che adotto io... siamo in due e non ci siamo nemmeno parlati. Quando accadono queste cose significa che la cosa ha decisamente senso! :-D
Left by M.rkino on mar 27, 2006 2.02

# re: jankyValidation [#3]: La Strozus Finanziamenti

Requesting Gravatar...
la citazione era doverosa e poi ti ho messo vicino a Fowler così non ti sentivi solo...:-)

grazie a te del complimento...è davvero gradito!

Adesso chi ci crede più, che non ci siamo mai parlati su questo argomento? :-)
Left by Giancarlo Sudano on mar 27, 2006 2.11

# re: jankyValidation [#3]: La Strozus Finanziamenti

Requesting Gravatar...
Ecco, visto che io l'avevo visto in anticipo adesso aspetto qualche commento in più su shortcircuit e context validation.
Left by Tommaso Caldarola on mar 27, 2006 2.30

# re: jankyValidation [#3]: La Strozus Finanziamenti

Requesting Gravatar...
[Janky]: beh... la soluzione che sto adottando io nei miei nuovi progetti non è del tutto simile alla tua... quanto proposto da te è ben ingegnerizzato, la mia soluzione è decisamente più povera e semplice, quello che le accomuna è il concetto...
Left by M.rkino on mar 27, 2006 2.40

# non si finisce mai di imparare... e meno male!

Requesting Gravatar...
Left by papo we(b)log on mar 29, 2006 1.43

# non si finisce mai di imparare... e meno male!

Requesting Gravatar...
Left by papo we(b)log on mar 29, 2006 1.45

# re: jankyValidation [#3]: La Strozus Finanziamenti

Requesting Gravatar...
Grazie per avermi inviato la libreria, sto inziando a provarla.... mi piace un casino. Hai in mente di proseguire con i post su questo graditissimo argomento ?? Sto imparando molto da te, prima Nhibernate ed adesso questa libreria grazie mille
Left by Stefano Paparesta on apr 05, 2006 6.44
Comments have been closed on this topic.