Files
portal/app/Classes/Modules/Orders/Processors/ApproveChangeOrderAddressProcessor.php
T
2021-08-19 01:33:16 +08:00

54 lines
1.8 KiB
PHP

<?php
namespace App\Classes\Modules\Orders\Processors;
use App\Classes\Modules\Orders\Standards\Rules\CanApproveChangeOrderAddress;
use App\Classes\Modules\Orders\Services\FetchesOrder;
use App\Classes\Modules\Addresses\Services\DeletesAddress;
use App\Classes\Modules\Orders\Services\UpdatesOrdersAddress;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use Illuminate\Http\Request;
class ApproveChangeOrderAddressProcessor
{
/** @var CanApproveChangeOrderAddress */
private $canApproveChangeOrderAddress;
/** @var FetchesOrder */
private $fetchesOrder;
/** @var UpdatesOrdersAddress */
private $updatesOrdersAddress;
/** @var DeletesAddress */
private $deletesAddress;
/**
* CreateOrderProcessor constructor.
* @param CanApproveChangeOrderAddress $canApproveChangeOrderAddress
* @param FetchesOrder $fetchesOrder
* @param DeletesAddress $deletesAddress
* @param UpdatesOrdersAddress $updatesOrdersAddress
*/
public function __construct(CanApproveChangeOrderAddress $canApproveChangeOrderAddress, FetchesOrder $fetchesOrder, DeletesAddress $deletesAddress, UpdatesOrdersAddress $updatesOrdersAddress)
{
$this->canApproveChangeOrderAddress = $canApproveChangeOrderAddress;
$this->fetchesOrder = $fetchesOrder;
$this->deletesAddress = $deletesAddress;
$this->updatesOrdersAddress = $updatesOrdersAddress;
}
public function execute(Request $request)
{
$this->canApproveChangeOrderAddress->passes();
$order = $this->fetchesOrder->execute(['id' => $request->get('order_id')]);
$this->deletesAddress->execute($order->addressesApproved->first());
$this->updatesOrdersAddress->execute($order->addressesPendingVerification->first(), ApprovalStatus::APPROVED);
return $order;
}
}