['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; } }