diff --git a/booking.variety_admin.inc b/booking.variety_admin.inc index b84d191..708af98 100644 --- a/booking.variety_admin.inc +++ b/booking.variety_admin.inc @@ -765,26 +765,67 @@ function booking_variety_regn_edit_form_submit($form, &$form_state) { array(':nid' => $values['nid']))->fetchObject(); $previous_variety_ids = drupal_json_decode($person->booking_variety_ids); + // iterate over the new list comparing to the old list foreach ($booking_variety_ids as $new_tid => $new_sid) { - //check if there was a previous session ID for this person in this timeslot if (! isset($previous_variety_ids[$new_tid])) { watchdog('booking_debug', 'Person @nid in timeslot @tid had no previous session id registered but is now @new.', array( - '@nid' => $values['nid'], '@tid' => $new_tid, '@new' => $new_sid)); + '@nid' => $values['nid'], '@tid' => $new_tid, '@new' => $new_sid)); + + // increase regn count for new session + db_update('booking_variety_sessions') + ->expression('booking_variety_regncount', 'booking_variety_regncount + :count', array(':count' => 1)) + ->condition('vid', $new_sid) + ->execute(); } else { + $previous_sid = $previous_variety_ids[$new_tid]; //compare session id in this timeslot to the previous value - if ($new_sid != $previous_variety_ids[$new_tid]) { + if ($new_sid != $previous_sid) { watchdog('booking_debug', 'Person @nid in timeslot @tid previously registered for session id @vid but new value is @new', array( - '@nid' => $values['nid'], '@tid' => $new_tid, '@vid' => $previous_variety_ids[$new_tid], '@new' => $new_sid)); + '@nid' => $values['nid'], '@tid' => $new_tid, '@vid' => $previous_sid, '@new' => $new_sid)); + + // if variety session has changed then update the counts for old and new + if ($new_sid != $previous_sid) { + // reduce regn count for old session + watchdog('booking_debug', 'Person @nid in timeslot @tid is no longer registered for variety session @vid so reducing count by 1', array( + '@nid' => $values['nid'], '@tid' => $new_tid, '@vid' => $previous_sid)); + db_update('booking_variety_sessions') + ->expression('booking_variety_regncount', 'booking_variety_regncount - :count', array(':count' => 1)) + ->condition('vid', $previous_sid) + ->execute(); + + // increase regn count for new session + watchdog('booking_debug', 'Person @nid in timeslot @tid is now registered for variety session @vid so increasing count by 1', array( + '@nid' => $values['nid'], '@tid' => $new_tid, '@vid' => $new_sid)); + db_update('booking_variety_sessions') + ->expression('booking_variety_regncount', 'booking_variety_regncount + :count', array(':count' => 1)) + ->condition('vid', $new_sid) + ->execute(); + } } else { watchdog('booking_debug', 'Person @nid in timeslot @tid has not changed variety session @vid', array( '@nid' => $values['nid'], '@tid' => $new_tid, '@vid' => $new_sid)); } } - } + + //iterate over the old list comparing to the new list in case there are regn counts we need to decrease + foreach ($previous_variety_ids as $previous_tid => $previous_sid) { + if (! isset($booking_variety_ids[$previous_tid])) { + watchdog('booking_debug', 'Person @nid in timeslot @tid is no longer registered for a variety session so reducing count for @vid by 1', array( + '@nid' => $values['nid'], '@tid' => $previous_tid, '@vid' => $previous_sid, + )); + // reduce regn count for old session + db_update('booking_variety_sessions') + ->expression('booking_variety_regncount', 'booking_variety_regncount - :count', array(':count' => 1)) + ->condition('vid', $previous_sid) + ->execute(); + } + } + + /* foreach ($previous_variety_ids as $previous_tid => $previous_sid) { if (! isset($booking_variety_ids[$previous_tid])) { @@ -828,7 +869,7 @@ function booking_variety_regn_edit_form_submit($form, &$form_state) { } } } //end iterate over previous variety session registrations - +*/ // update the session registration information for this person $result = db_update('booking_variety_regn') ->fields(array( @@ -837,7 +878,7 @@ function booking_variety_regn_edit_form_submit($form, &$form_state) { ->condition('booking_person_nid', $values['nid']) ->execute(); watchdog('booking', "Updated variety session registration for person ID !nid", array('!nid' => $values['nid'])); -*/ + $form_state['redirect'] = $redirect_path; } }