Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
StockStatusRepository.php
Go to the documentation of this file.
1 <?php
8 
9 use Magento\CatalogInventory\Api\Data\StockStatusCollectionInterfaceFactory;
15 use Magento\Framework\DB\QueryBuilderFactory;
18 
24 {
28  protected $resource;
29 
34 
39 
44 
48  protected $mapperFactory;
49 
54 
62  public function __construct(
64  StatusFactory $stockStatusFactory,
65  StockStatusCollectionInterfaceFactory $collectionFactory,
66  QueryBuilderFactory $queryBuilderFactory,
68  ) {
69  $this->resource = $resource;
70  $this->stockStatusFactory = $stockStatusFactory;
71  $this->stockStatusCollectionFactory = $collectionFactory;
72  $this->queryBuilderFactory = $queryBuilderFactory;
73  $this->mapperFactory = $mapperFactory;
74  }
75 
81  public function save(StockStatusInterface $stockStatus)
82  {
83  try {
84  $this->resource->save($stockStatus);
85  } catch (\Exception $exception) {
86  throw new CouldNotSaveException(
87  __('The stock status was unable to be saved. Please try again.'),
88  $exception
89  );
90  }
91  return $stockStatus;
92  }
93 
98  public function get($stockStatusId)
99  {
100  $stockStatus = $this->stockStatusFactory->create();
101  $this->resource->load($stockStatus, $stockStatusId);
102  return $stockStatus;
103  }
104 
109  public function getList(\Magento\CatalogInventory\Api\StockStatusCriteriaInterface $criteria)
110  {
111  $queryBuilder = $this->queryBuilderFactory->create();
112  $queryBuilder->setCriteria($criteria);
113  $queryBuilder->setResource($this->resource);
114  $query = $queryBuilder->create();
115  $collection = $this->stockStatusCollectionFactory->create(['query' => $query]);
116  return $collection;
117  }
118 
124  public function delete(StockStatusInterface $stockStatus)
125  {
126  try {
127  $this->resource->delete($stockStatus);
128  $this->getStockRegistryStorage()->removeStockStatus($stockStatus->getProductId());
129  } catch (\Exception $exception) {
130  throw new CouldNotDeleteException(
131  __('Unable to remove Stock Status for product %1', $stockStatus->getProductId()),
132  $exception
133  );
134  }
135  return true;
136  }
137 
143  public function deleteById($id)
144  {
145  try {
146  $stockStatus = $this->get($id);
147  $this->delete($stockStatus);
148  } catch (\Exception $exception) {
149  throw new CouldNotDeleteException(
150  __('Unable to remove Stock Status for product %1', $id),
151  $exception
152  );
153  }
154  return true;
155  }
156 
160  private function getStockRegistryStorage()
161  {
162  if (null === $this->stockRegistryStorage) {
163  $this->stockRegistryStorage = \Magento\Framework\App\ObjectManager::getInstance()
164  ->get(\Magento\CatalogInventory\Model\StockRegistryStorage::class);
165  }
167  }
168 }
getList(\Magento\CatalogInventory\Api\StockStatusCriteriaInterface $criteria)
$id
Definition: fieldset.phtml:14
__()
Definition: __.php:13
__construct(StockStatusResource $resource, StatusFactory $stockStatusFactory, StockStatusCollectionInterfaceFactory $collectionFactory, QueryBuilderFactory $queryBuilderFactory, MapperFactory $mapperFactory)