|
- <?php
-
- namespace common\logic\Distribution\ProductDistribution;
-
- use common\logic\BaseService;
- use common\logic\Distribution\Distribution\Distribution;
- use common\logic\Order\Order\Order;
- use common\logic\Product\Product\Product;
- use common\logic\RepositoryInterface;
-
- class ProductDistributionRepository extends BaseService implements RepositoryInterface
- {
- public function defaultOptionsSearch() {
- return [
- 'with' => ['product','distribution'],
- 'join_with' => [],
- 'orderby' => '',
- 'attribute_id_producer' => ''
- ] ;
- }
-
- public function countByDistribution(Distribution $distribution): int
- {
- return ProductDistribution::searchCount([
- 'id_distribution' => $distribution->id
- ]);
- }
-
- public function getOne(Distribution $distribution, Product $product): ?ProductDistribution
- {
- return ProductDistribution::searchOne([
- 'id_distribution' => $distribution->id,
- 'id_product' => $product->id
- ]);
- }
-
- // @TODO : à déplacer dans OrderRepository
- // searchByDistribution
- public static function getByDistribution(Distribution $distribution): array
- {
- $productDistributionArray = ProductDistribution::searchAll([
- 'id_distribution' => $distribution->id
- ]) ;
-
- $orderArray = Order::searchAll([
- 'distribution.id' => $distribution->id
- ]) ;
-
- foreach ($productDistributionArray as $productDistribution) {
- if (isset($productDistribution->product)) {
- $arrayProductsDistribution[$productDistribution->id_product] = [
- 'active' => (int) $productDistribution->active,
- 'unavailable' => (int) $productDistribution->product->unavailable,
- 'quantity_max' => $productDistribution->quantity_max,
- 'quantity_order' => Order::getProductQuantity($productDistribution->id_product, $orderArray),
- 'quantity_remaining' => $productDistribution->quantity_max - Order::getProductQuantity($productDistribution->id_product, $orders)
- ];
- }
- }
-
- return $productDistributionArray;
- }
- }
|