/** * Get all sponsors of event * * @param Event $event * * @return array List of sponsors */ public function getSponsorsOfEvent(Event $event) { return $this->getEntityManager()->createQuery(' SELECT s as sponsor, c.name as category_name FROM StfalconSponsorBundle:Sponsor s JOIN s.sponsorEvents se JOIN se.event e JOIN se.category c WHERE e.id = :eventId ORDER BY c.sortOrder DESC ')->setParameter('eventId', $event->getId())->getResult(); }
/** * Find ticket for event by user * * @param Event $event * @param User $user * * @return Ticket */ public function getTicketForEventByUser(Event $event, User $user) { return $this->findOneBy(array('event' => $event->getId(), 'user' => $user->getId())); }
/** * @Route("/admin/event/{slug}/users/add", name="adminusersadd") * @Secure(roles="ROLE_ADMIN") * @Template() */ public function addUsersAction(Event $event) { // @todo удалить этот метод. одноразовый харкод $em = $this->getDoctrine()->getManager(); if (isset($_POST['users'])) { $users = explode("\r\n", $_POST['users']); foreach ($users as $data) { // данные с формы $dt = explode(' ', $data); unset($data); $data['name'] = $dt[0] . ' ' . $dt[1]; $data['email'] = $dt[2]; $data['discount'] = isset($dt[3]); $user = $this->get('fos_user.user_manager')->findUserBy(array('email' => $data['email'])); // создаем нового пользователя if (!$user) { $user = $this->get('fos_user.user_manager')->createUser(); $user->setEmail($data['email']); $user->setFullname($data['name']); // генерация временного пароля $password = substr(str_shuffle(md5(time())), 5, 8); $user->setPlainPassword($password); $user->setEnabled(true); $this->get('fos_user.user_manager')->updateUser($user); // отправляем сообщение о регистрации $text = "Приветствуем " . $user->getFullname() . "!\n\nВы были автоматически зарегистрированы на сайте Frameworks Days.\n\nВаш временный пароль: " . $password . "\nЕго можно сменить на странице " . $this->generateUrl('fos_user_change_password', array(), true) . "\n\n\n---\nС уважением,\nКоманда Frameworks Days"; $message = \Swift_Message::newInstance()->setSubject("Регистрация на сайте Frameworks Days")->setFrom('*****@*****.**', 'Frameworks Days')->setTo($user->getEmail())->setBody($text); // @todo каждый вызов отнимает память $this->get('mailer')->send($message); echo "#{$user->getId()} {$user->getFullname()} — Create a new user<br>"; } else { echo "<b>#{$user->getId()} {$user->getFullname()} — already registered</b><br>"; } // обновляем информацию о компании $user->setCountry('Украина'); if (isset($_POST['city'])) { $user->setCity($_POST['city']); } $user->setCompany($_POST['company']); $em->persist($user); $em->flush(); // проверяем или у него нет билетов на этот ивент /** @var Ticket $ticket */ $ticket = $em->getRepository('StfalconEventBundle:Ticket')->findOneBy(array('event' => $event->getId(), 'user' => $user->getId())); if (!$ticket) { $ticket = new Ticket(); $ticket->setEvent($event); $ticket->setUser($user); $em->persist($ticket); } if ($ticket->isPaid()) { echo "<b>he has already paid participation in the conference!</b><br>"; } else { // цена участия (с учетом скидки) $amount = $data['discount'] ? $_POST['amount'] * 0.8 : $_POST['amount']; $ticket->setAmount($amount); $ticket->setHasDiscount($data['discount']); $ticket->setAmountWithoutDiscount($_POST['amount']); $oldPayment = $ticket->getPayment(); if ($oldPayment) { $oldPayment->removeTicket($ticket); $em->persist($oldPayment); } echo "create a new payment<br>"; $payment = new Payment(); $payment->setUser($user); $payment->addTicket($ticket); $em->persist($payment); $em->flush(); // обновляем шлюз и статус платежа $payment->setGate('admin'); $payment->markedAsPaid(); $em->persist($payment); $em->persist($ticket); // сохраняем все изменения $em->flush(); echo "mark as paid<br>"; } } echo 'complete'; exit; } return []; }
/** * Find ticket for event by current user * * @param Event $event * * @return Ticket|null */ private function _findTicketForEventByCurrentUser(Event $event) { // @todo в сервіс $user = $this->container->get('security.context')->getToken()->getUser(); $ticket = null; if (is_object($user) && $user instanceof \FOS\UserBundle\Model\UserInterface) { // проверяем или у пользователя есть билеты на этот ивент $ticket = $this->getDoctrine()->getManager()->getRepository('StfalconEventBundle:Ticket')->findOneBy(array('event' => $event->getId(), 'user' => $user->getId())); } return $ticket; }