Example #1
0
 public function testJsonEncodeActivityNotice()
 {
     $this->params = ['activityNotice' => ['TestModel02' => ['notifyActions' => '*', 'serializeAttributes' => 'jsonData,model1.field1,model1.field3,workCalendar,resources,projectTasks']]];
     $helper = new ActivityNoticeSerializer($this->params);
     $model = new TestModel02();
     $model->model1 = new TestModel01();
     $model->model1->field1 = "ABC";
     $model->model1->field2 = "XYZ";
     $model->model1->field3 = "GHI";
     $model->projectTasks = ['abc', 'def'];
     $config = $helper->getActivityNoticeConfig('TestModel02', 'update', null);
     $data = $helper->getSerializeData($model, $config);
     $json = JsonHelper::encode($data);
     $obj = json_decode($json);
     $this->assertNull($obj->jsonData);
     $this->assertNull($obj->workCalendar);
     $this->assertNull($obj->resources);
     $this->assertTrue(is_array($obj->projectTasks));
     $this->assertEquals("abc", $obj->projectTasks[0]);
     $this->assertEquals("def", $obj->projectTasks[1]);
     $this->assertNotNull($obj->model1);
     $this->assertEquals("ABC", $obj->model1->field1);
     $this->assertObjectNotHasAttribute("field2", $obj->model1);
     $this->assertEquals("GHI", $obj->model1->field3);
 }
 /**
  * Send an activity notice using AMQP
  * @param ActivityNotice $notice
  * @return bool
  */
 public function sendActivityNotice($notice)
 {
     if (!isset($notice)) {
         return false;
     }
     /** @var array $setting */
     $setting = $this->params['amqpSetting'];
     try {
         if ($this->amqpClientLibrary == "PhpAmqpLib") {
             $connection = new AMQPStreamConnection($setting['host'], $setting['port'], $setting['user'], $setting['password']);
             $channel = $connection->channel();
             $msg = new AMQPMessage(JsonHelper::encode($notice));
             $channel->basic_publish($msg, $setting['exchangeName'], $setting['routingKey']);
             $channel->close();
             $connection->close();
         } elseif ($this->amqpClientLibrary == "PECL") {
             $connection = new \AMQPConnection(['host' => $setting['host'], 'port' => $setting['port'], 'login' => $setting['user'], 'password' => $setting['password']]);
             $connection->connect();
             if ($connection->isConnected()) {
                 $channel = new \AMQPChannel($connection);
                 $exchange = new \AMQPExchange($channel);
                 $exchange->setName($setting['exchangeName']);
                 $exchange->publish(JsonHelper::encode($notice), $setting['routingKey']);
                 $connection->disconnect();
             }
         } else {
             return false;
         }
     } catch (\Exception $e) {
         return false;
     }
     return true;
 }