synergy/server/controller/SuiteCtrl.php (91 lines of code) (raw):

<?php namespace Synergy\Controller; use Synergy\DB\CaseDAO; use Synergy\DB\SuiteDAO; use Synergy\Misc\Util; use Synergy\Model\Suite; /** * Description of SuiteCtrl * * @author lada */ class SuiteCtrl extends ExtensionCtrl { private $suiteDao; private $caseDao; private $caseCtrl; function __construct() { parent::__construct('suite'); $this->suiteDao = new SuiteDAO(); $this->caseDao = new CaseDAO(); } public function getCaseCtrl() { if(is_null($this->caseCtrl)){ $this->caseCtrl = new CaseCtrl(); } return $this->caseCtrl; } /** * Removes suites for given specification * @param int $spec_id specification ID * @param int[] $obsolete_references array of IDs of suites that belongs to given specification and which will be removed) */ public function deleteSuitesForSpecification($spec_id, $obsolete_references) { $obsolete = Util::arrayToSQLOR($obsolete_references, "suite_id"); $this->suiteDao->deleteSuiteRefFromSpec($obsolete); $this->suiteDao->deleteSuitesForSpecification($spec_id); } /** * Returns suite by ID * @param int $id suite ID * @return Suite */ public function getSuite($id) { $suite = $this->suiteDao->getSuite($id); if (!is_null($suite)) $suite->setCases($this->suiteDao->getTestCases($id)); return parent::get($suite); } /** * Clones given suite for given specification * @param int $targetSpecificationId target specification ID * @param Suite $suite suite to be clonned * @return int new suite ID */ public function cloneSpecificationSuite($targetSpecificationId, $suite) { $newId = $this->suiteDao->cloneSpecificationSuite($targetSpecificationId, $suite); $suite->specificationId = $targetSpecificationId; parent::create($suite, $newId); return $newId; } /** * Returns array of cases' ID for given suite * @param int $id suite ID * @return int[] */ public function getTestCasesIds($id) { return $this->suiteDao->getTestCasesIds($id); } /** * Updates suite * @param Suite $suite * @return boolean true if success */ public function updateSuite($suite) { $result = $this->suiteDao->updateSuite($suite->id, $suite->title, $suite->desc, $suite->product, $suite->component, $suite->order); if ($result) { Mediator::emit("specificationUpdated", $this->getSpecificationId($suite->id)); parent::edit($suite); } return $result; } public function getSpecificationId($suiteId){ return $this->suiteDao->getSpeficiationId($suiteId); } /** * Removes suite with given ID * @param int $id * @return boolean true if success */ public function deleteSuite($id) { parent::delete($id); $specId = $this->getSpecificationId($id); $this->suiteDao->deleteReferencesToCases($id); $result = $this->suiteDao->deleteSuite($id); if($result){ Mediator::emit("specificationUpdated", $specId); } $this->getCaseCtrl()->removeUnusedCases(); return $result; } /** * Creates a new suite * @param Suite $suite suite * @return int ID of new suite */ public function createSuite($suite) { $newId = $this->suiteDao->createSuite($suite->specificationId, $suite->title, $suite->desc, $suite->product, $suite->component, $suite->order); $suite->id = $newId; Mediator::emit("specificationUpdated", $suite->specificationId); parent::create($suite, $newId); return $newId; } /** * Adds case to the suite * @param int $caseId case ID * @param int $suiteId suite ID * @return boolean true if success */ public function addCaseToSuite($caseId, $suiteId) { $result = $this->suiteDao->addCaseToSuite($caseId, $suiteId); if($result){ Mediator::emit("specificationUpdated", $this->getSpecificationId($suiteId)); } return $result; } /** * Returns true if given case is already part of the suite * @param int $caseId case ID * @param int $suiteId suite ID * @return boolean true if case is part of suite */ public function suiteAlreadyHasCase($caseId, $suiteId) { return $this->suiteDao->suiteAlreadyHasCase($caseId, $suiteId); } /** * Returns true if only given suite has this case, in case multiple suites have the same case, returns false * @param int $id case ID * @param int $suiteId suite ID * @return boolean true if only this suite has the case */ public function onlySuiteHasCase($id, $suiteId) { return $this->suiteDao->onlySuiteHasCase($id, $suiteId); } /** * Returns list of suites with title matching given term * @param String $term * @param int $limit maximum number of results * @return Suite[] */ public function findMatchingSuites($term, $limit = 15) { return parent::get($this->suiteDao->findMatchingSuites($term, $limit)); } /** * Returns array of specifications IDs where given case is used * @param type $caseId * @return array */ public function getAllSpecificationsForCase($caseId){ return $this->caseDao->getSpecificationsIdForCase($caseId); } } ?>