* @license MIT * @link http://retailcrm.ru * @see http://retailcrm.ru/docs */ namespace Intaro\RetailCrm\Component\ApiClient\Traits; use Intaro\RetailCrm\Component\Json\Deserializer; use Intaro\RetailCrm\Component\Json\Serializer; use Intaro\RetailCrm\Model\Api\Request\Loyalty\Account\LoyaltyAccountActivateRequest; use Intaro\RetailCrm\Model\Api\Request\Loyalty\Account\LoyaltyAccountCreateRequest; use Intaro\RetailCrm\Model\Api\Request\Loyalty\Account\LoyaltyAccountEditRequest; use Intaro\RetailCrm\Model\Api\Request\Loyalty\Account\LoyaltyAccountRequest; use Intaro\RetailCrm\Model\Api\Response\Loyalty\Account\LoyaltyAccountEditResponse; use Intaro\RetailCrm\Model\Api\Response\Loyalty\Account\LoyaltyAccountGetResponse; use Intaro\RetailCrm\Model\Api\Response\Loyalty\Account\LoyaltyAccountsResponse; use Intaro\RetailCrm\Model\Api\Request\Loyalty\LoyaltyCalculateRequest; use Intaro\RetailCrm\Model\Api\Request\Order\Loyalty\OrderLoyaltyApplyRequest; use Intaro\RetailCrm\Model\Api\Request\SmsVerification\SmsVerificationConfirmRequest; use Intaro\RetailCrm\Model\Api\Response\Loyalty\Account\LoyaltyAccountActivateResponse; use Intaro\RetailCrm\Model\Api\Response\Loyalty\Account\LoyaltyAccountCreateResponse; use Intaro\RetailCrm\Model\Api\Response\Loyalty\LoyaltyCalculateResponse; use Intaro\RetailCrm\Model\Api\Response\Loyalty\LoyaltyLoyaltiesResponse; use Intaro\RetailCrm\Model\Api\Response\Loyalty\LoyaltyLoyaltyResponse; use Intaro\RetailCrm\Model\Api\Response\Order\Loyalty\OrderLoyaltyApplyResponse; use Intaro\RetailCrm\Model\Api\Response\SmsVerification\SmsVerificationConfirmResponse; use Intaro\RetailCrm\Model\Api\Response\SmsVerification\SmsVerificationStatusRequest; use Intaro\RetailCrm\Model\Api\Response\SmsVerification\SmsVerificationStatusResponse; use ReflectionException; /** * Trait LoyaltyTrait * @package Intaro\RetailCrm\Component\ApiClient\Traits */ trait LoyaltyTrait { /** * @param SmsVerificationStatusRequest $request * * @return SmsVerificationStatusResponse|null * @throws ReflectionException */ public function checkStatusPlVerification(SmsVerificationStatusRequest $request): ?SmsVerificationStatusResponse { $serialized = Serializer::serializeArray($request); $response = $this->client->checkStatusPlVerification($serialized, $request->checkId); return Deserializer::deserializeArray($response->getResponseBody(), SmsVerificationStatusResponse::class); } /** * @param OrderLoyaltyApplyRequest $request * * @return OrderLoyaltyApplyResponse|null * @throws ReflectionException */ public function loyaltyOrderApply(OrderLoyaltyApplyRequest $request): ?OrderLoyaltyApplyResponse { $serialized = Serializer::serializeArray($request); $response = $this->client->loyaltyOrderApply($serialized); return Deserializer::deserializeArray($response->getResponseBody(), OrderLoyaltyApplyResponse::class); } /** * @param LoyaltyCalculateRequest $request * * @return LoyaltyCalculateResponse|null * @throws ReflectionException */ public function loyaltyCalculate(LoyaltyCalculateRequest $request): ?LoyaltyCalculateResponse { $serialized = Serializer::serializeArray($request); $response = $this->client->loyaltyOrderCalculate($serialized); return Deserializer::deserializeArray($response->getResponseBody(), LoyaltyCalculateResponse::class); } /** * @param int $accountId * * @return LoyaltyAccountGetResponse|null */ public function getLoyaltyAccount(int $accountId): ?LoyaltyAccountGetResponse { $response = $this->client->getLoyaltyAccount($accountId); return Deserializer::deserializeArray($response->getResponseBody(), LoyaltyAccountGetResponse::class); } /** * @param LoyaltyAccountRequest $request * * @return LoyaltyAccountsResponse|null * @throws ReflectionException */ public function getLoyaltyAccounts(LoyaltyAccountRequest $request): ?LoyaltyAccountsResponse { $serialized = Serializer::serializeArray($request); $response = $this->client->getLoyaltyAccounts($serialized); return Deserializer::deserializeArray($response->getResponseBody(), LoyaltyAccountsResponse::class); } /** * @param LoyaltyAccountCreateRequest $request * * @return LoyaltyAccountCreateResponse|null * @throws ReflectionException */ public function createLoyaltyAccount(LoyaltyAccountCreateRequest $request): ?LoyaltyAccountCreateResponse { $serialized = Serializer::serializeArray($request); $response = $this->client->createLoyaltyAccount($serialized); return Deserializer::deserializeArray($response->getResponseBody(), LoyaltyAccountCreateResponse::class); } /** * @param LoyaltyAccountEditRequest $request * * @return LoyaltyAccountEditResponse|null * @throws ReflectionException */ public function editLoyaltyAccount(LoyaltyAccountEditRequest $request): ?LoyaltyAccountEditResponse { $serialized = Serializer::serializeArray($request); $response = $this->client->editLoyaltyAccount($serialized, $request->id); return Deserializer::deserializeArray($response->getResponseBody(), LoyaltyAccountEditResponse::class); } /** * @param LoyaltyAccountActivateRequest $request * * @return LoyaltyAccountActivateResponse|null * @throws ReflectionException */ public function activateLoyaltyAccount(LoyaltyAccountActivateRequest $request): ?LoyaltyAccountActivateResponse { $serialized = Serializer::serializeArray($request); $response = $this->client->activateLoyaltyAccount($serialized['id']); return Deserializer::deserializeArray($response->getResponseBody(), LoyaltyAccountActivateResponse::class); } /** * @param SmsVerificationConfirmRequest $request * * @return LoyaltyAccountActivateResponse|null * @throws ReflectionException */ public function sendVerificationCode(SmsVerificationConfirmRequest $request): ?SmsVerificationConfirmResponse { $serialized = Serializer::serializeArray($request); $response = $this->client->sendVerificationCode($serialized); return Deserializer::deserializeArray($response->getResponseBody(), SmsVerificationConfirmResponse::class); } /** * @param int $loyaltyId * * @return LoyaltyLoyaltyResponse|null */ public function getLoyaltyLoyalty(int $loyaltyId): ?LoyaltyLoyaltyResponse { $response = $this->client->getLoyaltyLoyalty($loyaltyId); return Deserializer::deserializeArray($response->getResponseBody(), LoyaltyLoyaltyResponse::class); } /** * @return LoyaltyLoyaltiesResponse|null */ public function getLoyaltyLoyalties(): ?LoyaltyLoyaltiesResponse { $response = $this->client->getLoyaltyLoyalties(); return Deserializer::deserializeArray($response->getResponseBody(), LoyaltyLoyaltiesResponse::class); } }