<?php
namespace App\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
use JsonSerializable;
/**
* @MongoDB\Document(collection="dsp")
* @MongoDB\UniqueIndex(keys={"gitId"="asc"})
*/
class Dsp implements JsonSerializable, SyncDocument
{
const GIT_FIELDS = [
'open_market',
'openmarket',
'private_auction',
'status',
'default_bidfloor',
'currency',
'bypass_validation',
'seat_settings',
'data_exchange',
'quota',
'targeting'
];
const GIT_ID = 'gitId';
/**
* @MongoDB\Id
*/
protected $_id;
/**
* @var string
* @MongoDB\Field(type="string")
*/
protected $gitId;
/**
* @var bool
* @MongoDB\Field(type="bool", nullable=true, name="open_market")
*/
private $openMarket;
/**
* @var array
* @MongoDB\Field(type="hash", nullable=true, name="open_market_config")
*/
private $openMarketConfig;
/**
* @var bool
* @MongoDB\Field(type="bool", nullable=true, name="private_auction")
*/
private $privateAuction;
/**
* @var string
* @MongoDB\Field(type="string")
*/
protected $status;
/**
* @var string
* @MongoDB\Field(type="string", name="default_bidfloor")
*/
protected $defaultBidFloor;
/**
* @var string
* @MongoDB\Field(type="string")
*/
protected $currency;
/**
* @var bool
* @MongoDB\Field(type="bool", name="bypass_violation")
*/
private $bypassValidation;
/**
* @var array
* @MongoDB\Field(type="hash")
*/
private $quota;
/**
* @var array
* @MongoDB\Field(type="hash", name="seat_settings")
*/
private $seatSettings;
/**
* @var array
* @MongoDB\Field(type="hash", name="data_exchange")
*/
private $dataExchange;
/**
* @var array
* @MongoDB\Field(type="hash")
*/
private $targeting;
/**
* @var array
* @MongoDB\Field(type="hash", name="default_bid_params", nullable=true)
*/
private $defaultBidParams;
/**
* @var array
* @MongoDB\Field(type="hash", name="seat_mapping_data", nullable=true)
*/
private $seatMapping;
/**
* @return mixed
*/
public function getId()
{
return $this->_id;
}
/**
* @return mixed
*/
public function getGitId()
{
return $this->gitId;
}
/**
* @param string $id
* @return Inventory
*/
public function setGitId(string $id)
{
$this->gitId = $id;
return $this;
}
/**
* @return bool
*/
public function isOpenMarket(): ?bool
{
return $this->openMarket;
}
/**
* @param bool $openMarket
* @return Dsp
*/
public function setOpenMarket(bool $openMarket = null): Dsp
{
$this->openMarket = $openMarket;
return $this;
}
/**
* @return bool
*/
public function isPrivateAuction(): ?bool
{
return $this->privateAuction;
}
/**
* @return array
*/
public function getOpenMarketConfig(): array
{
return $this->openMarketConfig;
}
/**
* @param array $openMarketConfig
* @return Dsp
*/
public function setOpenMarketConfig(array $openMarketConfig): Dsp
{
$this->openMarketConfig = $openMarketConfig;
return $this;
}
/**
* @param bool $privateAuction
* @return Dsp
*/
public function setPrivateAuction(bool $privateAuction = null): Dsp
{
$this->privateAuction = $privateAuction;
return $this;
}
/**
* @return string
*/
public function getStatus(): string
{
return $this->status;
}
/**
* @param string $status
* @return Dsp
*/
public function setStatus(string $status): Dsp
{
$this->status = $status;
return $this;
}
/**
* @return string
*/
public function getDefaultBidFloor(): string
{
return $this->defaultBidFloor;
}
/**
* @param string $defaultBidFloor
* @return Dsp
*/
public function setDefaultBidFloor(string $defaultBidFloor): Dsp
{
$this->defaultBidFloor = $defaultBidFloor;
return $this;
}
/**
* @return string
*/
public function getCurrency(): string
{
return $this->currency;
}
/**
* @param string $currency
* @return Dsp
*/
public function setCurrency(string $currency): Dsp
{
$this->currency = $currency;
return $this;
}
/**
* @return bool
*/
public function isBypassValidation(): ?bool
{
return $this->bypassValidation;
}
/**
* @param bool $bypassViolation
* @return Dsp
*/
public function setBypassValidation(bool $bypassValidation): Dsp
{
$this->bypassValidation = $bypassValidation;
return $this;
}
/**
* @return array
*/
public function getQuota(): array
{
return $this->quota;
}
/**
* @param array $quota
* @return Dsp
*/
public function setQuota(array $quota): Dsp
{
$this->quota = $quota;
return $this;
}
/**
* @return array
*/
public function getSeatSettings(): array
{
return $this->seatSettings;
}
/**
* @param array $seatSettings
* @return Dsp
*/
public function setSeatSettings(array $seatSettings): Dsp
{
$this->seatSettings = $seatSettings;
return $this;
}
/**
* @return array
*/
public function getDataExchange(): array
{
return $this->dataExchange;
}
/**
* @param array $dataExchange
* @return Dsp
*/
public function setDataExchange(array $dataExchange): Dsp
{
$this->dataExchange = $dataExchange;
return $this;
}
/**
* @return array
*/
public function getTargeting(): array
{
return $this->targeting;
}
/**
* @param array $targeting
* @return Dsp
*/
public function setTargeting(array $targeting): Dsp
{
$this->targeting = $targeting;
return $this;
}
/**
* @return array
*/
public function getDefaultBidParams(): array
{
return $this->defaultBidParams;
}
/**
* @param array $defaultBidParams
* @return Dsp
*/
public function setDefaultBidParams(array $defaultBidParams): Dsp
{
$this->defaultBidParams = $defaultBidParams;
return $this;
}
/**
* @return array
*/
public function getSeatMapping(): array
{
return $this->seatMapping;
}
/**
* @param array $seatMapping
* @return Dsp
*/
public function setSeatMapping(array $seatMapping): Dsp
{
$this->seatMapping = $seatMapping;
return $this;
}
public function jsonSerialize()
{
return [
'id' => $this->getId(),
'gitId' => $this->getGitId(),
'open_market' => $this->isOpenMarket(),
'openmarket' => $this->getOpenMarketConfig(),
'private_auction' => $this->isPrivateAuction(),
'status' => $this->getStatus(),
'default_bidfloor' => $this->getDefaultBidFloor(),
'currency' => $this->getCurrency(),
'bypass_validation' => $this->isBypassValidation(),
'seat_settings' => $this->getSeatSettings(),
'data_exchange' => $this->getDataExchange(),
'quota' => $this->getQuota(),
'targeting' => $this->getTargeting(),
'default_bid_params' => $this->getDefaultBidParams(),
'seat_mapping_data' => $this->getSeatMapping(),
];
}
public function validateMutation(Mutation $m) {
return $m->getOldValue()['open_market'] === $this->isOpenMarket() &&
$m->getOldValue()['openmarket'] === $this->getOpenMarketConfig() &&
$m->getOldValue()['private_auction'] === $this->isPrivateAuction() &&
$m->getOldValue()['status'] === $this->getStatus() &&
$m->getOldValue()['default_bidfloor'] === $this->getDefaultBidFloor() &&
$m->getOldValue()['currency'] === $this->getCurrency() &&
$m->getOldValue()['bypass_validation'] === $this->isBypassValidation() &&
$m->getOldValue()['seat_settings'] === $this->getSeatSettings() &&
$m->getOldValue()['data_exchange'] === $this->getDataExchange() &&
$m->getOldValue()['quota'] === $this->getQuota() &&
$m->getOldValue()['targeting'] === $this->getTargeting();
}
public function gitSerialize()
{
return [
'open_market' => $this->isOpenMarket(),
'openmarket' => $this->getOpenMarketConfig(),
'private_auction' => $this->isPrivateAuction(),
'status' => $this->getStatus(),
'default_bidfloor' => $this->getDefaultBidFloor(),
'currency' => $this->getCurrency(),
'bypass_validation' => $this->isBypassValidation(),
'seat_settings' => $this->getSeatSettings(),
'data_exchange' => $this->getDataExchange(),
'quota' => $this->getQuota(),
'targeting' => $this->getTargeting(),
];
}
public function gitUnserialize(array $gitData): Dsp
{
return $this->setOpenMarket(isset($gitData['open_market']) ? $gitData['open_market'] : null)
->setOpenMarketConfig($gitData['openmarket'])
->setPrivateAuction(isset($gitData['private_auction']) ? $gitData['private_auction'] : null)
->setStatus($gitData['status'])
->setDefaultBidFloor($gitData['default_bidfloor'])
->setCurrency($gitData['currency'])
->setBypassValidation($gitData['bypass_validation'])
->setSeatSettings($gitData['seat_settings'])
->setDataExchange($gitData['data_exchange'])
->setQuota($gitData['quota'])
->setTargeting(isset($gitData['targeting']) ?$gitData['targeting'] : [])
->setDefaultBidParams(isset($gitData['default_bid_params']) ?$gitData['default_bid_params'] : [])
->setSeatMapping(isset($gitData['seat_mapping_data']) ?$gitData['seat_mapping_data'] : []);
}
}