Exemplo n.º 1
0
 public function load(ObjectManager $manager)
 {
     foreach (range(0, 29) as $i) {
         $purchase = new Purchase();
         $purchase->setGuid($this->generateGuid());
         $purchase->setDeliveryDate(new \DateTime("+{$i} days"));
         $purchase->setCreatedAt(new \DateTime("now +{$i} seconds"));
         $purchase->setShipping(new \StdClass());
         $purchase->setDeliveryHour($this->getRandomHour());
         $purchase->setBillingAddress(json_encode(array('line1' => '1234 Main Street', 'line2' => 'Big City, XX 23456')));
         $purchase->setBuyer($this->getReference('user-' . $i % 20));
         $this->addReference('purchase-' . $i, $purchase);
         $manager->persist($purchase);
         $manager->flush();
         $numItemsPurchased = rand(1, 5);
         foreach (range(1, $numItemsPurchased) as $j) {
             $item = new PurchaseItem();
             $item->setQuantity(rand(1, 3));
             $item->setProduct($this->getRandomProduct());
             $item->setTaxRate(0.21);
             $item->setPurchase($this->getReference('purchase-' . $i));
             $manager->persist($item);
         }
     }
     $manager->flush();
 }
Exemplo n.º 2
0
 /**
  * @Route("/card/{cardId}/purchase/generate", name="generate_purchase")
  */
 public function generatePurchaseAction($cardId)
 {
     $em = $this->getDoctrine()->getManager();
     $card = $em->getRepository('AppBundle:Card')->find($cardId);
     if ($card->getStatus() == Card::getStatusList()[2]) {
         throw $this->createException('Карта просрочена!');
     }
     for ($i = 0; $i < mt_rand(0, 8); $i++) {
         $purchase = new Purchase();
         $purchase->setCard($card);
         $purchase->setAmount($this->generateAmount(500, 4000));
         $purchase->setDate(new \DateTime());
         $cardAmount = $card->getAmount();
         $card->setAmount($cardAmount - $purchase->getAmount());
         $em->persist($purchase);
     }
     $em->flush();
     return $this->redirect($this->generateUrl('card_show', array('cardId' => $cardId)));
 }
Exemplo n.º 3
0
 /**
  * Creates a form to delete a Purchase entity.
  *
  * @param Purchase $purchase The Purchase entity
  *
  * @return \Symfony\Component\Form\Form The form
  */
 private function createDeleteForm(Purchase $purchase)
 {
     return $this->createFormBuilder()->setAction($this->generateUrl('purchase_delete', array('id' => $purchase->getId())))->setMethod('DELETE')->getForm();
 }
Exemplo n.º 4
0
 /**
  * @return RedirectResponse
  * @Route(
  *     "/generator",
  *     name="generator"
  * )
  */
 public function generatorAction()
 {
     set_time_limit(0);
     $em = $this->getDoctrine()->getManager();
     $lastDate = $this->getDoctrine()->getManager()->getRepository('AppBundle:Purchase')->createQueryBuilder('p')->select('MAX(p.tsDayStart)')->getQuery()->getSingleScalarResult();
     // выясняем точку отсчета
     if (!$lastDate) {
         $startDate = new \DateTime('0 January 2014');
     } else {
         $startDate = new \DateTime();
         $startDate->setTimestamp($lastDate);
     }
     // массив с 60 товарами
     $pmIds = array_fill(1, 60, '');
     for ($dayCounter = 1; $dayCounter <= 100; $dayCounter++) {
         // добавляем один день
         $startDate->add(new \DateInterval('P1D'));
         // копируем массив с товарами для текущего дня
         $dayPmIds = $pmIds;
         // в день делаем 40 покупок
         for ($purchaseCount = 1; $purchaseCount <= 50; $purchaseCount++) {
             // извлекаем случайный товар
             $pmId = array_rand($dayPmIds);
             unset($dayPmIds[$pmId]);
             // генерируем покупку
             $purchase = new Purchase();
             $purchase->setTsDayStart(clone $startDate)->setPmId($pmId)->setPrice(($pmId + mt_rand(1, 5)) * 1000)->setACount(mt_rand(20, 100));
             $em->persist($purchase);
         }
         // пишем в бд, чтобы не вызвать переполнение
         $em->flush();
     }
     $this->get('session')->getFlashBag()->add('success', 'База успешно обновлена, добавлено 5000 записей');
     // возвращаемся на главную
     return $this->redirectToRoute('index');
 }