/**
  * Notify handler method
  *
  * @param 	object	$event
  * @access 	public
  * @return	boolean
  */
 function notify($event)
 {
     $pk = $event->get('session_id');
     // just in case events slip thorugh that have no session_id
     // look for the original session id param
     if (!$pk) {
         $pk = $event->get('original_session_id');
         if ($pk) {
             $event->set('session_id', $pk);
         }
     }
     if ($event->get('session_id')) {
         $s = owa_coreAPI::entityFactory('base.session');
         $s->getByPk('id', $pk);
         $id = $s->get('id');
         if ($id) {
             // summarze the transaction
             $summary = owa_coreAPI::summarize(array('entity' => 'base.commerce_transaction_fact', 'columns' => array('id' => 'count', 'total_revenue' => 'sum', 'tax_revenue' => 'sum', 'shipping_revenue' => 'sum'), 'constraints' => array('session_id' => $id)));
             $s->set('commerce_trans_count', $summary['id_count']);
             $s->set('commerce_trans_revenue', $summary['total_revenue_sum']);
             $s->set('commerce_tax_revenue', $summary['tax_revenue_sum']);
             $s->set('commerce_shipping_revenue', $summary['shipping_revenue_sum']);
             // check for items and summarize if needed.
             $items = $event->get('ct_line_items');
             if (!empty($items)) {
                 $summary = owa_coreAPI::summarize(array('entity' => 'base.commerce_line_item_fact', 'columns' => array('sku' => 'count_distinct', 'item_revenue' => 'sum', 'quantity' => 'sum'), 'constraints' => array('session_id' => $id)));
                 $s->set('commerce_items_count', $summary['sku_dcount']);
                 $s->set('commerce_items_revenue', $summary['item_revenue_sum']);
                 $s->set('commerce_items_quantity', $summary['quantity_sum']);
             }
             $ret = $s->update();
             if ($ret) {
                 return OWA_EHS_EVENT_HANDLED;
             } else {
                 return OWA_EHS_EVENT_FAILED;
             }
         } else {
             owa_coreAPI::debug('Not Updating session commerce transaction properties. Session does not exist yet.');
             return OWA_EHS_EVENT_FAILED;
         }
     } else {
         owa_coreAPI::debug('Not Updating session commerce transaction properties. Session_id not present.');
         return OWA_EHS_EVENT_HANDLED;
     }
 }
 function summarizePageviews($id)
 {
     $ret = owa_coreAPI::summarize(array('entity' => 'base.request', 'columns' => array('id' => 'count_distinct'), 'constraints' => array('session_id' => $id)));
     return $ret['id_dcount'];
 }
 function summarizePriorSessions($id)
 {
     $ret = owa_coreAPI::summarize(array('entity' => 'base.session', 'columns' => array('num_prior_sessions' => 'max'), 'constraints' => array('visitor_id' => $id)));
     return $ret['num_prior_sessions_max'];
 }