<?php
namespace App\AtechNet\CoreBundle\Entity;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\JoinColumn;
use Doctrine\ORM\Mapping\ManyToOne;
use Doctrine\ORM\Mapping\OneToOne;
use Doctrine\ORM\Mapping\Table as Table;
/**
* MarketplaceJobProductModel
*
* @Table(name="marketplace_job_product_models")
* @Entity
*/
class MarketplaceJobProductModel extends AbstractSignedEntity
{
/**
* @var MarketplaceJob
*
* @ManyToOne(targetEntity="MarketplaceJob", inversedBy="productModels", cascade={"persist"})
* @JoinColumn(name="marketplace_job_id", referencedColumnName="id")
*/
private MarketplaceJob $marketplaceJob;
/**
* @var ProductModel
*
* @ManyToOne(targetEntity="ProductModel", inversedBy="marketplaceJobProductModels")
* @JoinColumn(name="product_model_id", referencedColumnName="id")
*/
private ProductModel $productModel;
/**
* @var int
*
* @Column(name="synced_qty", type="integer", nullable=false)
*/
private int $syncedQty = 0;
/**
* @var int
*
* @Column(name="status", type="integer", length=1)
*/
private int $status;
/**
* @var array|null
*
* @Column(name="result", type="array", nullable=true)
*/
private ?array $result;
/**
* @var ProductModel|null
*
* @ManyToOne(targetEntity="ProductModel")
* @JoinColumn(name="alternative_model_for_availability_calculation", referencedColumnName="id", nullable=true)
*/
private ?ProductModel $alternativeModelForAvailabilityCalculation;
/**
* @var MarketplaceListingStatistics
*
* @OneToOne(targetEntity="MarketplaceListingStatistics", inversedBy="marketplaceJobProductModel")
* @JoinColumn(name="marketplace_listing_statistics_id", referencedColumnName="id", nullable=true)
*/
private $marketplaceListingStatisticsItem;
public function __construct()
{
parent::__construct();
$this->status = MarketplaceJob::JOB_ITEM_STATUS_PENDING;
}
/**
* @return MarketplaceJob
*/
public function getMarketplaceJob()
{
return $this->marketplaceJob;
}
/**
* @param MarketplaceJob $marketplaceJob
*/
public function setMarketplaceJob(MarketplaceJob $marketplaceJob)
{
$this->marketplaceJob = $marketplaceJob;
}
/**
* @return ProductModel
*/
public function getProductModel()
{
return $this->productModel;
}
/**
* @param ProductModel $productModel
*/
public function setProductModel($productModel)
{
$this->productModel = $productModel;
}
/**
* @return int
*/
public function getSyncedQty()
{
return $this->syncedQty;
}
/**
* @param int $syncedQty
*/
public function setSyncedQty(int $syncedQty)
{
$this->syncedQty = $syncedQty;
}
/**
* @return int
*/
public function getStatus()
{
return $this->status;
}
/**
* @param int $status
*/
public function setStatus(int $status)
{
$this->status = $status;
}
/**
* @return array|null
*/
public function getResult(): ?array
{
return $this->result;
}
/**
* @param array|null $result
*/
public function setResult(array $result = null)
{
$this->result = $result;
}
/**
* @param int $batchId
*/
public function setBatchIdForTheJob(int $batchId): void
{
$this->setResult([
'batchId' => $batchId,
]);
}
/**
* @return null|int
*/
public function getMarketplaceBatchId(): ?int
{
return !is_null($this->getResult()) && array_key_exists('batchId', $this->getResult()) ? $this->getResult()['batchId'] : null;
}
/**
* @return null|int
*/
public function getErrorResult(): ?string
{
return !is_null($this->getResult()) && array_key_exists('message', $this->getResult()) ? $this->getResult()['message'] : null;
}
/**
* @return ProductModel|null
*/
public function getAlternativeModelForAvailabilityCalculation(): ?ProductModel
{
return $this->alternativeModelForAvailabilityCalculation;
}
/**
* @param ProductModel|null $alternativeModelForAvailabilityCalculation
*
* @return void
*/
public function setAlternativeModelForAvailabilityCalculation(?ProductModel $alternativeModelForAvailabilityCalculation): void
{
$this->alternativeModelForAvailabilityCalculation = $alternativeModelForAvailabilityCalculation;
}
/**
* @return MarketplaceListingStatistics
*/
public function getMarketplaceListingStatisticsItem()
{
return $this->marketplaceListingStatisticsItem;
}
/**
* @param MarketplaceListingStatistics $marketplaceListingStatisticsItem
*/
public function setMarketplaceListingStatisticsItem(MarketplaceListingStatistics $marketplaceListingStatisticsItem)
{
$this->marketplaceListingStatisticsItem = $marketplaceListingStatisticsItem;
}
}