|
- <?php
-
- namespace common\logic\PointSale\PointSale;
-
- use common\logic\BaseService;
- use common\logic\BuilderInterface;
- use common\logic\PointSale\UserPointSale\UserPointSaleBuilder;
- use common\logic\PointSale\UserPointSale\UserPointSaleRepository;
- use common\logic\Producer\Producer\Producer;
- use common\logic\User\User\User;
- use common\logic\User\User\UserRepository;
-
- class PointSaleBuilder extends BaseService implements BuilderInterface
- {
- protected UserPointSaleBuilder $userPointSaleBuilder;
- protected UserRepository $userRepository;
- protected UserPointSaleRepository $userPointSaleRepository;
-
- public function __construct()
- {
- $this->userPointSaleBuilder = $this->loadService(UserPointSaleBuilder::class);
- $this->userRepository = $this->loadService(UserRepository::class);
- $this->userPointSaleRepository = $this->loadService(UserPointSaleRepository::class);
- }
-
- public function instanciate(): PointSale
- {
- $pointSale = new PointSale();
-
- return $pointSale;
- }
-
- /**
- * Initialise les commandes liées au point de vente.
- */
- public function initOrders(PointSale $pointSale, array $ordersArray): void
- {
- $pointSale->orders = [];
- $pointSale->revenues = 0;
- $pointSale->revenues_with_tax = 0;
-
- if ($ordersArray) {
- foreach ($ordersArray as $order) {
- if ($pointSale->id == $order->id_point_sale) {
- $pointSale->orders[] = $order;
-
- if (is_null($order->date_delete)) {
- $pointSale->revenues += (float) $order->amount;
- $pointSale->revenues_with_tax += (float) $order->amount_with_tax;
- }
- }
- }
- }
- }
-
- public function resetPointProductions(Producer $producer): void
- {
- PointSale::updateAll(
- ['point_production' => 0],
- ['id_producer' => $producer->id]
- );
- }
-
- /**
- * Traite la mise à jour de l'attribut 'point_production'.
- */
- // processPointProduction
- public function updatePointProduction(PointSale $pointSale): void
- {
- if ($pointSale->point_production) {
- $this->resetPointProductions($pointSale->producer);
- $pointSale->point_production = 1;
- $pointSale->save();
- }
- }
-
- /**
- * Traite les accès restreints d'un point de vente.
- */
- public function processRestrictedAccess(PointSale $pointSale): void
- {
- $this->userPointSaleBuilder->deleteByPointSale($pointSale);
-
- if (is_array($pointSale->users) && count($pointSale->users)) {
- foreach ($pointSale->users as $key => $val) {
- $user = $this->userRepository->getOneById($val);
- if ($user) {
- $this->userPointSaleBuilder->create($user, $pointSale, $pointSale->users_comment[$val]);
- }
- }
- }
- }
-
- /**
- * Lie un utilisateur au point de vente.
- */
- // linkUser
- public function addUser(User $user, PointSale $pointSale)
- {
- $userPointSale = $this->userPointSaleRepository->getOne($user, $pointSale);
-
- if (!$userPointSale) {
- $this->userPointSaleBuilder->create($user, $pointSale);
- }
- }
-
-
-
- }
|