synergy/server/model/TestAssignment.php (159 lines of code) (raw):
<?php
namespace Synergy\Model;
use Synergy\App\Synergy;
use Synergy\Controller\AssignmentCtrl;
/**
* Description of TestAssignment
*
* @author vriha
*/
class TestAssignment {
public $userId;
public $userDisplayName;
public $username;
public $platform;
public $testRunId;
public $testRunTitle;
public $label = '';
public $labelId;
public $completed = 0;
public $total = 0;
public $specification;
public $specificationId;
public $state;
public $info;
public $id;
public $progress;
public $specificationData;
public $failed;
public $passed;
public $skipped;
public $deadline;
public $lastUpdated;
public $started;
public $timeToComplete;
public $issues;
private $tribesId;
public $tribes;
public $createdBy;
private $removalComment;
private static $assignmentCtrl;
private $email;
public $testRunProjectName;
const CREATED_BY_TESTER = 2;
const CREATED_BY_MANAGER_ADMIN = 1;
const CREATED_BY_TRIBE_LEADER = 3;
function __construct($username, $platform, $testRunId, $label, $total) {
$this->username = $username;
$this->platform = $platform;
$this->testRunId = intval($testRunId);
if (strlen($label) > 0) {
$this->label = $label;
} else {
$this->label = "";
$this->labelId = -1;
}
$this->total = intval($total);
$this->issues = array();
$this->timeToComplete = 0;
$this->createdBy = TestAssignment::CREATED_BY_MANAGER_ADMIN;
}
public function getEmail() {
return $this->email;
}
public function setEmail($email) {
$this->email = $email;
}
public static function canCreate() {
$role = Synergy::getSessionProvider()->getUserRole();
switch ($role) {
case "manager" :
case "admin" :
return true;
default :
return false;
}
}
function addControls($role) {
$this->controls = array();
switch ($this->createdBy) {
case TestAssignment::CREATED_BY_TESTER:
if ($this->username === Synergy::getSessionProvider()->getUsername() || $role === "admin" || $role === "manager") {
array_push($this->controls, new Action("Delete", "delete", "icon-trash"));
}
break;
case TestAssignment::CREATED_BY_MANAGER_ADMIN:
if ($this->username === Synergy::getSessionProvider()->getUsername() || $role === "admin" || $role === "manager") {
array_push($this->controls, new Action("Delete", "delete", "icon-trash"));
}
break;
case TestAssignment::CREATED_BY_TRIBE_LEADER:
if (is_null(TestAssignment::$assignmentCtrl)) {
TestAssignment::$assignmentCtrl = new AssignmentCtrl();
}
if (TestAssignment::$assignmentCtrl->userCanDeleteAssignment($this)) {
array_push($this->controls, new Action("Delete", "delete", "icon-trash"));
}
break;
default:
break;
}
}
/**
* Returns body of email that is supposed to be sent on new assignment creation
* @return String
*/
public function getCreatedEmailBody() {
return "Specification: " . $this->specification . " \r\n Platform: " . $this->platform . "\r\n Test run: " . $this->testRunTitle . " \r\n Finished by: " . $this->deadline;
}
public function getCreatedEmailBodyHTML() {
return "<ul><li><b>Specification:</b> <a href='".SYNERGY_URL."client/app/index.html#/specification/" . $this->specificationId . "'>" . $this->specification . "</a></li><li><b>Platform:</b> " . $this->platform . "</li><li><b>Test run:</b> <a href='".SYNERGY_URL."client/app/index.html#/run/" . $this->testRunId . "'>" . $this->testRunTitle . "</a> </li><li><b>Finished by:</b> " . $this->deadline . "</li></ul>";
}
/**
* Returns subject of email that is supposed to be sent on new assignment creation
* @return String
*/
public function getCreatedEmailSubject() {
return "New test assignment";
}
public function getRemovedEmailSubject() {
return "Tribe leader removed your assignment";
}
public function setLastUpdated($updatedDateTime) {
$this->lastUpdated = "";
if (isset($updatedDateTime) && !is_null($updatedDateTime)) {
date_default_timezone_set('UTC');
$str = strtotime($updatedDateTime);
$this->lastUpdated = gmdate("d M Y H:i:s", $str) . " UTC";
}
}
public function setStarted($startedDateTime) {
$this->started = "";
if (isset($startedDateTime) && !is_null($startedDateTime)) {
date_default_timezone_set('UTC');
$str = strtotime($startedDateTime);
$this->started = gmdate("d M Y H:i:s", $str) . " UTC";
}
}
public function getTribesId() {
return isset($this->tribesId) ? $this->tribesId : array();
}
public function setTribesId($tribesId) {
$this->tribesId = array();
if (isset($tribesId)) {
$expl = explode(";", $tribesId);
for ($i = 0, $max = count($expl); $i < $max; $i++) {
array_push($this->tribesId, intval($expl[$i]));
}
}
}
public function reset() {
$this->completed = "0";
$this->state = "";
$this->info = "pending";
}
public function addRemovalComment($text) {
$this->removalComment = $text;
}
public function getRemovalComment() {
return $this->removalComment;
}
public static function canDelete() {
$role = Synergy::getSessionProvider()->getUserRole();
switch ($role) {
case "manager" :
case "admin" :
return true;
default :
return false;
}
}
}
?>