$Data::Dumper::Indent = 0;
my $U = 'OpenILS::Application::AppUtils';
-# Check URL to see if this is a new registration or a renewal
-my $refpath = '';
-if ($ENV{'HTTP_REFERER'}) {
- $refpath = $ENV{'HTTP_REFERER'};
-};
-
my $update_type = 'register';
-my @api_fields;
-if ($refpath =~ m|opac/renew/submit|) {
- $update_type = 'renew';
-}
+my @api_fields_renew = (
+ {name => 'vendor_username', required => 1},
+ {name => 'vendor_password', required => 1},
+ {name => 'email', class => 'au'},
+ {name => 'day_phone', class => 'au', required => 1},
+ {name => 'home_ou', class => 'au'},
+ {name => 'pref_first_given_name', class => 'au'},
+ {name => 'pref_second_given_name', class => 'au'},
+ {name => 'pref_family_name', class => 'au'},
+ {name => 'physical_id', class => 'aua'},
+ {name => 'physical_street1', class => 'aua'},
+ {name => 'physical_street1_name'},
+ {name => 'physical_street2', class => 'aua'},
+ {name => 'physical_city', class => 'aua'},
+ {name => 'physical_post_code', class => 'aua'},
+ {name => 'physical_county', class => 'aua'},
+ {name => 'physical_state', class => 'aua'},
+ {name => 'physical_country', class => 'aua'},
+ {name => 'mailing_id', class => 'aua'},
+ {name => 'mailing_street1', class => 'aua'},
+ {name => 'mailing_street1_name'},
+ {name => 'mailing_street2', class => 'aua'},
+ {name => 'mailing_city', class => 'aua'},
+ {name => 'mailing_post_code', class => 'aua'},
+ {name => 'mailing_county', class => 'aua'},
+ {name => 'mailing_state', class => 'aua'},
+ {name => 'mailing_country', class => 'aua'},
+ {name => 'voter_registration', class => 'asvr'},
+);
+
+my @api_fields_register = (
+ {name => 'vendor_username', required => 1},
+ {name => 'vendor_password', required => 1},
+ {name => 'first_given_name', class => 'au', required => 1},
+ {name => 'second_given_name', class => 'au'},
+ {name => 'family_name', class => 'au', required => 1},
+ {name => 'suffix', class => 'au'},
+ {name => 'email', class => 'au', required => 1},
+ {name => 'passwd', class => 'au', required => 1},
+ {name => 'day_phone', class => 'au', required => 0},
+ {name => 'dob', class => 'au', required => 1},
+ {name => 'home_ou', class => 'au', required => 1},
+ {name => 'ident_type', class => 'au', required => 1},
+ {name => 'ident_value', class => 'au', required => 1},
+ {name => 'guardian',
+ class => 'au',
+ notes => "AKA parent/guardian",
+ required_if => 'Patron is less than 18 years old'
+ },
+ {name => 'pref_first_given_name', class => 'au'},
+ {name => 'pref_second_given_name', class => 'au'},
+ {name => 'pref_family_name', class => 'au'},
+ {name => 'pref_suffix', class => 'au'},
+ {name => 'physical_street1', class => 'aua', required => 1},
+ {name => 'physical_street1_name'},
+ {name => 'physical_street2', class => 'aua'},
+ {name => 'physical_city', class => 'aua', required => 1},
+ {name => 'physical_post_code', class => 'aua', required => 1},
+ {name => 'physical_county', class => 'aua', required => 1},
+ {name => 'physical_state', class => 'aua', required => 1},
+ {name => 'physical_country', class => 'aua', required => 1},
+ {name => 'mailing_street1', class => 'aua', required => 1},
+ {name => 'mailing_street1_name'},
+ {name => 'mailing_street2', class => 'aua'},
+ {name => 'mailing_city', class => 'aua', required => 1},
+ {name => 'mailing_post_code', class => 'aua', required => 1},
+ {name => 'mailing_county', class => 'aua', required => 1},
+ {name => 'mailing_state', class => 'aua', required => 1},
+ {name => 'mailing_country', class => 'aua', required => 1},
+ {name => 'voter_registration', class => 'asvr', required => 0},
+ {name => 'in_house_registration', required => 0},
+);
-# Create different api_fields array if registration or renewal
-if ($update_type eq 'renew') {
- @api_fields = (
- {name => 'vendor_username', required => 1},
- {name => 'vendor_password', required => 1},
- {name => 'patron_id', required => 1}, #needed for matching
- {name => 'email', class => 'au', required => 1},
- {name => 'day_phone', class => 'au', required => 1},
- {name => 'home_ou', class => 'au', required => 1},
- {name => 'pref_first_given_name', class => 'au'},
- {name => 'pref_second_given_name', class => 'au'},
- {name => 'pref_family_name', class => 'au'},
- {name => 'physical_street1', class => 'aua', required => 1},
- {name => 'physical_street1_name'},
- {name => 'physical_street2', class => 'aua'},
- {name => 'physical_city', class => 'aua', required => 1},
- {name => 'physical_post_code', class => 'aua', required => 1},
- {name => 'physical_county', class => 'aua', required => 1},
- {name => 'physical_state', class => 'aua', required => 1},
- {name => 'physical_country', class => 'aua', required => 1},
- {name => 'mailing_street1', class => 'aua', required => 1},
- {name => 'mailing_street1_name'},
- {name => 'mailing_street2', class => 'aua'},
- {name => 'mailing_city', class => 'aua', required => 1},
- {name => 'mailing_post_code', class => 'aua', required => 1},
- {name => 'mailing_county', class => 'aua', required => 1},
- {name => 'mailing_state', class => 'aua', required => 1},
- {name => 'mailing_country', class => 'aua', required => 1},
- {name => 'voter_registration', class => 'asvr', required => 1},
- {name => 'temp_renewal'} #new boolean value
- );
-} else {
- @api_fields = (
- {name => 'vendor_username', required => 1},
- {name => 'vendor_password', required => 1},
- {name => 'first_given_name', class => 'au', required => 1},
- {name => 'second_given_name', class => 'au'},
- {name => 'family_name', class => 'au', required => 1},
- {name => 'suffix', class => 'au'},
- {name => 'email', class => 'au', required => 1},
- {name => 'passwd', class => 'au', required => 1},
- {name => 'day_phone', class => 'au', required => 0},
- {name => 'dob', class => 'au', required => 1},
- {name => 'home_ou', class => 'au', required => 1},
- {name => 'ident_type', class => 'au', required => 1},
- {name => 'ident_value', class => 'au', required => 1},
- {name => 'guardian',
- class => 'au',
- notes => "AKA parent/guardian",
- required_if => 'Patron is less than 18 years old'
- },
- {name => 'pref_first_given_name', class => 'au'},
- {name => 'pref_second_given_name', class => 'au'},
- {name => 'pref_family_name', class => 'au'},
- {name => 'pref_suffix', class => 'au'},
- {name => 'physical_street1', class => 'aua', required => 1},
- {name => 'physical_street1_name'},
- {name => 'physical_street2', class => 'aua'},
- {name => 'physical_city', class => 'aua', required => 1},
- {name => 'physical_post_code', class => 'aua', required => 1},
- {name => 'physical_county', class => 'aua', required => 1},
- {name => 'physical_state', class => 'aua', required => 1},
- {name => 'physical_country', class => 'aua', required => 1},
- {name => 'mailing_street1', class => 'aua', required => 1},
- {name => 'mailing_street1_name'},
- {name => 'mailing_street2', class => 'aua'},
- {name => 'mailing_city', class => 'aua', required => 1},
- {name => 'mailing_post_code', class => 'aua', required => 1},
- {name => 'mailing_county', class => 'aua', required => 1},
- {name => 'mailing_state', class => 'aua', required => 1},
- {name => 'mailing_country', class => 'aua', required => 1},
- {name => 'voter_registration', class => 'asvr', required => 0},
- {name => 'in_house_registration', required => 0},
- );
-}
sub load_ecard_form {
my $self = shift;
my $ctx = $self->ctx;
#
# return;
#}
+=======
+
+my @api_fields_register = (
+ {name => 'vendor_username', required => 1},
+ {name => 'vendor_password', required => 1},
+ {name => 'first_given_name', class => 'au', required => 1},
+ {name => 'second_given_name', class => 'au'},
+ {name => 'family_name', class => 'au', required => 1},
+ {name => 'suffix', class => 'au'},
+ {name => 'email', class => 'au', required => 1},
+ {name => 'passwd', class => 'au', required => 1},
+ {name => 'day_phone', class => 'au', required => 1},
+ {name => 'dob', class => 'au', required => 1},
+ {name => 'home_ou', class => 'au', required => 1},
+ {name => 'ident_type', class => 'au', required => 1},
+ {name => 'ident_value', class => 'au', required => 1},
+ {name => 'ident_value2',
+ class => 'au',
+ notes => "AKA parent/guardian",
+ required_if => 'Patron is less than 18 years old'
+ },
+ {name => 'pref_first_given_name', class => 'au'},
+ {name => 'pref_second_given_name', class => 'au'},
+ {name => 'pref_family_name', class => 'au'},
+ {name => 'pref_suffix', class => 'au'},
+ {name => 'physical_street1', class => 'aua', required => 1},
+ {name => 'physical_street1_name'},
+ {name => 'physical_street2', class => 'aua'},
+ {name => 'physical_city', class => 'aua', required => 1},
+ {name => 'physical_post_code', class => 'aua', required => 1},
+ {name => 'physical_county', class => 'aua', required => 1},
+ {name => 'physical_state', class => 'aua', required => 1},
+ {name => 'physical_country', class => 'aua', required => 1},
+ {name => 'mailing_street1', class => 'aua', required => 1},
+ {name => 'mailing_street1_name'},
+ {name => 'mailing_street2', class => 'aua'},
+ {name => 'mailing_city', class => 'aua', required => 1},
+ {name => 'mailing_post_code', class => 'aua', required => 1},
+ {name => 'mailing_county', class => 'aua', required => 1},
+ {name => 'mailing_state', class => 'aua', required => 1},
+ {name => 'mailing_country', class => 'aua', required => 1},
+ {name => 'voter_registration', class => 'asvr', required => 1},
+ {name => 'in_house_registration', required => 1},
+);
+>>>>>>> feabaad6b0... Online Renewal - Progress on writing quipu into to db
sub log_params {
my $self = shift;
$msg .= "|" if $msg;
$msg .= "$p=".$cgi->param($p);
}
+ $logger->info("ECARD: Submit params: $msg");
- # use different log msg if reg or renew
- if ($update_type == 'register') {
- $logger->info("ECARD: Submit params: $msg");
- } else {
- $logger->info("E-RENEW: Submit params: $msg");
- }
}
sub handle_testmode_api {
# Strip data we don't want to publish.
my @doc_fields;
- for my $field_info (@api_fields) {
+ for my $field_info (@api_fields_register) {
my $doc_info = {};
for my $info_key (keys %$field_info) {
$doc_info->{$info_key} = $field_info->{$info_key}
$ctx->{response}->{messages} = [fields => \@doc_fields];
$ctx->{response}->{status} = 'API_OK';
+
return $self->compile_response;
}
}
$ctx->{response}->{status} = 'DATA_OK';
+
return $self->compile_response;
}
sub load_ecard_submit {
+
my $self = shift;
my $ctx = $self->ctx;
my $cgi = $self->cgi;
+ #determine whether this is a new registration or a renewal
+ my $refpath = $self->apache->path_info;
+ if ($refpath =~ m|opac/renew/submit|) {
+ $update_type = 'renew';
+ } else {
+ $update_type = 'register';
+ }
+
$self->log_params;
my $testmode = $cgi->param('testmode') || '';
return $self->handle_datamode_api($datamode) if $datamode;
# Accommodate reg vs renew
- if ($update_type == 'register') {
+ if ($update_type eq 'register') {
return $self->compile_response unless $self->make_user;
return $self->compile_response unless $self->add_addresses;
return $self->compile_response unless $self->check_dupes;
sub compile_response {
my $self = shift;
my $ctx = $self->ctx;
+
$self->apache->content_type("application/json; charset=utf-8");
$ctx->{response} = OpenSRF::Utils::JSON->perl2JSON($ctx->{response});
- # Different log message if renew
- if ($update_type == 'register') {
- $logger->info("ECARD responding with " . $ctx->{response});
- } else {
- $logger->info("E-RENEW responding with " . $ctx->{response});
- }
+ $logger->info("ECARD responding with " . $ctx->{response});
+
+#TERRAN TEST
+$logger->error("TERRAN response being sent to Quipu is: " . $ctx->{response});
+
return Apache2::Const::OK;
}
seconds => interval_to_seconds($grp->perm_interval))->iso8601()
);
- for my $field_info (@api_fields) {
+ for my $field_info (@api_fields_register) {
my $field = $field_info->{name};
next unless $field_info->{class} eq 'au';
{
flesh => 1,
flesh_fields => {
- au => ['billing_address', 'mailing_address', 'groups']
+ au => ['billing_address', 'mailing_address', 'groups', 'permissions', 'standing_penalties']
}
}
]);
+ #indicate that this is an update, not a new record
+ $au->isnew(0);
# Replace values in patron object with new data
# Need to append new keyword for use in reports later
- $au->name_keywords($au->name_keywords + ' quipu_renew');
+ my $orig_kw = $au->name_keywords;
+ if ($orig_kw ne '') {
+ $au->name_keywords("$orig_kw quipu_renew");
+ } else {
+ $au->name_keywords("quipu_renew");
+ }
# Temp renewal is only 30 days, otherwise use perm_interval
# If perm group is Homebound (53) or GLS (56), allow full renewal
my $temp_renewal = $cgi->param('temp_renewal');
my $perm_grp = $au->profile;
- if ($temp_renewal == '1' && $perm_grp != '53' && $perm_grp != '56') {
+ if ($temp_renewal eq '1' && $perm_grp ne '53' && $perm_grp ne '56') {
$au->expire_date(
DateTime->now(time_zone => 'local')->add(
seconds => interval_to_seconds('30 days'))->iso8601()
}
# loop through fields submitted by quipu
- for my $field_info (@api_fields) {
+ for my $field_info (@api_fields_renew) {
my $field = $field_info->{name};
next unless $field_info->{class} eq 'au';
}
$val = undef if $field eq 'day_phone' && $val eq '--';
+ $val = $au->home_ou if $field eq 'home_ou' && $val eq '';
+
$au->$field($val);
}
# Confirm we have values for all of the required fields.
# Apply values to our in-progress address object.
- for my $field_info (@api_fields) {
+ for my $field_info (@api_fields_register) {
my $field = $field_info->{name};
next unless $field =~ /physical|mailing/;
next if $field =~ /street1_/;
return 1;
}
-
-# New subroutine to update existing addresses
-# Need to figure out how to update the right ones
sub update_addresses {
my $self = shift;
my $cgi = $self->cgi;
my $ctx = $self->ctx;
my $e = $ctx->{editor};
- my $user = $ctx->{user}; # probably need to do something else here?
+ my $user = $ctx->{user};
- # Need to see how to pass the patron id properly here
- # Do we need to get the ID of the existing address?
- # Or will it match because of the address_type?
my $physical_addr = Fieldmapper::actor::user_address->new;
- $physical_addr->isnew(0); # is this right?
+ $physical_addr->id($user->billing_address->id);
$physical_addr->usr($user->id);
$physical_addr->address_type('PHYSICAL');
$physical_addr->within_city_limits('f');
+ $physical_addr->valid('t');
+ $physical_addr->pending('f');
my $mailing_addr = Fieldmapper::actor::user_address->new;
- $mailing_addr->isnew(0); # is this right?
+ $mailing_addr->id($user->mailing_address->id);
$mailing_addr->usr($user->id);
$mailing_addr->address_type('MAILING');
$mailing_addr->within_city_limits('f');
-
- # Use as both billing and mailing via virtual ID.
- $physical_addr->id(-1);
- $mailing_addr->id(-2);
- $user->billing_address(-1);
- $user->mailing_address(-2);
+ $mailing_addr->valid('t');
+ $mailing_addr->pending('f');
# Confirm we have values for all of the required fields.
# Apply values to our in-progress address object.
- for my $field_info (@api_fields) {
+ for my $field_info (@api_fields_renew) {
my $field = $field_info->{name};
next unless $field =~ /physical|mailing/;
next if $field =~ /street1_/;
my $val = $cgi->param($field);
+ # if the addr ids are the same, but the streets don't match, create second address
+ if ($physical_addr->id eq $mailing_addr->id && $physical_addr->street1 ne $mailing_addr->street1) {
+ $physical_addr->isnew(0);
+ $physical_addr->ischanged(1);
+ $mailing_addr->isnew(1);
+ $mailing_addr->ischanged(0);
+ } else {
+ $physical_addr->isnew(0);
+ $physical_addr->ischanged(1);
+ $mailing_addr->isnew(0);
+ $mailing_addr->ischanged(1);
+ }
+
if ($field_info->{required} && !$val) {
my $msg = "Value required for field: '$field'";
$ctx->{response}->{status} = 'INVALID_PARAMS';
my $ctx = $self->ctx;
my $cgi = $self->cgi;
my $user = $ctx->{user};
+ my $update_type = $user->isnew;
my $resp = $U->simplereq(
'open-ils.actor',
if ($U->is_event($resp)) {
my $msg = '';
- if ($update_type == 'register') {
- $msg = "Error creating user account: " . $resp->{textcode};
- $logger->error("ECARD: $msg");
- $ctx->{response}->{status} = 'CREATE_ERR';
- } else {
- $msg = "Error updating user account: " . $resp->{textcode};
- $logger->error("E-RENEW: $msg");
- $ctx->{response}->{status} = 'UPDATE_ERR'; # Does this work?
- }
+ if ($update_type eq '1') {
+ $msg = "Error creating user account: " . $resp->{textcode};
+ $logger->error("ECARD: $msg");
+ $ctx->{response}->{status} = 'CREATE_ERR';
+ } else {
+ $msg = "Error updating user account: " . $resp->{textcode};
+ $logger->error("E-RENEW: $msg");
+ $ctx->{response}->{status} = 'UPDATE_ERR'; # Does this work?
+ }
$ctx->{response}->{messages} = [{msg => $msg, pid => $$}];