From e0e9cac99d22de4a70de7224fe97c1de4cf466d3 Mon Sep 17 00:00:00 2001 From: Pasqualino Ferrentino Date: Tue, 21 Aug 2007 09:26:19 +0200 Subject: [PATCH] On the way to have the withdrawals online, seems fairly working --- .../breadcrumbs/Controller/.#CashAntNestEuro.pm | 1 + .../lib/breadcrumbs/Controller/CashAntNestEuro.pm | 42 ++++++++++++++++++++++ .../lib/breadcrumbs/Dialogs/SecretTokenDialog.pm | 6 ++-- .../breadcrumbs/lib/breadcrumbs/Model/BcdModel.pm | 7 ++++ .../breadcrumbs/Widgets/BlindedFullTokenWidget.pm | 6 ++-- .../lib/breadcrumbs/Widgets/FullTokenWidget.pm | 9 +++-- .../root/src/ant_nest_deposits_withdrawals.tt | 34 +++++++++++++++--- .../breadcrumbs/root/src/finished_withdrawal.tt | 6 ++++ web-site/breadcrumbs/root/src/withdrawal_secret.tt | 17 +++++++++ .../breadcrumbs/root/src/withdrawal_summary.tt | 25 +++++++++++++ 10 files changed, 141 insertions(+), 12 deletions(-) create mode 120000 web-site/breadcrumbs/lib/breadcrumbs/Controller/.#CashAntNestEuro.pm create mode 100644 web-site/breadcrumbs/root/src/finished_withdrawal.tt create mode 100644 web-site/breadcrumbs/root/src/withdrawal_secret.tt create mode 100644 web-site/breadcrumbs/root/src/withdrawal_summary.tt diff --git a/web-site/breadcrumbs/lib/breadcrumbs/Controller/.#CashAntNestEuro.pm b/web-site/breadcrumbs/lib/breadcrumbs/Controller/.#CashAntNestEuro.pm new file mode 120000 index 0000000..843bfd4 --- /dev/null +++ b/web-site/breadcrumbs/lib/breadcrumbs/Controller/.#CashAntNestEuro.pm @@ -0,0 +1 @@ +lino@alfa.bricioline.it.4173:1187672446 \ No newline at end of file diff --git a/web-site/breadcrumbs/lib/breadcrumbs/Controller/CashAntNestEuro.pm b/web-site/breadcrumbs/lib/breadcrumbs/Controller/CashAntNestEuro.pm index 3378d37..0943c96 100644 --- a/web-site/breadcrumbs/lib/breadcrumbs/Controller/CashAntNestEuro.pm +++ b/web-site/breadcrumbs/lib/breadcrumbs/Controller/CashAntNestEuro.pm @@ -99,6 +99,48 @@ sub treasurer_has_the_money_on_ok : Local { } +sub confirm_withdrawal : Local { + my ($self, $c) = @_; + + my $booking_token = $c->req->param("token"); + + my $res = $c->model('BcdModel')->get_withdrawal_details($c, $booking_token); + + if ($self->_is_valid_res($c, $res)){ + + + my $dlg = breadcrumbs::Dialogs::SecretTokenDialog->new($c, 1, $res->{booking_details}->{full_token}); + + my @step0 = (undef, "withdrawal_summary.tt", "treasurer_has_the_correct_full_token_on_ok"); + my @step1 = ($dlg, "withdrawal_secret.tt", "treasurer_has_secret_code_on_ok"); + my @step2 = (undef, "finished_withdrawal.tt"); + + my @steps = (\@step0, \@step1, \@step2); + + $self->_make_wizard($c, \@steps, '', "Ritiro dal conto."); + + #ok, I put the tokens in the flash + $c->stash->{booking_details} = $res->{booking_details}; + $c->session->{sack}->{booking_details} = $res->{booking_details}; + $c->session->{hold_the_sack} = 1; + + return 1; + + } else { + $c->flash->{status_msg} = "ho avuto un problema"; + $c->res->redirect($c->uri_for('')); + return 0; + } +} + +sub treasurer_has_the_correct_full_token_on_ok : Local { + return 1; +} + +sub treasurer_has_secret_code_on_ok : Local { + return 1; +} + sub confirm_deposit : Local { my ($self, $c) = @_; diff --git a/web-site/breadcrumbs/lib/breadcrumbs/Dialogs/SecretTokenDialog.pm b/web-site/breadcrumbs/lib/breadcrumbs/Dialogs/SecretTokenDialog.pm index 7143c20..a5b62aa 100644 --- a/web-site/breadcrumbs/lib/breadcrumbs/Dialogs/SecretTokenDialog.pm +++ b/web-site/breadcrumbs/lib/breadcrumbs/Dialogs/SecretTokenDialog.pm @@ -33,7 +33,7 @@ use base(qw/breadcrumbs::Dialogs::BcDialog/); use Bcd::Data::Token; sub new{ - my ($class, $c, $for_wizard_d) = @_; + my ($class, $c, $for_wizard_d, $blinded_token_d, $full_token_d) = @_; my $for_wizard = defined($for_wizard_d) ? $for_wizard_d : 0; @@ -60,10 +60,10 @@ sub new{ ->class('form-divider-small'); $w = breadcrumbs::Widgets::BlindedFullTokenWidget->make_simple_control - ($w, $fs); + ($w, $fs, $blinded_token_d); $w = breadcrumbs::Widgets::NormalFullTokenWidget->make_simple_control - ($w, $fs); + ($w, $fs, $full_token_d); if ( ! $for_wizard) { diff --git a/web-site/breadcrumbs/lib/breadcrumbs/Model/BcdModel.pm b/web-site/breadcrumbs/lib/breadcrumbs/Model/BcdModel.pm index 985842d..0af6589 100644 --- a/web-site/breadcrumbs/lib/breadcrumbs/Model/BcdModel.pm +++ b/web-site/breadcrumbs/lib/breadcrumbs/Model/BcdModel.pm @@ -438,6 +438,13 @@ sub get_deposit_details{ return $self->_issue_command_to_daemon("bk.lookup_deposit", $session, $booking_token); } +sub get_withdrawal_details{ + my ($self, $c, $booking_token) = @_; + + my $session = $c->user->{server_session}; + return $self->_issue_command_to_daemon("bk.lookup_withdrawal", $session, $booking_token); +} + sub lookup_my_booking{ my ($self, $c) = @_; diff --git a/web-site/breadcrumbs/lib/breadcrumbs/Widgets/BlindedFullTokenWidget.pm b/web-site/breadcrumbs/lib/breadcrumbs/Widgets/BlindedFullTokenWidget.pm index b729783..cfa0371 100644 --- a/web-site/breadcrumbs/lib/breadcrumbs/Widgets/BlindedFullTokenWidget.pm +++ b/web-site/breadcrumbs/lib/breadcrumbs/Widgets/BlindedFullTokenWidget.pm @@ -30,15 +30,15 @@ use Data::Dumper; use breadcrumbs::Widgets::FullTokenWidget; sub make_simple_control{ - my ($class, $w, $container, $caption, $field_name) = @_; + my ($class, $w, $container, $value, $caption, $field_name) = @_; + my $cap = defined($caption) ? $caption : "Gettone mascherato:"; my $fname = defined($field_name) ? $field_name : "blinded_token"; breadcrumbs::Widgets::FullTokenWidget->_make_simple_control - ($w, $container, $cap, $fname, '^([A-Za-z0-9#]{3}[ ]){5}[A-Za-z0-9#]{3}$'); - + ($w, $container, $cap, $fname, '^([A-Za-z0-9#]{3}[ ]){5}[A-Za-z0-9#]{3}$', $value); return $w; } diff --git a/web-site/breadcrumbs/lib/breadcrumbs/Widgets/FullTokenWidget.pm b/web-site/breadcrumbs/lib/breadcrumbs/Widgets/FullTokenWidget.pm index 8be4eb7..41f9c55 100644 --- a/web-site/breadcrumbs/lib/breadcrumbs/Widgets/FullTokenWidget.pm +++ b/web-site/breadcrumbs/lib/breadcrumbs/Widgets/FullTokenWidget.pm @@ -29,9 +29,14 @@ use Data::Dumper; sub _make_simple_control{ - my ($class, $w, $container, $cap, $fname, $regex) = @_; + my ($class, $w, $container, $cap, $fname, $regex, $value) = @_; - $container->element('Textfield', $fname)->label($cap); + my $e = $container->element('Textfield', $fname)->label($cap); + + if (defined($value)){ + $e->value($value); + $e->attrs->{readonly} = "readonly"; + } my $c =$w->constraint('Regex', "$fname" ); diff --git a/web-site/breadcrumbs/root/src/ant_nest_deposits_withdrawals.tt b/web-site/breadcrumbs/root/src/ant_nest_deposits_withdrawals.tt index 78ae7c6..6ce6c93 100644 --- a/web-site/breadcrumbs/root/src/ant_nest_deposits_withdrawals.tt +++ b/web-site/breadcrumbs/root/src/ant_nest_deposits_withdrawals.tt @@ -44,6 +44,7 @@ problemi. db_name => 'amount', out_name => 'Importo:', numeric_sort => '1', + post_cell => ' €', }, { @@ -70,21 +71,46 @@ problemi. [% IF withdrawals_summary.size != 0 %]

