Skip to content

Commit

Permalink
MDL-53187 tool_lp: Create events for user competency workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
taboubi authored and Frederic Massart committed Apr 18, 2016
1 parent 75cbdd9 commit 078d4f9
Show file tree
Hide file tree
Showing 14 changed files with 1,853 additions and 12 deletions.
66 changes: 59 additions & 7 deletions admin/tool/lp/classes/api.php
Original file line number Diff line number Diff line change
Expand Up @@ -3315,7 +3315,11 @@ public static function user_competency_cancel_review_request($userid, $competenc
}

$uc->set_status(user_competency::STATUS_IDLE);
return $uc->update();
$result = $uc->update();
if ($result) {
\tool_lp\event\user_competency_review_request_cancelled::create_from_user_competency($uc)->trigger();
}
return $result;
}

/**
Expand All @@ -3342,7 +3346,11 @@ public static function user_competency_request_review($userid, $competencyid) {
}

$uc->set_status(user_competency::STATUS_WAITING_FOR_REVIEW);
return $uc->update();
$result = $uc->update();
if ($result) {
\tool_lp\event\user_competency_review_requested::create_from_user_competency($uc)->trigger();
}
return $result;
}

/**
Expand All @@ -3368,7 +3376,11 @@ public static function user_competency_start_review($userid, $competencyid) {

$uc->set_status(user_competency::STATUS_IN_REVIEW);
$uc->set_reviewerid($USER->id);
return $uc->update();
$result = $uc->update();
if ($result) {
\tool_lp\event\user_competency_review_started::create_from_user_competency($uc)->trigger();
}
return $result;
}

/**
Expand All @@ -3391,7 +3403,11 @@ public static function user_competency_stop_review($userid, $competencyid) {
}

$uc->set_status(user_competency::STATUS_IDLE);
return $uc->update();
$result = $uc->update();
if ($result) {
\tool_lp\event\user_competency_review_stopped::create_from_user_competency($uc)->trigger();
}
return $result;
}

/**
Expand Down Expand Up @@ -4493,7 +4509,7 @@ public static function grade_competency($userid, $competencyid, $grade, $overrid
$desckey = 'evidence_manualsuggest';
}

return self::add_evidence($uc->get_userid(),
$result = self::add_evidence($uc->get_userid(),
$competency,
$context->id,
$action,
Expand All @@ -4505,6 +4521,16 @@ public static function grade_competency($userid, $competencyid, $grade, $overrid
$grade,
$USER->id,
$note);
if ($result) {
$uc->read();
if ($action == evidence::ACTION_OVERRIDE) {
$event = \tool_lp\event\user_competency_grade_rated::create_from_user_competency($uc);
} else {
$event = \tool_lp\event\user_competency_grade_suggested::create_from_user_competency($uc, $grade);
}
$event->trigger();
}
return $result;
}

/**
Expand Down Expand Up @@ -4551,7 +4577,7 @@ public static function grade_competency_in_plan($planorid, $competencyid, $grade
$desckey = 'evidence_manualsuggestinplan';
}

return self::add_evidence($plan->get_userid(),
$result = self::add_evidence($plan->get_userid(),
$competency,
$context->id,
$action,
Expand All @@ -4563,6 +4589,19 @@ public static function grade_competency_in_plan($planorid, $competencyid, $grade
$grade,
$USER->id,
$note);
if ($result) {
$uc = static::get_user_competency($plan->get_userid(), $competency->get_id());
if ($action == evidence::ACTION_OVERRIDE) {
$event = \tool_lp\event\user_competency_grade_rated_in_plan::create_from_user_competency($uc, $plan->get_id());
} else {
$event = \tool_lp\event\user_competency_grade_suggested_in_plan::create_from_user_competency($uc,
$plan->get_id(),
$grade
);
}
$event->trigger();
}
return $result;
}

/**
Expand Down Expand Up @@ -4621,7 +4660,7 @@ public static function grade_competency_in_course($courseorid, $userid, $compete
$desckey = 'evidence_manualsuggestincourse';
}

return self::add_evidence($userid,
$result = self::add_evidence($userid,
$competency,
$context->id,
$action,
Expand All @@ -4633,6 +4672,19 @@ public static function grade_competency_in_course($courseorid, $userid, $compete
$grade,
$USER->id,
$note);
if ($result) {
$uc = static::get_user_competency($userid, $competency->get_id());
if ($action == evidence::ACTION_OVERRIDE) {
$event = \tool_lp\event\user_competency_grade_rated_in_course::create_from_user_competency($uc, $course->id);
} else {
$event = \tool_lp\event\user_competency_grade_suggested_in_course::create_from_user_competency($uc,
$course->id,
$grade
);
}
$event->trigger();
}
return $result;
}

/**
Expand Down
137 changes: 137 additions & 0 deletions admin/tool/lp/classes/event/user_competency_grade_rated.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.

/**
* User competency grade rated event.
*
* @package tool_lp
* @copyright 2016 Issam Taboubi <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

namespace tool_lp\event;

use core\event\base;
use tool_lp\user_competency;
defined('MOODLE_INTERNAL') || die();

/**
* User competency grade rated event class.
*
* @property-read array $other {
* Extra information about event.
*
* - int grade: grade name of the user competency
* }
*
* @package tool_lp
* @since Moodle 3.1
* @copyright 2016 Issam Taboubi <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class user_competency_grade_rated extends base {

/**
* Convenience method to instantiate the event.
*
* @param user_competency $usercompetency The user competency.
* @return self
*/
public static function create_from_user_competency(user_competency $usercompetency) {
if (!$usercompetency->get_id()) {
throw new \coding_exception('The user competency ID must be set.');
}

$params = array(
'contextid' => $usercompetency->get_context()->id,
'objectid' => $usercompetency->get_id(),
'relateduserid' => $usercompetency->get_userid(),
'other' => array(
'grade' => $usercompetency->get_grade()
)
);

$event = static::create($params);
$event->add_record_snapshot(user_competency::TABLE, $usercompetency->to_record());
return $event;
}

/**
* Returns description of what happened.
*
* @return string
*/
public function get_description() {
return "The user with id '$this->userid' rated the user competency with id '$this->objectid' "
. "with '" . $this->other['grade'] . "' grade";
}

/**
* Return localised event name.
*
* @return string
*/
public static function get_name() {
return get_string('eventusercompetencygraderated', 'tool_lp');
}

/**
* Get URL related to the action
*
* @return \moodle_url
*/
public function get_url() {
return new \moodle_url('/admin/tool/lp/user_competency.php', array(
'id' => $this->objectid
));
}

/**
* Init method.
*
* @return void
*/
protected function init() {
$this->data['crud'] = 'u';
$this->data['edulevel'] = self::LEVEL_TEACHING;
$this->data['objecttable'] = user_competency::TABLE;
}

/**
* Get_objectid_mapping method.
*
* @return string the name of the restore mapping the objectid links to
*/
public static function get_objectid_mapping() {
return base::NOT_MAPPED;
}

/**
* Custom validation.
*
* Throw \coding_exception notice in case of any problems.
*/
protected function validate_data() {
if (!$this->relateduserid) {
throw new \coding_exception('The \'relateduserid\' value must be set.');
}

if (!isset($this->other) || !isset($this->other['grade'])) {
throw new \coding_exception('The \'grade\' value must be set.');
}
}

}
Loading

0 comments on commit 078d4f9

Please sign in to comment.