Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

63 lines
2.2KB

  1. <?php
  2. namespace common\logic\Distribution\ProductDistribution;
  3. use common\logic\BaseService;
  4. use common\logic\Distribution\Distribution\Distribution;
  5. use common\logic\Order\Order\Order;
  6. use common\logic\Product\Product\Product;
  7. use common\logic\RepositoryInterface;
  8. class ProductDistributionRepository extends BaseService implements RepositoryInterface
  9. {
  10. public function defaultOptionsSearch() {
  11. return [
  12. 'with' => ['product','distribution'],
  13. 'join_with' => [],
  14. 'orderby' => '',
  15. 'attribute_id_producer' => ''
  16. ] ;
  17. }
  18. public function countByDistribution(Distribution $distribution): int
  19. {
  20. return ProductDistribution::searchCount([
  21. 'id_distribution' => $distribution->id
  22. ]);
  23. }
  24. public function getOne(Distribution $distribution, Product $product): ?ProductDistribution
  25. {
  26. return ProductDistribution::searchOne([
  27. 'id_distribution' => $distribution->id,
  28. 'id_product' => $product->id
  29. ]);
  30. }
  31. // @TODO : à déplacer dans OrderRepository
  32. // searchByDistribution
  33. public static function getByDistribution(Distribution $distribution): array
  34. {
  35. $productDistributionArray = ProductDistribution::searchAll([
  36. 'id_distribution' => $distribution->id
  37. ]) ;
  38. $orderArray = Order::searchAll([
  39. 'distribution.id' => $distribution->id
  40. ]) ;
  41. foreach ($productDistributionArray as $productDistribution) {
  42. if (isset($productDistribution->product)) {
  43. $arrayProductsDistribution[$productDistribution->id_product] = [
  44. 'active' => (int) $productDistribution->active,
  45. 'unavailable' => (int) $productDistribution->product->unavailable,
  46. 'quantity_max' => $productDistribution->quantity_max,
  47. 'quantity_order' => Order::getProductQuantity($productDistribution->id_product, $orderArray),
  48. 'quantity_remaining' => $productDistribution->quantity_max - Order::getProductQuantity($productDistribution->id_product, $orders)
  49. ];
  50. }
  51. }
  52. return $productDistributionArray;
  53. }
  54. }