auctions-1.0.x-dev/modules/auctions_core/src/Controller/RefreshBidController.php

modules/auctions_core/src/Controller/RefreshBidController.php
<?php

namespace Drupal\auctions_core\Controller;

use Drupal\auctions_core\AuctionToolsTrait;
use Drupal\auctions_core\Entity\AuctionItem;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Session\AccountInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\RequestStack;

/**
 *
 */
class RefreshBidController extends ControllerBase {

  use AuctionToolsTrait;

  /**
   * Current user account.
   *
   * @var \Drupal\Core\Session\AccountInterface
   */
  protected $currentUser;


  protected $config_factory;

  /**
   * The current request
   *
   * @var \Symfony\Component\HttpFoundation\Request
   */
  protected $request;

  /**
   * Constructs a new SettingsForm object.
   *
   * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
   *   The factory for configuration objects.
   */
  public function __construct(ConfigFactoryInterface $config_factory, AccountInterface $currentUser, RequestStack $request_stack) {
    $this->config_factory = $config_factory;
    $this->currentUser = $currentUser;
    $this->request = $request_stack->getCurrentRequest();
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    return new static(
      $container->get('config.factory'),
      $container->get('current_user'),
      $container->get('request_stack'),
    );
  }

  /**
   * Use the AuctionTools service to get the highest bid.
   */
  public function getHighestBidJson(AuctionItem $auction_item) {
    $highestBidValue = $auction_item->seekCurrentHightest();
    $response = [];
    $response['op'] = 'noop';
    $response['event'] = \floor(\microtime(TRUE) * 1000);
    $response['ip'] = $this->request->getClientIp();
    $response['hasPrice'] = FALSE;
    $response['isOpen'] = $auction_item->isOpen();
    $uid = $this->currentUser()->id();
    $response['uid'] = $uid;
    if (isset($highestBidValue['minPrice'])) {
      $selfBid = ($highestBidValue['leadBid'] && $highestBidValue['leadBid']->getOwnerId() == $uid) ? TRUE : FALSE;
      $response['selfBid'] = $selfBid ? $this->selfBidPhrase() : FALSE;
      $config = $this->config('auctions.item_settings');
      $thous = $config->get('thousand-separator');
      $dec = $config->get('decimal-separator');
      $response['op'] = 'refresh';
      $response['minPrice'] = $highestBidValue['minPrice'];
      $response['hasPrice'] = TRUE;
      $response['bidStep'] = $auction_item->getBidStep();
      $response['refreshAmount'] = $auction_item->roundCents($response['minPrice'] + $response['bidStep']);
      $response['refreshMin'] = $auction_item->roundCents($response['minPrice'] + .01);
      $response['formattedPrice'] = $auction_item->showAsCents($response['minPrice'], $dec, $thous);
    }

    // Use State API to allow a logging activity.  Load reminder!
    $bidRefreshLog = \Drupal::state()->get('auctions.bid_refresh_log');
    if ($bidRefreshLog){
      \Drupal::logger('auctions_core.bid_refresh')->notice('Refresh Bid Conroller hit [@response]',['@response'=> \json_encode($response)]);
    }

    return new JsonResponse($response);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc