8
8
use Overblog \GraphQLBundle \Validator \InputValidator ;
9
9
use Shopsys \FrameworkBundle \Component \Domain \Domain ;
10
10
use Shopsys \FrameworkBundle \Model \Customer \User \CurrentCustomerUser ;
11
+ use Shopsys \FrameworkBundle \Model \Customer \User \CustomerUser ;
11
12
use Shopsys \FrameworkBundle \Model \Order \PlaceOrderFacade ;
12
13
use Shopsys \FrameworkBundle \Model \Order \Processing \OrderInputFactory ;
13
14
use Shopsys \FrameworkBundle \Model \Order \Processing \OrderProcessor ;
@@ -23,6 +24,7 @@ class CreateOrderMutation extends AbstractMutation
23
24
{
24
25
public const string VALIDATION_GROUP_IS_DELIVERY_ADDRESS_DIFFERENT_FROM_BILLING_WITHOUT_PRESELECTED = 'isDeliveryAddressDifferentFromBillingWithoutPreselected ' ;
25
26
public const string VALIDATION_GROUP_ON_COMPANY_BEHALF = 'onCompanyBehalf ' ;
27
+ public const string VALIDATION_GROUP_ANONYMOUS_USER = 'anonymousUser ' ;
26
28
27
29
/**
28
30
* @param \Shopsys\FrontendApiBundle\Model\Order\OrderDataFactory $orderDataFactory
@@ -55,14 +57,14 @@ public function __construct(
55
57
*/
56
58
public function createOrderMutation (Argument $ argument , InputValidator $ validator ): CreateOrderResult
57
59
{
58
- $ validationGroups = $ this ->computeValidationGroups ($ argument );
60
+ $ customerUser = $ this ->currentCustomerUser ->findCurrentCustomerUser ();
61
+ $ validationGroups = $ this ->computeValidationGroups ($ argument , $ customerUser );
59
62
$ validator ->validate ($ validationGroups );
60
63
61
64
$ orderData = $ this ->orderDataFactory ->createOrderDataFromArgument ($ argument );
62
65
63
66
$ input = $ argument ['input ' ];
64
67
$ cartUuid = $ input ['cartUuid ' ];
65
- $ customerUser = $ this ->currentCustomerUser ->findCurrentCustomerUser ();
66
68
$ cart = $ this ->cartApiFacade ->getCartCreateIfNotExists ($ customerUser , $ cartUuid );
67
69
68
70
$ cartWithModifications = $ this ->cartWatcherFacade ->getCheckedCartWithModifications ($ cart );
@@ -93,9 +95,10 @@ public function createOrderMutation(Argument $argument, InputValidator $validato
93
95
94
96
/**
95
97
* @param \Overblog\GraphQLBundle\Definition\Argument $argument
98
+ * @param \Shopsys\FrameworkBundle\Model\Customer\User\CustomerUser|null $currentCustomerUser
96
99
* @return string[]
97
100
*/
98
- protected function computeValidationGroups (Argument $ argument ): array
101
+ protected function computeValidationGroups (Argument $ argument, ? CustomerUser $ currentCustomerUser ): array
99
102
{
100
103
$ input = $ argument ['input ' ];
101
104
$ validationGroups = ['Default ' ];
@@ -108,6 +111,10 @@ protected function computeValidationGroups(Argument $argument): array
108
111
$ validationGroups [] = self ::VALIDATION_GROUP_IS_DELIVERY_ADDRESS_DIFFERENT_FROM_BILLING_WITHOUT_PRESELECTED ;
109
112
}
110
113
114
+ if ($ currentCustomerUser === null ) {
115
+ $ validationGroups [] = self ::VALIDATION_GROUP_ANONYMOUS_USER ;
116
+ }
117
+
111
118
return $ validationGroups ;
112
119
}
113
120
}
0 commit comments