Added prerequisite management to the editEvent method

This commit is contained in:
Roy Johnson 2006-01-29 07:14:30 +00:00
parent 9895160115
commit 496a324285

View file

@ -57,6 +57,60 @@ sub checkRequiredFields {
return \@errors;
}
#------------------------------------------------------------------
#
# Returns prerequisiteId of every prerequisite grouping assigned to eventId passed in.
#
sub getAssignedPrerequisites {
my $self = shift;
my $eventId = shift;
my $sql = "select prerequisiteId, operator from EventManagementSystem_prerequisites
where productId=".$self->session->db->quote($eventId);
return $self->session->db->buildHashRef($sql);
}
#------------------------------------------------------------------
#
# Returns names of every event assigned to the prerequisite grouping of the prerequisite group id passed in
#
sub getRequiredEventNames {
my $self = shift;
my $prerequisiteId = shift;
my $sql = "select title from products as p, EventManagementSystem_prerequisites as pr, EventManagementSystem_prerequisiteEvents as pe
where
pe.requiredProductId = p.productId
and pr.prerequisiteId = pe.prerequisiteId
and pr.prerequisiteId=".$self->session->db->quote($prerequisiteId);
return $self->session->db->buildArrayRef($sql);
}
#------------------------------------------------------------------
#
# This method returns all events except for
# a) the event matching the eventId parameter passed in AND
# b) any events currently assigned as a prerequisite to the eventId parameter passed in
# as a hash reference with the productId, and title
#
sub getPrerequisiteEventList {
my $self = shift;
my $eventId = shift;
my $sql = "select p.productId, p.title from products as p, EventManagementSystem_products as e
where p.productId = e.productId
and p.productId !=".$self->session->db->quote($eventId)."
and p.productId not in
(select requiredProductId from EventManagementSystem_prerequisites as p,
EventManagementSystem_prerequisiteEvents as pe
where p.prerequisiteId = pe.prerequisiteId
and p.productId=".$self->session->db->quote($eventId).")";
return $self->session->db->buildHashRef($sql);
}
#------------------------------------------------------------------
sub validateEditEventForm {
my $self = shift;
@ -155,7 +209,7 @@ sub www_editEvent {
where
p.productId = e.productId and p.productId=".$self->session->db->quote($pid)
);
my $f = WebGUI::HTMLForm->new($self->session,-action=>$self->getUrl);
# Errors
@ -228,10 +282,59 @@ sub www_editEvent {
-defaultValue => 100,
-hoverHelp => $i18n->get('add/edit event maximum attendees description'),
-label => "Maximum Attendees" #$i18n->get('add/edit event maximum attendees')
);
);
my $prerequisiteList = $self->getPrerequisiteEventList($pid);
if ( scalar(keys %{$prerequisiteList}) > 0) {
$f->checkList(
-name => "eventList",
-options => $prerequisiteList,
-vertical => 1,
-label => "Required Events",
-sortByValue => 1
);
$f->radioList(
-name => "requirement",
-options => { "and" => "And",
"or" => "Or",
},
-label => "Operator",
-defaultValue => "and"
);
$f->selectBox(
-name => "whatNext",
-label => "What Next",
-options => {
"addAnotherPrereq" => "Add Another Prerequisite",
"return" => "Return to Manage Events"
},
-defaultValue => "return"
);
}
$f->submit;
#Display Currently Assigned Prerequisites if any
$f->readOnly( -value => "<br>Assigned Prerequisites<br><br>" );
my $list = $self->getAssignedPrerequisites($pid);
foreach my $prerequisiteId (keys %{$list}) {
my $line = $self->session->icon->delete('func=deletePrerequisite;id='.$prerequisiteId,
$self->getUrl, "Are you sure you want to delete this prerequisite?")." ";
my $eventNames = $self->getRequiredEventNames($prerequisiteId);
my $events;
foreach my $event (@$eventNames) {
$events .= "$event ".$list->{$prerequisiteId}." ";
}
$f->readOnly( -value => $line.$events );
}
my $output = $f->print;
return $self->getAdminConsole->render($output, "Add/Edit Event");
}
@ -276,7 +379,32 @@ sub www_editEventSave {
else { # Updating the row
$self->session->db->setRow("products", "productId", $event);
}
# Save the prerequisites
my $prerequisiteList = $self->session->form->process("eventList", "checkList");
unless ($prerequisiteList eq "") {
my $prerequisiteId = $self->setCollateral("EventManagementSystem_prerequisites", "prerequisiteId",
{
prerequisiteId => "new",
productId => $pid,
operator => $self->session->form->get("requirement")
},0,0
);
my @list = split(/\n/, $prerequisiteList);
foreach my $requiredEvent (@list) {
$self->setCollateral("EventManagementSystem_prerequisiteEvents", "prerequisiteEventId",
{
prerequisiteEventId => "new",
prerequisiteId => $prerequisiteId,
requiredProductId => $requiredEvent
},0,0
);
}
}
return $self->www_editEvent if ($self->session->form->get("whatNext") eq "addAnotherPrereq");
return $self->www_view;
}