checkCustomerAccount = $checkCustomerAccount; $this->updateCustomerData = $updateCustomerData; $this->changeSubscriptionStatus = $changeSubscriptionStatus; $this->customerDataProvider = $customerDataProvider; } /** * @inheritdoc */ public function resolve( Field $field, $context, ResolveInfo $info, array $value = null, array $args = null ) { if (!isset($args['input']) || !is_array($args['input']) || empty($args['input'])) { throw new GraphQlInputException(__('"input" value should be specified')); } $currentUserId = $context->getUserId(); $currentUserType = $context->getUserType(); $this->checkCustomerAccount->execute($currentUserId, $currentUserType); $currentUserId = (int)$currentUserId; $this->updateCustomerData->execute($currentUserId, $args['input']); if (isset($args['input']['is_subscribed'])) { $this->changeSubscriptionStatus->execute($currentUserId, (bool)$args['input']['is_subscribed']); } $data = $this->customerDataProvider->getCustomerById($currentUserId); return ['customer' => $data]; } }