/**
  * Build all the reports data
  *
  * @access	public
  * @since	1.4
  * @return	arr		$reports_data	All the data for customer reports
  */
 public function reports_data()
 {
     $stats = new MDJM_Stats();
     $dates = mdjm_get_report_dates();
     $stats->setup_dates($dates['range']);
     $cached_reports = false;
     if (false !== $cached_reports) {
         $reports_data = $cached_reports;
     } else {
         $reports_data = array();
         $term_args = array('parent' => 0, 'hierarchical' => 0);
         $packages = mdjm_get_packages();
         if ($packages) {
             foreach ($packages as $package) {
                 $event_count = 0;
                 $total_value = 0;
                 $event_args = array('fields' => 'ids', 'meta_query' => array('relation' => 'AND', array('key' => '_mdjm_event_package', 'value' => $package->ID, 'type' => 'NUMERIC'), array('key' => '_mdjm_event_date', 'value' => array(date('Y-m-d', $stats->start_date), date('Y-m-d', $stats->end_date)), 'type' => 'date', 'compare' => 'BETWEEN')));
                 $events = mdjm_get_events($event_args);
                 if ($events) {
                     foreach ($events as $event) {
                         $event_count++;
                         $event_date = get_post_meta($event, '_mdjm_event_date', true);
                         $total_value += mdjm_get_package_price($package->ID, $event_date);
                     }
                 } else {
                     continue;
                 }
                 $reports_data[] = array('ID' => $package->ID, 'package' => mdjm_get_package_name($package->ID), 'events' => $event_count, 'value' => mdjm_currency_filter(mdjm_format_amount($total_value)), 'value_raw' => $total_value);
             }
         }
     }
     return $reports_data;
 }
 /**
  * Renders a dropdown list of packages.
  *
  * @since	1.3.7
  * @param	arr		$args	@see $default
  * @return	str
  */
 public function packages_dropdown($args = array())
 {
     $defaults = array('name' => '_mdjm_event_package', 'id' => '', 'class' => '', 'selected' => '', 'show_option_none' => __('No Package', 'mobile-dj-manager'), 'show_option_all' => false, 'chosen' => false, 'employee' => false, 'event_type' => false, 'event_date' => false, 'placeholder' => __('Select a Package', 'mobile-dj-manager'), 'multiple' => false, 'cost' => true, 'titles' => false, 'options_only' => false, 'blank_first' => true, 'data' => array());
     $args = wp_parse_args($args, $defaults);
     $options = array();
     $args['id'] = !empty($args['id']) ? $args['id'] : $args['name'];
     $packages = mdjm_get_packages();
     if ($packages) {
         foreach ($packages as $package) {
             if ($args['employee']) {
                 if (!mdjm_employee_has_package($package->ID, $args['employee'])) {
                     continue;
                 }
             }
             if ($args['event_type']) {
                 if (!mdjm_package_is_available_for_event_type($package->ID, $args['event_type'])) {
                     continue;
                 }
             }
             if ($args['event_date']) {
                 if (!mdjm_package_is_available_for_event_date($package->ID, $args['event_date'])) {
                     continue;
                 }
             } else {
                 $args['event_date'] = NULL;
             }
             $price = '';
             if ($args['cost'] == true) {
                 $price .= ' - ' . mdjm_currency_filter(mdjm_format_amount(mdjm_get_package_price($package->ID, $args['event_date'])));
             }
             $args['options'][$package->ID] = $package->post_title . '' . $price;
             if ($args['titles']) {
                 $titles[$package->ID] = mdjm_get_package_excerpt($package->ID);
             }
         }
     }
     if (empty($args['options'])) {
         $args['placeholder'] = __('No Packages Available', 'mobile-dj-manager');
     }
     if (!empty($titles)) {
         $args['titles'] = $titles;
     }
     $output = $this->select($args);
     return $output;
 }
/**
 * List all available packages. If an employee ID is provided, list what that 
 * employee can provide only.
 *
 * @since	1.3
 * @param	int		$employee_id	An employee user ID, otherwise query current user.
 * @param	bool	$price			True to display the formatted package price
 * @return	str		HTML formatted string listing package information
 */
function mdjm_list_available_packages($employee_id = 0, $price = false)
{
    if (!mdjm_packages_enabled()) {
        return __('No packages available', 'mobile-dj-manager');
    }
    if (!empty($employee_id)) {
        $packages = mdjm_get_packages_by_employee($employee_id, false);
    } else {
        $packages = mdjm_get_packages();
    }
    if (empty($packages)) {
        return __('No packages available', 'mobile-dj-manager');
    }
    $return = array();
    foreach ($packages as $package) {
        $package_price = '';
        if ($price) {
            $package_price = ' ' . mdjm_currency_filter(mdjm_format_amount(mdjm_get_package_price($package->ID)));
        }
        $return[] = get_the_title($package->ID) . '' . $package_price;
    }
    $return = apply_filters('mdjm_list_packages', $return, $price);
    return implode('<br />', $return);
}
 /**
  * Retrieve packages filtered by employee, event month, event type or category.
  *
  * @since	1.4
  * @return	void
  */
 public function list_packages()
 {
     $response = array();
     $packages = array();
     do_action('mdjm_before_api_list_packages', $this);
     $all_packages = mdjm_get_packages(array('suppress_filters' => false));
     if ($all_packages) {
         foreach ($all_packages as $package) {
             if (isset($this->request['employee_id']) && !mdjm_employee_has_package($package->ID, $this->request['employee_id'])) {
                 continue;
             }
             if (isset($this->request['event_month']) && !mdjm_package_is_available_for_event_date($package->ID, $this->request['event_month'])) {
                 continue;
             }
             if (isset($this->request['event_type']) && !mdjm_package_is_available_for_event_type($package->ID, $this->request['event_type'])) {
                 continue;
             }
             $packages[] = $package->ID;
         }
     }
     if (empty($packages)) {
         $error = array();
         $error['error'] = __('No packages found.', 'mobile-dj-manager');
         $this->data = $error;
         $this->output();
     }
     $response['packages'] = array();
     $i = 0;
     foreach ($packages as $package) {
         $response['packages'][$package] = mdjm_get_package_data($package);
         $i++;
     }
     $response['count'] = $i;
     $this->data = array_merge($this->data, $response);
     do_action('mdjm_after_api_list_packages', $this);
     $this->output();
 }
function get_package_details($slug)
{
    _deprecated_function(__FUNCTION__, '1.4');
    if (empty($slug)) {
        return false;
    }
    $packages = mdjm_get_packages();
    if (empty($packages[$slug])) {
        return false;
    }
    $package['slug'] = $slug;
    $package['name'] = stripslashes(esc_attr($packages[$slug]['name']));
    $package['desc'] = stripslashes(esc_textarea($packages[$slug]['desc']));
    $package['equipment'] = $packages[$slug]['equipment'];
    $package['cost'] = $packages[$slug]['cost'];
    return $package;
}