Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
2.6 kB
2
Indexable
Never
function get_commission($rule_applied_id, $agent_id = 'all', $time_period = 'all') {
    $args = array(
        'post_type' => 'salesking_earning',
        'posts_per_page' => -1,
        'meta_query' => array(),
    );

    // Add agent_id to meta query if specified
    if ($agent_id !== 'all') {
        $args['meta_query'][] = array(
            'key' => 'agent_id',
            'value' => $agent_id,
            'compare' => '='
        );
    }

    // Add date range to query based on time_period
    $date_query = array();
    switch ($time_period) {
        case 'current_month':
            $date_query = array(
                'year' => date('Y'),
                'month' => date('m'),
            );
            break;
        case 'last_month':
            $date_query = array(
                'year' => date('Y', strtotime('-1 month')),
                'month' => date('m', strtotime('-1 month')),
            );
            break;
        // Add more cases for different time periods as needed
    }
    
    if (!empty($date_query)) {
        $args['date_query'] = array($date_query);
    }

    $query = new WP_Query($args);
    $total_commission = 0;

    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            $post_id = get_the_ID();
            
            // Get and unserialize the rules_apply_log
            $rules_apply_log = maybe_unserialize(get_post_meta($post_id, 'rules_apply_log', true));
            
            // Check if the specified rule is applied
            $rule_applied = false;
            if (is_array($rules_apply_log) && !empty($rules_apply_log)) {
                foreach ($rules_apply_log as $log_entry) {
                    if (isset($log_entry[2]) && strpos($log_entry[2], 'Rules that apply:') !== false) {
                        $applied_rules = maybe_unserialize(substr($log_entry[2], strpos($log_entry[2], 'a:')));
                        if (is_array($applied_rules) && in_array($rule_applied_id, $applied_rules)) {
                            $rule_applied = true;
                            break;
                        }
                    }
                }
            }
            
            // If the rule is applied, add the commission to the total
            if ($rule_applied) {
                $commission = get_post_meta($post_id, 'salesking_commission_total', true);
                $total_commission += floatval($commission);
            }
        }
    }
    
    wp_reset_postdata();
    return $total_commission;
}
Leave a Comment