public static function findFamily($user) { $families = \Family::all(["user_id = ?" => $user->id], ["member_id", "relation"]); $fs = array(); foreach ($families as $f) { $u = \User::first(["id = ?" => $f->member_id], ["name"]); $fs[(int) $f->member_id] = ArrayMethods::toObject(["name" => $u->name, "user_id" => $f->member_id, "relation" => $f->relation]); } return $fs; }
public static function earning($stats = [], $adid, $user_id = null) { $records = []; foreach ($stats as $date => $r) { $commissions = []; $meta = $r['meta'] ?? []; if (array_key_exists("country", $meta)) { $countryWise = $meta["country"] ?? []; foreach ($countryWise as $country => $clicks) { $extra = ['type' => 'both', 'start' => $date, 'end' => $date]; if ($user_id) { $extra['publisher'] = \User::first(['_id' => $user_id]); } $comm = \Commission::campaignRate($adid, $commissions, $country, $extra); $earning = \Ad::earning($comm, $clicks); ArrayMethods::add($earning, $r); } } $records[$date] = $r; } return $records; }
public function enrollments($classroom, $opts = array()) { $enrollments = \Enrollment::all(array("classroom_id = ?" => $classroom->id), array("user_id")); $students = array(); foreach ($enrollments as $e) { $usr = \User::first(array("id = ?" => $e->user_id), array("name", "username")); if (!isset($opts['only_user'])) { $scholar = \Scholar::first(array("user_id = ?" => $e->user_id), array("roll_no")); } $extra = $this->_extraFields($e, $opts); if (isset($opts['conversation'])) { $extra = array('username' => $usr->username, 'class' => $classroom->grade, 'section' => $classroom->section, 'display' => $usr->name . " (Class: " . $classroom->grade . " - " . $classroom->section . ") Roll No: " . $scholar->roll_no); } if (!isset($opts['only_user'])) { $data = array("user_id" => $e->user_id, "name" => $usr->name, "roll_no" => $scholar->roll_no); } else { $data = array("user_id" => $e->user_id); } $data = array_merge($data, $extra); $data = ArrayMethods::toObject($data); $students[] = $data; } return $students; }
public static function display($org, $type, $id = null) { $fields = self::fields(); if ($id) { $user = \User::first(['_id' => $id, 'org_id' => $org->_id, 'type' => $type]); $users = \User::objectArr($user, $fields); $data = ["{$type}" => (array) $users[0]]; } else { $users = \User::all(['org_id' => $org->_id, 'type' => $type]); $data = ["{$type}s" => \User::objectArr($users, $fields)]; } return $data; }
public function performance($course) { $session = Registry::get("session"); $perf = Registry::get("MongoDB")->performance; $week = (new \DateTime(date('Y-m-d')))->format("W"); $performance = array(); $classroom = self::$_classroom; $record = $perf->findOne(array('user_id' => (int) self::$_student->user_id, 'course_id' => (int) $course->id, 'year' => date('Y'), 'classroom_id' => (int) $classroom->id)); $d = StringMethods::month_se(); $start = (int) (new \DateTime($d['start']))->format("W"); if ($start == 53) { $start = 1; } $end = (int) (new \DateTime($d['end']))->format("W"); $monthly = array(); if (isset($record)) { $performance['course'] = $course->title; $performance['teacher'] = \User::first(array("id = ?" => $record['teacher_id']), array("name"))->name; foreach ($record['track'] as $track) { $week = $track['week']; if ($week <= $end && $week >= $start) { $monthly[] = $track['grade']; } $performance['tracking'][] = $track; } } return array('performance' => $performance, 'monthly' => $monthly); }