1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\InstantPurchase\Model\QuoteManagement;
use Magento\Framework\Exception\LocalizedException;
use Magento\Quote\Api\CartManagementInterface;
use Magento\Quote\Api\CartRepositoryInterface;
use Magento\Quote\Model\Quote;
/**
* Purchase products from quote.
*
* @api May be used for pluginization.
* @since 100.2.0
*/
class Purchase
{
/**
* @var CartRepositoryInterface
*/
private $quoteRepository;
/**
* @var CartManagementInterface
*/
private $quoteManagement;
/**
* Purchase constructor.
* @param CartRepositoryInterface $quoteRepository
* @param CartManagementInterface $quoteManagement
*/
public function __construct(
CartRepositoryInterface $quoteRepository,
CartManagementInterface $quoteManagement
) {
$this->quoteRepository = $quoteRepository;
$this->quoteManagement = $quoteManagement;
}
/**
* Summarize quote and place order.
*
* @param Quote $quote
* @return int Order id
* @throws LocalizedException if order can not be placed for a quote.
* @since 100.2.0
*/
public function purchase(Quote $quote): int
{
$quote->collectTotals();
$this->quoteRepository->save($quote);
$orderId = $this->quoteManagement->placeOrder($quote->getId());
return $orderId;
}
}