Sommario delle richieste di ritiro

+[% IF online == 1 %] + +

Siccome hai scelto la modalità online qui puoi direttamente +eseguire i ritiri per conto delle persone che hai di fronte, come uno +sportello bancario. Per ciascuna persona che vuole ritirare devi avere +due gettoni: uno con il quale scegli il ritiro fra questi elencati ed +è pubblico, l'altro è il gettone di verifica con il quale puoi essere +certo che la persona è veramente autorizzata al ritiro: esso deve +corrispondere ad una maschera che ti farò vedere dopo. Per sicurezza +non far vedere il monitor alla persona che vuole ritirare, +oppure fatti dare TUTTI E DUE i gettoni PRIMA di premere "conferma +ritiro". Naturalmente queste precauzioni sono inutili se +conosci la persona che vuole ritirare, ma ricorda che sei +tu responsabile della cassa del formicaio. Se dai i +soldi alla persona sbagliata ci devi poi rimettere di tasca tua...

+ +[% END %] + [% tb_name = "withdrawals_summary"; fields = [ { db_name => 'booking_token', out_name => 'Gettone:', - pre_cell => '', - post_cell=> '', }, { db_name => 'amount', out_name => 'Importo:', numeric_sort => '1', + post_cell => ' €', + }, + + { + db_name => 'custom_cell', + out_name => '', + sortable => '0', + custom_cell => 'esegui ritiro' + }, diff --git a/web-site/breadcrumbs/root/src/finished_withdrawal.tt b/web-site/breadcrumbs/root/src/finished_withdrawal.tt new file mode 100644 index 0000000..3c2057b --- /dev/null +++ b/web-site/breadcrumbs/root/src/finished_withdrawal.tt @@ -0,0 +1,6 @@ + +

Ok, il ritiro di [% booking_details.amount %] € è stato + concluso con successo.

+ +

Ti ho spedito una lettera con la ricevuta di questo ritiro ed il + nuovo saldo della cassa del formicaio.

\ No newline at end of file diff --git a/web-site/breadcrumbs/root/src/withdrawal_secret.tt b/web-site/breadcrumbs/root/src/withdrawal_secret.tt new file mode 100644 index 0000000..814a388 --- /dev/null +++ b/web-site/breadcrumbs/root/src/withdrawal_secret.tt @@ -0,0 +1,17 @@ + +

Ok, a questo punto io suppongo che tu hai dato alla persona [% + booking_details.amount %] € e che lei ti ha dato un gettone + "lungo" che corrispondeva alla maschera.

+ +

Se è così allora dovresti essere in grado, dalla maschera e dal + gettone lungo, di ricavare il codice segreto di questo + ritiro. Oppure puoi semplicemente scrivere nella dialogo qui sotto + il gettone lungo (quello mascherato è già scritto ed è fisso per + questo ritiro). Io calcolerò il segreto al posto tuo.

+ +

Senza questo gettone tu puoi anche aver dato i soldi alla persona + ma la cassa del formicaio è rimasta uguale!

+ +
+[% widget_result.as_xml | replace ("_ampersand_", '&')%] +
\ No newline at end of file diff --git a/web-site/breadcrumbs/root/src/withdrawal_summary.tt b/web-site/breadcrumbs/root/src/withdrawal_summary.tt new file mode 100644 index 0000000..58032e3 --- /dev/null +++ b/web-site/breadcrumbs/root/src/withdrawal_summary.tt @@ -0,0 +1,25 @@ + +

Questo gettone è un gettone di ritiro valido e +corrisponde ad un importo di

+ +

Euro: [% booking_details.amount %]

+ +

A questo gettone è associata la maschera:

+ + + [% booking_details.full_token %] + + +

Adesso dovresti dare alla persona che vuole ritirare e che ha + questo gettone di ritiro la somma di [% booking_details.amount %] + €, in cambio lei ti dovrebbe dare come ricevuta un gettone che + corrisponde alla maschera che ho scritto sopra.

+ +

Senza questo gettone di ricevuta, o se il + gettone che ti dà non corrisponde a questa maschera (magari l'ha + scritto su un foglio facendo uno sbaglio) non dare + i soldi! Altrimenti poi non puoi dimostrare che la cassa del + formicaio è scesa di [% booking_details.amount %] €.

+ +

In ogni caso nel passo successivo potrai verificare la + correttezza del gettone che ti ha dato questa persona.

-- 2.11.4.GIT