Better messaging and error handling in the Shop/Credit screen. Cannot give credit to Visitor.

This commit is contained in:
Colin Kuskie 2010-05-05 18:48:41 -07:00
parent f04cf29300
commit 17841c838f
2 changed files with 25 additions and 10 deletions

View file

@ -49,8 +49,11 @@ The reason for this adjustment.
sub adjust {
my ($self, $amount, $comment) = @_;
my $user = WebGUI::User->new($self->session, $self->userId);
return 0 if $user->isVisitor;
$self->session->db->write("insert into shopCredit (creditId, userId, amount, comment, dateOfAdjustment) values (?,?,?,?,now())",
[$self->session->id->generate, $self->userId, $amount, $comment]);
return $amount;
}
#-------------------------------------------------------------------
@ -179,11 +182,11 @@ sub www_adjust {
my ($class, $session) = @_;
my $admin = WebGUI::Shop::Admin->new($session);
return $session->privilege->insufficient() unless $admin->canManage;
my $form = $session->form;
my $credit = $class->new($session, $form->get('userId'));
$credit->adjust($form->get('amount'), $form->get('comment'));
my $i18n = WebGUI::International->new($session, "Shop");
my $message = sprintf $i18n->get('add credit message'), $form->get('amount'), WebGUI::User->new($session, $form->get('userId'))->username, $credit->getSum;
my $form = $session->form;
my $credit = $class->new($session, $form->get('userId'));
my $amount = $credit->adjust($form->get('amount'), $form->get('comment'));
my $i18n = WebGUI::International->new($session, "Shop");
my $message = sprintf $i18n->get('add credit message'), $amount, WebGUI::User->new($session, $form->get('userId'))->username, $credit->getSum;
return $class->www_manage($session, $message);
}
@ -199,14 +202,16 @@ sub www_manage {
my ($class, $session, $message) = @_;
my $admin = WebGUI::Shop::Admin->new($session);
return $session->privilege->insufficient() unless $admin->canManage;
my $i18n = WebGUI::International->new($session, "Shop");
my $f = WebGUI::HTMLForm->new($session);
$f->hidden(name=>'shop',value=>'credit');
$f->hidden(name=>'method',value=>'adjust');
my $i18n = WebGUI::International->new($session, "Shop");
my $f = WebGUI::HTMLForm->new($session);
my $userId = $session->form->process('userId') || $session->user->userId;
my $user = WebGUI::User->new($session, $userId);
$f->hidden(name => 'shop', value => 'credit');
$f->hidden(name => 'method', value => 'adjust');
$f->user(
name => 'userId',
label => $i18n->get('username'),
value => $session->user->userId,
value => $userId,
);
$f->float(
name => 'amount',
@ -217,6 +222,10 @@ sub www_manage {
label => $i18n->get('notes'),
);
$f->submit;
if (! $message) {
my $credit = $class->new($session, $userId);
$message ||= sprintf $i18n->get('current credit message'), $user->username, $credit->getSum;
}
return $admin->getAdminConsole->render($message.$f->print, $i18n->get('in shop credit'));
}