diff --git a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm index 695177039..48c8c83ac 100644 --- a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm +++ b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm @@ -19,6 +19,7 @@ use base 'WebGUI::Asset::Wobject'; use Tie::IxHash; use WebGUI::HTMLForm; use JSON; +use Digest::MD5; use WebGUI::Workflow::Instance; use WebGUI::Cache; use WebGUI::International; @@ -3038,6 +3039,12 @@ sub www_editRegistrant { label=>$i18n->get('badge id'), value=>$badgeId ); + my $u; + my $username; + if ($data->{userId}) { + $u = WebGUI::User->new($self->session,$data->{userId}); + $username = $u->username; + } $f->user( name=>'userId', label=>$i18n->get('associated user'), @@ -3055,6 +3062,10 @@ function setUserNew() { userField.value="new"; userFieldDisplay.value="'.$i18n->get('create new user').'"; } +function resetToInitial() { + userField.value="'.$data->{userId}.'"; + userFieldDisplay.value="'.$username.'"; +} ' ); @@ -3109,30 +3120,88 @@ function setUserNew() { } #------------------------------------------------------------------- -sub www_editPrereqSetSave { +sub www_editRegistrantSave { my $self = shift; return $self->session->privilege->insufficient unless ($self->canAddEvents); my $error = ''; my $i18n = WebGUI::International->new($self->session,'Asset_EventManagementSystem'); - foreach ('name') { - if ($self->session->form->get($_) eq "" || - $self->session->form->get($_) eq $i18n->get('type name here')) { + foreach ('firstName','lastName') { + if ($self->session->form->get($_) eq "") { $error .= sprintf($i18n->get('null field error'),$_)."
"; } } - return $self->www_editPrereqSet(undef,$error) if $error; - my $psid = $self->session->form->process('psid'); - $psid = $self->setCollateral("EventManagementSystem_prerequisites", "prerequisiteId",{ - prerequisiteId=>$psid, - name => $self->session->form->process("name"), - operator => $self->session->form->process("operator",'radioList') - },0,0); - $self->session->db->write("delete from EventManagementSystem_prerequisiteEvents where prerequisiteId=?",[$psid]); - my @newRequiredEvents = $self->session->form->process('requiredEvents','checkList'); - foreach (@newRequiredEvents) { - $self->session->db->write("insert into EventManagementSystem_prerequisiteEvents values (?,?)",[$psid,$_]); + return $self->www_editRegistrant(undef,$error) if $error; + my $badgeId = $self->session->form->process('badgeId'); + my $userId = $self->session->form->get("userId", "user"); + my $firstName = $self->session->form->get("firstName", "text"); + my $lastName = $self->session->form->get("lastName", "text"); + my $address = $self->session->form->get("address", "text"); + my $city = $self->session->form->get("city", "text"); + my $state = $self->session->form->get("state", "text"); + my $zipCode = $self->session->form->get("zipCode", "text"); + my $country = $self->session->form->get("country", "selectBox"); + my $phoneNumber = $self->session->form->get("phone", "phone"); + my $email = $self->session->form->get("email", "email"); + $userId = '' if $userId eq '1'; + my $addingNew = ($userId eq 'new') ? 1 : 0; + my $details = { + badgeId => $badgeId, # if this is "new", setCollateral will return the new one. + firstName => $firstName, + lastName => $lastName, + 'address' => $address, + city => $city, + state => $state, + zipCode => $zipCode, + country => $country, + phone => $phoneNumber, + email => $email + }; + $details->{userId} = $userId; + $details->{createdByUserId} = $self->session->var->get('userId') if ($addingNew && $userId); + $badgeId = $self->setCollateral("EventManagementSystem_badges", "badgeId",$details,0,0); + if ($userId) { + my $u; + if ($addingNew) { + $u = WebGUI::User->new($self->session,'new'); + my $uid = lc($firstName).".".lc($lastName); + $uid =~ s/\s//g; # fix potential space problems in UID. + my ($uidIsTaken) = $self->session->db->quickArray("select count(userId) from users where username=".quote($uid)); + while($uidIsTaken) { + if($uid =~ /(.*)(\d+$)/){ + $uid = $1.($2+1); + } else { + $uid .= "1"; + } + ($uidIsTaken) = $self->session->db->quickArray("select count(userId) from users where username=".quote($uid)); + } + $u->username($uid); + $u->authMethod("WebGUI"); + my $auth = WebGUI::Auth::WebGUI->new($self->session,"WebGUI",$u->userId); + my $authprops = {}; + $authprops->{changePassword} = 1; + $authprops->{changeUsername} = 0; + my $len = $self->session->setting->get("webguiPasswordLength") || 6; + my $password = ""; + srand(); + for(my $i = 0; $i < $len; $i++) { + $password .= chr(ord('A') + randint(32)); + } + $authprops->{identifier} = Digest::MD5::md5_base64($password); + $auth->saveParams($u->userId,"WebGUI",$authprops); + } else { + $u = WebGUI::User->new($self->session,$userId); + } + $u->profileField('firstName',$firstName); + $u->profileField('lastName',$lastName); + $u->profileField('homeAddress',$address); + $u->profileField('homeCity',$city); + $u->profileField('homeState',$state); + $u->profileField('homeZip',$zipCode); + $u->profileField('homeCountry',$country); + $u->profileField('homePhone',$phoneNumber); + $u->profileField('email',$email); } - return $self->www_managePrereqSets(); + return $self->www_manageRegistrants(); }