本文整理汇总了PHP中Doctrine\ORM\EntityRepository::findPaidPaymentsForUser方法的典型用法代码示例。如果您正苦于以下问题:PHP EntityRepository::findPaidPaymentsForUser方法的具体用法?PHP EntityRepository::findPaidPaymentsForUser怎么用?PHP EntityRepository::findPaidPaymentsForUser使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Doctrine\ORM\EntityRepository
的用法示例。
在下文中一共展示了EntityRepository::findPaidPaymentsForUser方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: checkTicketsPricesInPayment
/**
* Пересчитываем итоговую сумму платежа по всем билетам
* с учетом скидки
*
* @param Payment $payment
* @param Event $event
*/
public function checkTicketsPricesInPayment($payment, $event)
{
// Вытягиваем скидку из конфига
$paymentsConfig = $this->container->getParameter('stfalcon_event.config');
$discount = (double) $paymentsConfig['discount'];
$eventCost = $event->getCost();
/** @var Ticket $ticket */
foreach ($payment->getTickets() as $ticket) {
// получаем оплаченые платежи пользователя
$paidPayments = $this->repository->findPaidPaymentsForUser($ticket->getUser());
//правильно ли установлен флаг наличия скидки
// @todo с расчетом скидки у нас явно проблемы. ниже почти такой же код идет. плюс ещё в нескольких
// местах по коду делаем подобные расчеты. плюс в самой модели билета есть логика расчета цены со скидкой...
$isCorrectDiscount = $ticket->getHasDiscount() == (count($paidPayments) > 0 && $event->getUseDiscounts() || $ticket->hasPromoCode());
// если цена билета без скидки не ровна новой цене на ивент
// или неверно указан флаг наличия скидки
if ($ticket->getAmountWithoutDiscount() != $eventCost || !$isCorrectDiscount) {
// если не правильно установлен флаг наличия скидки, тогда устанавливаем его заново
if (!$isCorrectDiscount) {
// @todo для реализации возможности отключения скидки постоянных участников мне пришлось
// использовать метод $event->getUseDiscounts() в трех разных местах. а нужно, чтобы
// это можно было сделать в одном месте
$ticket->setHasDiscount(count($paidPayments) > 0 && $event->getUseDiscounts() || $ticket->hasPromoCode());
}
$ticket->setAmountWithoutDiscount($eventCost);
if ($ticket->getHasDiscount()) {
$ticket->setAmountWithDiscount($discount);
} else {
$ticket->setAmount($eventCost);
}
$this->entityManager->merge($ticket);
}
}
$payment->recalculateAmount();
//set base price
$payment->setBaseAmount($payment->getAmount());
$this->entityManager->merge($payment);
$this->flush();
}