public static function overall($dateQuery = [], $user = null) { $q = []; $clicks = []; $conversions = []; $impressions = []; $payouts = []; $total_clicks = 0; $total_conversions = 0; $total_payouts = 0; $total_impressions = 0; if (is_array($user)) { $in = ArrayMethods::arrayKeys($user, '_id'); $q["user_id"] = ['$in' => $in]; } elseif ($user) { $q["user_id"] = $user->id; } if (count($dateQuery) > 0) { $q["created"] = ['$gte' => $dateQuery['start'], '$lte' => $dateQuery['end']]; } $performances = self::all($q, ['revenue', 'clicks', 'created', 'impressions', 'conversions']); foreach ($performances as $p) { //calculating datewise $date = $p->created->format('Y-m-d'); $total_clicks += $p->clicks; ArrayMethods::counter($clicks, $date, $p->clicks); $total_conversions += $p->conversions; ArrayMethods::counter($conversions, $date, $p->conversions); $total_impressions += $p->impressions; ArrayMethods::counter($impressions, $date, $p->impressions); $total_payouts += $p->revenue; ArrayMethods::counter($payouts, $date, $p->revenue); } ksort($clicks); ksort($impressions); ksort($payouts); $clicks = Utils::dateArray($clicks); $impressions = Utils::dateArray($impressions); $payouts = Utils::dateArray($payouts); return ["impressions" => $impressions, "total_impressions" => $total_impressions, "clicks" => $clicks, "total_clicks" => $total_clicks, "conversions" => $conversions, "total_conversions" => $total_conversions, "payouts" => $payouts, "total_payouts" => $total_payouts]; }