addRequest: initial implementation

addRequest-specific unit tests now all pass:

ok 55 - addRequest: dies if supporterId not specified.
ok 56 - addRequest: dies if requestTypeId / requestType not specified.
ok 57 - addRequest: dies if supporterId invalid.
ok 58 - addRequest: dies if requestTypeId invalid.
ok 59 - addRequest: succeeds with a requestType but no configuration parameter.
ok 60 - addRequest: id returned on successful addRequest() is a number
ok 61 - addRequest: underlying call to addRequestType works properly, per getRequestType
ok 62 - addRequest: succeeds with a requestType and requestConfiguration and a note.
ok 63 - addRequest: succeeds with a requestTypeId and requestConfigurationId with no a note.
This commit is contained in:
Bradley M. Kuhn 2015-12-20 12:46:07 -08:00
parent d654622ebe
commit cb01c1a14c

View file

@ -504,9 +504,25 @@ sub addRequest($$) {
my $supporterId = $params->{supporterId}; my $supporterId = $params->{supporterId};
die "addRequest: supporterId, \"$supporterId\" not found in supporter database" die "addRequest: supporterId, \"$supporterId\" not found in supporter database"
unless $self->_verifyId($supporterId); unless $self->_verifyId($supporterId);
$self->_beginWork; $self->_beginWork;
$self->_getOrCreateRequestType($params); $self->_getOrCreateRequestType($params);
$self->_getOrCreateRequestConfiguration($params) if (defined $params->{requestConfiguration} or
defined $params->{requestConfigurationId});
# After those two calls above, I know I have requestTypeId and
# requestConfigurationId are accurate. Note that
# $params->{requestConfigurationId} can be undef, which is permitted in the
# database schema.
my $sth = $self->dbh->prepare("INSERT INTO request(supporter_id, request_type_id, request_configuration_id, notes, date_requested) " .
"VALUES(?, ?, ?, ?, date('now'))");
$sth->execute($supporterId, $params->{requestTypeId}, $params->{requestConfigurationId}, $params->{notes});
my $id = $self->dbh->last_insert_id("","","","");
$self->_commit; $self->_commit;
return $id;
} }
###################################################################### ######################################################################