mirror of
https://github.com/moodle/moodle.git
synced 2025-03-14 04:30:15 +01:00
MDL-52745 tool_lp: For competency show evidences added before plan was completed.
This commit is contained in:
parent
f194761408
commit
b200c8c88c
@ -3666,14 +3666,30 @@ class api {
|
||||
throw new required_capability_exception($context, 'tool/lp:usercompetencyview', 'nopermissions', '');
|
||||
}
|
||||
|
||||
// TODO - handle archived plans.
|
||||
|
||||
$usercompetency = user_competency::get_record(array('userid' => $userid, 'competencyid' => $competencyid));
|
||||
if (!$usercompetency) {
|
||||
return array();
|
||||
}
|
||||
|
||||
return evidence::get_records(array('usercompetencyid' => $usercompetency->get_id()), $sort, $order, $skip, $limit);
|
||||
$plancompleted = false;
|
||||
if ($planid != 0) {
|
||||
$plan = new plan($planid);
|
||||
if ($plan->get_status() == plan::STATUS_COMPLETE) {
|
||||
$plancompleted = true;
|
||||
}
|
||||
}
|
||||
|
||||
if ($plancompleted) {
|
||||
$select = 'usercompetencyid = :usercompetencyid AND timecreated <= :timecompeleted';
|
||||
$params = array('usercompetencyid' => $usercompetency->get_id(), 'timecompeleted' => $plan->get_timemodified());
|
||||
$orderby = $sort . ' ' . $order;
|
||||
$evidences = evidence::get_records_select($select, $params, $orderby, '*', $skip, $limit);
|
||||
} else {
|
||||
$params = array('usercompetencyid' => $usercompetency->get_id());
|
||||
$evidences = evidence::get_records($params, $sort, $order, $skip, $limit);
|
||||
}
|
||||
|
||||
return $evidences;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -3609,4 +3609,66 @@ class tool_lp_api_testcase extends advanced_testcase {
|
||||
$this->fail('Grading should not be allowed.');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test list of evidences for plan completed and not completed.
|
||||
*/
|
||||
public function test_list_evidence() {
|
||||
global $DB;
|
||||
|
||||
$this->resetAfterTest(true);
|
||||
$dg = $this->getDataGenerator();
|
||||
$lpg = $this->getDataGenerator()->get_plugin_generator('tool_lp');
|
||||
|
||||
$currenttime = time();
|
||||
$syscontext = context_system::instance();
|
||||
|
||||
// Create users.
|
||||
$user = $dg->create_user();
|
||||
$this->setUser($user);
|
||||
|
||||
// Create a framework and assign competencies.
|
||||
$framework = $lpg->create_framework();
|
||||
$c1 = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id()));
|
||||
$c2 = $lpg->create_competency(array('competencyframeworkid' => $framework->get_id()));
|
||||
|
||||
// Create 2 user plans and add competency to each plan.
|
||||
$p1 = $lpg->create_plan(array('userid' => $user->id));
|
||||
$p2 = $lpg->create_plan(array('userid' => $user->id));
|
||||
$pc1 = $lpg->create_plan_competency(array('planid' => $p1->get_id(), 'competencyid' => $c1->get_id()));
|
||||
$pc2 = $lpg->create_plan_competency(array('planid' => $p2->get_id(), 'competencyid' => $c1->get_id()));
|
||||
|
||||
// Create user competency. Add user_evidence and associate it to the user competency.
|
||||
$uc = $lpg->create_user_competency(array('userid' => $user->id, 'competencyid' => $c1->get_id()));
|
||||
$ue = $lpg->create_user_evidence(array('userid' => $user->id));
|
||||
$uec = $lpg->create_user_evidence_competency(array('userevidenceid' => $ue->get_id(), 'competencyid' => $c1->get_id()));
|
||||
$e1 = $lpg->create_evidence(array('usercompetencyid' => $uc->get_id()));
|
||||
|
||||
// Check both plans as one evidence.
|
||||
$this->assertEquals(1, count(api::list_evidence($user->id, $c1->get_id(), $p1->get_id())));
|
||||
$this->assertEquals(1, count(api::list_evidence($user->id, $c1->get_id(), $p2->get_id())));
|
||||
|
||||
// Complete second plan.
|
||||
$currenttime += 1;
|
||||
$p2->set_status(plan::STATUS_COMPLETE);
|
||||
$p2->update();
|
||||
$plansql = "UPDATE {tool_lp_plan} SET timemodified = :currenttime WHERE id = :planid";
|
||||
$DB->execute($plansql, array('currenttime' => $currenttime, 'planid' => $p2->get_id()));
|
||||
|
||||
// Add an other user evidence for the same competency.
|
||||
$currenttime += 1;
|
||||
$ue2 = $lpg->create_user_evidence(array('userid' => $user->id));
|
||||
$uec2 = $lpg->create_user_evidence_competency(array('userevidenceid' => $ue2->get_id(), 'competencyid' => $c1->get_id()));
|
||||
$e2 = $lpg->create_evidence(array('usercompetencyid' => $uc->get_id()));
|
||||
$evidencesql = "UPDATE {tool_lp_evidence} SET timecreated = :currenttime WHERE id = :evidenceid";
|
||||
$DB->execute($evidencesql, array('currenttime' => $currenttime, 'evidenceid' => $e2->get_id()));
|
||||
|
||||
// Check first plan which is not completed as all evidences.
|
||||
$this->assertEquals(2, count(api::list_evidence($user->id, $c1->get_id(), $p1->get_id())));
|
||||
|
||||
// Check second plan completed before the new evidence as only the first evidence.
|
||||
$listevidences = api::list_evidence($user->id, $c1->get_id(), $p2->get_id());
|
||||
$this->assertEquals(1, count($listevidences));
|
||||
$this->assertEquals($e1->get_id(), $listevidences[$e1->get_id()]->get_id());
|
||||
}
|
||||
}
|
||||
|
@ -36,6 +36,8 @@ use tool_lp\user_competency;
|
||||
use tool_lp\user_competency_plan;
|
||||
use tool_lp\plan_competency;
|
||||
use tool_lp\evidence;
|
||||
use tool_lp\user_evidence;
|
||||
use tool_lp\user_evidence_competency;
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
@ -61,6 +63,9 @@ class tool_lp_generator extends component_generator_base {
|
||||
/** @var int Number of created templates. */
|
||||
protected $templatecount = 0;
|
||||
|
||||
/** @var int Number of created user_evidence. */
|
||||
protected $userevidencecount = 0;
|
||||
|
||||
/** @var stdClass Scale that we might need. */
|
||||
protected $scale;
|
||||
|
||||
@ -433,5 +438,57 @@ class tool_lp_generator extends component_generator_base {
|
||||
return $cc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new user_evidence.
|
||||
*
|
||||
* @param array|stdClass $record
|
||||
* @return evidence
|
||||
*/
|
||||
public function create_user_evidence($record = null) {
|
||||
$this->userevidencecount++;
|
||||
$i = $this->userevidencecount;
|
||||
$record = (object) $record;
|
||||
|
||||
if (!isset($record->userid)) {
|
||||
throw new coding_exception('The userid value is required.');
|
||||
}
|
||||
if (!isset($record->name)) {
|
||||
$record->name = "Evidence $i name";
|
||||
}
|
||||
if (!isset($record->description)) {
|
||||
$record->description = "Evidence $i description";
|
||||
}
|
||||
if (!isset($record->descriptionformat)) {
|
||||
$record->descriptionformat = FORMAT_HTML;
|
||||
}
|
||||
|
||||
$ue = new user_evidence(0, $record);
|
||||
$ue->create();
|
||||
|
||||
return $ue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new user_evidence_comp.
|
||||
*
|
||||
* @param array|stdClass $record
|
||||
* @return evidence
|
||||
*/
|
||||
public function create_user_evidence_competency($record = null) {
|
||||
$record = (object) $record;
|
||||
|
||||
if (!isset($record->userevidenceid)) {
|
||||
throw new coding_exception('The userevidenceid value is required.');
|
||||
}
|
||||
if (!isset($record->competencyid)) {
|
||||
throw new coding_exception('The competencyid value is required.');
|
||||
}
|
||||
|
||||
$uec = new user_evidence_competency(0, $record);
|
||||
$uec->create();
|
||||
|
||||
return $uec;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user