Цель моего поста услышать критику в свой адресс, как стоит делать и почему.
Был мой сервис таков:
Код: Выделить всё
<?php
namespace core\services\user\bonus;
use common\models\User;
use common\models\UserBonusLog;
use core\repositories\UserBonusLogRepository;
use Yii;
use yii\base\Object;
class ReferralBonusService extends Object
{
const REGISTRATION_BONUS = 3500;
const FIRST_ORDER_BONUS = 1500;
private $logRepository;
private $orderRepository;
public function __construct(
UserBonusLogRepository $logRepository,
OrderRepository $orderRepository,
$config = []
) {
$this->logRepository = $logRepository;
$this->orderRepository = $orderRepository;
parent::__construct($config);
}
public function registration(User $user)
{
if (empty($user->referral)) {
return false;
}
if ($this->logRepository->existsReferralRegistrationByEntityId($user->id)) {
throw new \DomainException('Referral bonus already charged.');
}
$log = UserBonusLog::create(...);
$user->referral->servisBonus->add($log->bonus);
}
}
Код: Выделить всё
public function registration(User $user)
{
$this->user = $user; // Зачем? что это дает???
if ($this->isEmptyUserReferral()) {
return false;
}
if ($this->isRegistrationBonusCharged()) {
throw new \DomainException('Referral bonus already charged.');
}
$log = UserBonusLog::create(...);
$this->user->referral->servisBonus->add($log->bonus);
unset($this->user); // Нужно ли это ??????????????????????
return true;
}
private function isEmptyUserReferral()
{
return empty($this->user->referral);
}
private function isRegistrationBonusCharged()
{
return $this->logRepository->existsReferralRegistrationByEntityId($this->user->id);
}