Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 20
ClusterMemberService
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 2
30.00
0.00% covered (danger)
0.00%
0 / 20
 __construct
0.00% covered (danger)
0.00%
0 / 1
2.00
0.00% covered (danger)
0.00%
0 / 1
 createUpdateClusterMembers
0.00% covered (danger)
0.00%
0 / 1
20.00
0.00% covered (danger)
0.00%
0 / 19
<?php
namespace com\linways\core\ams\professional\service\academic;
use com\linways\base\util\MakeSingletonTrait;
use com\linways\core\ams\professional\service\BaseService;
use com\linways\core\ams\professional\exception\ProfessionalException;
use phpseclib3\Common\Functions\Strings;
class ClusterMemberService extends BaseService
{
    use MakeSingletonTrait;
    private function __construct() {
        // $this->mapper = ClusterServiceMapper::getInstance()->getMapper();
    }
    /**
     * Save cluster or update cluster members
     * @param Strings $clusterId
     * @param Strings $propertyName
     * @param Array $members
     */
    public function createUpdateClusterMembers ($clusterId,$propertyName,$members)
    {
        $members = $this->realEscapeArray($members);
        $propertyName = $this->realEscapeString($propertyName);
        $clusterId = $this->realEscapeString($clusterId);
        $createdBy = $GLOBALS['userId'];
        // $updatedBy = $GLOBALS['userId'];
        if(empty($clusterId))
            throw new ProfessionalException(ProfessionalException::EMPTY_PARAMETERS,"Cluster is empty! Please enter valid cluster");
        try{
            if(count($members)>0){
                $deleteMembers = "DELETE FROM `cluster_members` WHERE `cluster_id` = '$clusterId' AND member->'$.staffId' NOT IN (".(implode(',',$members)).");";
                $this->executeQuery($deleteMembers);
                $createMembers = "INSERT IGNORE INTO `cluster_members` (`id`,`cluster_id`,`member`,`properties`,`created_by`)
                SELECT LEFT(REPLACE(UUID(),'-',''), 17),'$clusterId',JSON_OBJECT('staffId',`staffID`),json_object(),'".$createdBy."' FROM `staffaccounts` WHERE `staffID` IN (".(implode(',',$members)).");";
                $this->executeQuery($createMembers);
            }
        }catch(\Exception $e) {
            throw new ProfessionalException ($e->getCode(),$e->getMessage());
        }
    }
}