public function testSerializeJson()
 {
     $team = new Team('Dream Team');
     $team->setPlayers([new Player('Player 1', 1)]);
     $array = Object2ArrayBuilder::create()->build()->createArray($team);
     static::assertEquals('{"name":"Dream Team","manager":[],"players":[{"name":"Player 1","number":1}]}', json_encode($array));
 }
 public function testPopulate()
 {
     $game = new Game();
     $game->setStadiumName('National');
     $game->setDate(new \DateTime('2016-01-01'));
     $game->setHomeClub(new Team('Team 1'));
     $game->setVisitor(new Team('Team 2'));
     $objectToArray = Object2ArrayBuilder::create()->build();
     $array = $objectToArray->createArray($game);
     static::assertEquals($game->getStadiumName(), $array['stadium']);
     static::assertEquals('2016-01-01', $array['date']);
     static::assertEquals('Team 1', $array['homeClub']['name']);
     static::assertEquals('Team 2', $array['visitor']['name']);
 }
 /**
  * @inheritdoc
  */
 public function buildRequest(ApiRequestBuilder $requestBuilder, ApiInterface $api)
 {
     /** @var QPayApi $api */
     $data = Object2ArrayBuilder::create()->build()->createArray($this);
     if (array_key_exists('urn:Header', $data)) {
         $data['urn:Header'] = ['urn1:CertPublicKey' => $api->getCredentials()->getCertificateSerialNumber(), 'urn1:UIID' => $api->getCredentials()->getUuid(), 'urn1:User' => 'system'];
     }
     if (array_key_exists('urn:RequestToken', $data)) {
         $data['urn:RequestToken'] = Object2ArrayBuilder::create()->build()->createArray($api->getRequestToken());
     }
     //build the request url
     $uri = sprintf('https://pos.qpay123.biz/%s/Gateway.svc', $api->getCredentials()->getMerchantName());
     $xml = QPayXMLParser::createRequest($this->getActionName(), $data);
     $requestBuilder->withUri($uri)->withMethod('POST')->withXMLBody($xml)->options()->setCurlOption(CURLOPT_CAINFO, $api->getCredentials()->getAuthorityCertificateFile())->setCurlOption(CURLOPT_SSLCERT, $api->getCredentials()->getClientCertificateFile())->setCurlOption(CURLOPT_SSLKEY, $api->getCredentials()->getCertificateKeyFile())->setCurlOption(CURLOPT_SSLCERTPASSWD, $api->getCredentials()->getCertificatePassword())->SSLVerification(false);
 }
 /**
  * Get array in sonata format.
  *
  * @return array
  */
 public function __toArray()
 {
     $batchActionsArray = [];
     foreach ($this->getAll() as $action) {
         $batchActionsArray[$action->getName()] = $action;
         //SonataAdmin require all actions in the root
         //mark each shild is a way to hide in the template
         if (!$action->getDropDown()->isEmpty()) {
             $childArray = $action->getDropDown();
             foreach ($childArray as $childAction => $childSettings) {
                 $childSettings = Object2ArrayBuilder::create()->build()->createArray($childSettings);
                 $childSettings['visible'] = false;
                 $batchActionsArray[$childAction] = $childSettings;
             }
         }
     }
     return $batchActionsArray;
 }
 /**
  * @param Modal $modal
  *
  * @throws \InvalidArgumentException
  */
 public function __construct(Modal $modal)
 {
     $modalJson = json_encode(Object2ArrayBuilder::create()->build()->createArray($modal));
     parent::__construct($modalJson, 200, ['X-Modal' => true, 'Content-Type' => 'application/json']);
 }
 /**
  * NOTE: use configureBatchActionsUsingMapper to customize batch actions.
  *
  * {@inheritdoc}
  *
  * @internal
  *
  * Override to call configureBatchActionsUsingMapper with mapper instance with current actions
  */
 protected function configureBatchActions($actions)
 {
     $mapper = new BatchActionMapper();
     foreach ($actions as $action => $options) {
         $mapper[$action] = $options;
     }
     $this->configureBatchActionsUsingMapper($mapper);
     //customize delete action
     if ($mapper->has('delete')) {
         $mapper->get('delete')->setIcon('fa fa-trash')->addAttributes(['class' => 'btn btn-danger']);
     }
     //this return a array in the format expected by sonata
     //sonata don`t allow dropdowns, for that reason some child elements
     //appear as duplicated in the array, but note the key visible is false to hide duplicate
     //actions in the template
     return Object2ArrayBuilder::create()->build()->createArray($mapper);
 }