class M_referral extends CI_Model {
public function get_leaderboard($minimum_verified_amount) {
$current_month_start = strtotime("first day of this month");
$current_month_end = strtotime("last day of this month");
$this->db->select("user_id, amount");
$this->db->from("autofaucet_history");
$this->db->where("claim_time >=", (int) $current_month_start);
$query1 = $this->db->get();
$autofaucet_data = $query1->result_array();
$this->db->select("user_id, amount");
$this->db->from("faucet_history");
$this->db->where("claim_time >=", (int) $current_month_start);
$query2 = $this->db->get();
$faucet_data = $query2->result_array();
$this->db->select("user_id, amount");
$this->db->from("link_history");
$this->db->where("claim_time >=", (int) $current_month_start);
$query3 = $this->db->get();
$link_data = $query3->result_array();
$this->db->select("user_id, amount");
$this->db->from("offerwall_history");
$this->db->where("claim_time >=", (int) $current_month_start);
$query4 = $this->db->get();
$offerwall_data = $query4->result_array();
$this->db->select("user_id, amount");
$this->db->from("ptc_history");
$this->db->where("claim_time >=", (int) $current_month_start);
$query5 = $this->db->get();
$ptc_data = $query5->result_array();
$this->db->select("user_id, amount");
$this->db->from("task_history");
$this->db->where("claim_time >=", (int) $current_month_start);
$query6 = $this->db->get();
$task_data = $query6->result_array();
$all_data = array_merge($autofaucet_data, $faucet_data, $link_data, $offerwall_data, $ptc_data, $task_data);
$user_totals = array();
foreach ($all_data as $row) {
$user_id = $row["user_id"];
$amount = $row["amount"];
if (!isset($user_totals[$user_id])) {
$user_totals[$user_id] = 0;
}
$user_totals[$user_id] += $amount;
}
$this->db->select("id, referred_by");
$this->db->from("users");
$this->db->where("registered_at >=", $current_month_start);
$this->db->where("registered_at <=", $current_month_end);
$users_query = $this->db->get();
$users = $users_query->result_array();
$referral_earnings = array();
foreach ($users as $user) {
if ($user["referred_by"] > 0) {
$referrer_id = $user["referred_by"];
if (isset($user_totals[$user["id"]])) {
$earned_amount = $user_totals[$user["id"]];
if (!isset($referral_earnings[$referrer_id])) {
$referral_earnings[$referrer_id] = 0;
}
$referral_earnings[$referrer_id] += $earned_amount;
}
}
}
$final_results = array();
foreach ($referral_earnings as $referrer_id => $earnings) {
$final_results[] = array("user_id" => $referrer_id, "total_referral_earnings" => $earnings);
}
usort($final_results, function ($a, $b) {
return $b["total_referral_earnings"] <=> $a["total_referral_earnings"];
}
);
foreach ($final_results as &$result) {
$this->db->select("email, balance, verified");
$this->db->from("users");
$this->db->where("id", $result["user_id"]);
$user_query = $this->db->get();
$user_info = $user_query->row_array();
$result["email"] = $user_info["email"];
$result["balance"] = $user_info["balance"];
$result["verified"] = $user_info["verified"] >= $minimum_verified_amount ? "Verified" : '';
$result["total_referral_earnings"] = $referral_earnings[$result["user_id"]] ?? 0;
}
return array_slice($final_results, 0, 5);
}
}
© 2023 Quttera Ltd. All rights reserved.