/** * Find the Performance of Affiliates|Advertisers of an organization * @param object $org \Organization * @param string $type Type of user * @return [type] [description] */ public static function perf($org, $type, $opts = []) { $start = $opts['start'] ?? RequestMethods::get('start', date('Y-m-d', strtotime("-5 day"))); $end = $opts['end'] ?? RequestMethods::get('end', date('Y-m-d', strtotime("-1 day"))); switch ($type) { case 'publisher': $perfFields = $opts['fields'] ?? ['clicks', 'impressions', 'conversions', 'revenue', 'created']; $meta = $opts['meta'] ?? false; if ($meta) { $perfFields[] = 'meta'; } $publishers = $opts['publishers'] ?? $org->users($type); $pubPerf = Perf::all(['user_id' => ['$in' => $publishers], 'created' => Db::dateQuery($start, $end)], $perfFields, 'created', 'asc'); $pubPerf = Perf::objectArr($pubPerf, $perfFields); return $pubPerf; case 'advertiser': $advertisers = $opts['advertisers'] ?? $org->users($type); $fields = $opts['fields'] ?? ['revenue', 'created']; $advertPerf = Perf::all(['user_id' => ['$in' => $advertisers], 'created' => Db::dateQuery($start, $end)], $fields, 'created', 'asc'); $advertPerf = Perf::objectArr($advertPerf, $fields); return $advertPerf; } return []; }