private function onCreateComponentInstance() { if (post('component') == "experience") { // get component type from js $experience = new Experience(); $experience->name = 'Experience'; $experience->total_points = 1000; $experience->bonus_per_day = 1; $experience->penalty_per_day = 1; $experience->bonus_days = 5; $experience->penalty_days = 25; $experience->start_date = "Mon, Aug 31, 2015 12:00 AM"; $experience->end_date = "Thu, Dec 17, 2015 12:00 AM"; $experience->animate = 1; $experience->size = "medium"; $experience->save(); $instanceID = $experience->id; } return ['instanceID' => $instanceID]; }
public function getExperienceInstanceOptions() { $instances = ExperienceModel::all(); if (count($instances) === 0) { return $array_dropdown = ['0' => 'No instances available']; } else { $array_dropdown = ['0' => '- select Experience Instance - ']; foreach ($instances as $instance) { $array_dropdown[$instance->id] = $instance->name; } return $array_dropdown; } }
public function getExperienceInstanceOptions() { $instances = ExperienceModel::all(); if (count($instances) === 0) { return $array_dropdown = ['0' => 'No instances available. Bonus/penalties won\'t appear in the gradebook']; } else { $array_dropdown = ['0' => '- select Experience Instance - ']; foreach ($instances as $instance) { $array_dropdown[$instance->id] = $instance->name; } return $array_dropdown; } }
/** * Delete */ public function index_onDelete() { if (($checkedIds = post('checked')) && is_array($checkedIds) && count($checkedIds)) { foreach ($checkedIds as $expId) { if (!($experience = Model::find($expId))) { continue; } $experience->delete(); } Flash::success("Successfully deleted"); } else { Flash::error("An error occurred when trying to delete this item"); } return $this->listRefresh(); }
public function onRun() { try { $experienceInstance = ExperienceModel::find($this->property('Experience')); //don't multiply by zero! $milestoneNum = count($experienceInstance->milestones) > 0 ? count($experienceInstance->milestones) : 1; $this->page['maxBonus'] = $experienceInstance->bonus_days * $experienceInstance->bonus_per_day * $milestoneNum; $this->page['minBonus'] = -$experienceInstance->penalty_days * $experienceInstance->penalty_per_day * $milestoneNum; $size = $this->property('Size'); $this->page['bonusSize'] = $size; $bonusPenalties = $this->getBonusPenalties(); $this->page['totalBonus'] = $bonusPenalties === 0 ? 0 : round($bonusPenalties->bonus, 2); $this->page['totalPenalties'] = $bonusPenalties === 0 ? 0 : round($bonusPenalties->penalties, 2); $this->page['role'] = 'Learner'; // $_POST['roles'];// // $this->addCss("/plugins/delphinium/blossom/assets/css/main.css"); } catch (\GuzzleHttp\Exception\ClientException $e) { return; } }
public function initVariables($experienceInstanceId) { //set class variables $experienceInstance = ExperienceModel::find($experienceInstanceId); $utcTimeZone = new DateTimeZone('UTC'); $stDate = $experienceInstance->start_date->setTimezone($utcTimeZone); $endDate = $experienceInstance->end_date->setTimezone($utcTimeZone); $ptsPerSecond = $this->getPtsPerSecond($stDate, $endDate, $experienceInstance->total_points); $this->setPtsPerSecond($ptsPerSecond); $this->setStartDateUTC($stDate); $this->setBonusPerSecond($experienceInstance->bonus_per_day / 24 / 60 / 60); $this->setBonusSeconds($experienceInstance->bonus_days * 24 * 60 * 60); $this->setPenaltyPerSecond($experienceInstance->penalty_per_day / 24 / 60 / 60); $this->setPenaltySeconds($experienceInstance->penalty_days * 24 * 60 * 60); if (is_null($this->submissions)) { $this->submissions = $this->getSubmissions(); } }
private function matchSubmissionsAndUsers($users, $scores) { $allStudents = array(); $standards = $this->roots->getGradingStandards(); $grading_scheme = $standards[0]->grading_scheme; //get experience total points $instance = ExperienceModel::find($this->property('experienceInstance')); $maxExperiencePts = $instance->total_points; foreach ($users as $user) { $submissionsArr = $this->findScoreByUserId($user->id, $scores); //this will weed out any TA's and other people in the course who aren't necessarily students try { $bonusPenalties = $this->getBonusPenalties($user->id); } catch (\GuzzleHttp\Exception\ClientException $e) { continue; } $bonus = $bonusPenalties->bonus; $penalty = $bonusPenalties->penalties; $totalPoints = 0; $userObj = new \stdClass(); $userObj->name = $user->name; $userObj->id = $user->login_id; //add link to user profile if (!isset($_SESSION)) { session_start(); } $domain = $_SESSION['domain']; $courseId = $_SESSION['courseID']; $userObj->profile_url = "https://{$domain}/courses/{$courseId}/users/{$user->id}"; $userObj->bonuses = round($bonus, 2); $userObj->penalties = round($penalty, 2); $userObj->totalBP = round(round($bonus, 2) + round($penalty, 2), 2); if (count($submissionsArr) >= 1) { $score = $submissionsArr[0]; $userObj->score = round($score->score, 2); $totalPoints = $score->score + $bonus + $penalty; $userObj->total = round($totalPoints, 2); } else { //no scores found for user $userObj->score = 0; $totalPoints = $bonus + $penalty; $userObj->total = round($totalPoints, 2); } //get letter grade $grade = new GradeComponent(); $userObj->grade = $grade->getLetterGrade($totalPoints, $maxExperiencePts, $grading_scheme); $allStudents[] = $userObj; } return $allStudents; }
public function getRedLinePoints() { $instanceId = \Input::get('experienceInstanceId'); $this->instance = ExperienceModel::find($instanceId); $now = new DateTime(date("Y-m-d")); //we don't do "now" because that means the red line keeps moving by the hour. We can to keep it fixed //for each day $startDate = new DateTime($this->instance->start_date); $endDate = new DateTime($this->instance->end_date); $currentSeconds = abs($now->getTimestamp() - $startDate->getTimestamp()); $this->ptsPerSecond = $this->getPtsPerSecond($startDate, $endDate, $this->instance->total_points); return floor($this->ptsPerSecond * $currentSeconds); }
public function getInstanceOptions() { $instances = ExperienceModel::all(); $array_dropdown = ['0' => '- select Experience Instance - ']; foreach ($instances as $instance) { $array_dropdown[$instance->id] = $instance->name; } return $array_dropdown; }
public function matchSubmissionsAndUsers($users, $scores) { $allStudents = array(); $standards = $this->roots->getGradingStandards(); $grading_scheme = $standards[0]->grading_scheme; //get experience total points $experienceInstance = ExperienceModel::find($this->property('experienceInstance')); $maxExperiencePts = $experienceInstance->total_points; $utcTimeZone = new DateTimeZone('UTC'); $stDate = $experienceInstance->start_date->setTimezone($utcTimeZone); $endDate = $experienceInstance->end_date->setTimezone($utcTimeZone); $expComponent = new ExperienceComponent(); $ptsPerSecond = $expComponent->getPtsPerSecond($stDate, $endDate, $experienceInstance->total_points); $bonusPerSecond = $experienceInstance->bonus_per_day / 24 / 60 / 60; $bonusSeconds = $experienceInstance->bonus_days * 24 * 60 * 60; $penaltyPerSecond = $experienceInstance->penalty_per_day / 24 / 60 / 60; $penaltySeconds = $experienceInstance->penalty_days * 24 * 60 * 60; foreach ($users as $user) { $submissionsArr = $this->findScoreByUserId($user->user_id, $scores); //this will weed out any TA's and other people in the course who aren't necessarily students try { $userSubmissions = $expComponent->getSubmissions($user->user_id); $bonusPenalties = $this->getBonusPenaltiesNew($this->property('experienceInstance'), $userSubmissions, $ptsPerSecond, $stDate, $bonusPerSecond, $bonusSeconds, $penaltyPerSecond, $penaltySeconds); // $bonusPenalties = $this->getBonusPenalties($user->user_id); } catch (\GuzzleHttp\Exception\ClientException $e) { continue; } $bonus = $bonusPenalties->bonus; $penalty = $bonusPenalties->penalties; $totalPoints = 0; $userObj = new \stdClass(); $userObj->name = $user->user->name; $userObj->id = $user->user_id; //add link to user profile if (!isset($_SESSION)) { session_start(); } $domain = $_SESSION['domain']; $courseId = $_SESSION['courseID']; $userObj->profile_url = "https://{$domain}/courses/{$courseId}/users/{$user->id}"; $userObj->bonuses = $bonus; $userObj->penalties = $penalty; $userObj->totalBP = $bonus - $penalty; if (count($submissionsArr) >= 1) { $score = $submissionsArr[0]; if (isset($score->score)) { $userObj->score = $score->score; $totalPoints = $score->score + $bonus + $penalty; $userObj->total = $totalPoints; } else { $userObj->score = 0; $totalPoints = $bonus + $penalty; $userObj->total = $totalPoints; } } else { //no scores found for user $userObj->score = 0; $totalPoints = $bonus + $penalty; $userObj->total = $totalPoints; } //get letter grade $grade = new GradeComponent(); $userObj->grade = $grade->getLetterGrade($totalPoints, $maxExperiencePts, $grading_scheme); $allStudents[] = $userObj; } return $allStudents; }
public function onDelete() { $id = post('id'); Model::where('id', '=', $id)->delete(); }