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]; }
protected static function _getStats($records, &$stats, $date) { $keys = ['country', 'os', 'device', 'referer']; foreach ($records as $r) { $obj = Utils::toArray($r); $arr =& $stats[$date]['meta']; foreach ($keys as $k) { if (!isset($arr[$k])) { $arr[$k] = []; } $index = $r['_id'][$k] ?? null; if (is_null($index)) { continue; } if (strlen(trim($index)) === 0) { $index = "Empty"; } ArrayMethods::counter($arr[$k], $index, $obj['count']); } } }