/** * Displays a form to create a new Job entity. * */ public function newAction() { $entity = new Job(); $entity->setType('full-time'); $form = $this->createCreateForm($entity); return $this->render('EtiJobeetBundle:Job:new.html.twig', array('entity' => $entity, 'form' => $form->createView())); }
public function getForLuceneQuery($query) { $hits = Job::getLuceneIndex()->find($query); $pks = array(); foreach ($hits as $hit) { $pks[] = $hit->pk; } if (empty($pks)) { return []; } $q = $this->createQueryBuilder('j')->where('j.id IN (:pks)')->setParameter('pks', $pks)->andWhere('j.isActivated = :active')->setParameter('active', 1)->setMaxResults(20)->getQuery(); return $q->getResult(); }
protected function execute(InputInterface $input, OutputInterface $output) { $days = $input->getArgument('days'); $em = $this->getContainer()->get('doctrine')->getManager(); // cleanup Lucene index $index = Job::getLuceneIndex(); $q = $em->getRepository('EtiJobeetBundle:Job')->createQueryBuilder('j')->where('j.expiresAt < :date')->setParameter('date', date('Y-m-d'))->getQuery(); $jobs = $q->getResult(); foreach ($jobs as $job) { if ($hit = $index->find('pk:' . $job->getId())) { $index->delete($hit->id); } } $index->optimize(); $output->writeln('Cleaned up and optimized the job index'); // remove stale jobs $nb = $em->getRepository('EtiJobeetBundle:Job')->cleanup($days); $output->writeln(sprintf('Removed %d stale jobs', $nb)); }
/** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('type', 'choice', ['choices' => Job::getTypes(), 'expanded' => true, 'constraints' => [new Assert\NotBlank(), new Assert\Choice(['callback' => ['Eti\\JobeetBundle\\Entity\\Job', 'getTypeValues']])]])->add('category', null, ['constraints' => [new Assert\NotBlank()]])->add('company', 'text', ['constraints' => [new Assert\NotBlank()]])->add('file', 'file', ['label' => 'Company logo', 'required' => false, 'constraints' => [new Assert\Image()]])->add('url', null, ['constraints' => [new Assert\Url()]])->add('position', null, ['constraints' => [new Assert\NotBlank()]])->add('location', 'text', ['constraints' => [new Assert\NotBlank()]])->add('description', 'textarea', ['constraints' => [new Assert\NotBlank()]])->add('howToApply', 'text', ['label' => 'How to apply?', 'constraints' => [new Assert\NotBlank()]])->add('isPublic', null, ['label' => 'Public?'])->add('email', 'email', ['constraints' => [new Assert\NotBlank(), new Assert\Email()]]); }
protected function configureFormFields(FormMapper $formMapper) { $formMapper->add('category')->add('type', 'choice', array('choices' => Job::getTypes(), 'expanded' => true))->add('company')->add('file', 'file', array('label' => 'Company logo', 'required' => false))->add('url')->add('position')->add('location')->add('description')->add('howToApply')->add('isPublic')->add('email')->add('isActivated'); }
public function testGetForLuceneQuery() { $em = static::$kernel->getContainer()->get('doctrine')->getManager(); $job = new Job(); $job->setType('part-time'); $job->setCompany('Sensio'); $job->setPosition('FOO6'); $job->setLocation('Paris'); $job->setDescription('WebDevelopment'); $job->setHowToApply('Send resumee'); $job->setEmail('*****@*****.**'); $job->setUrl('http://sensio-labs.com'); $job->setIsActivated(false); $em->persist($job); $em->flush(); $jobs = $em->getRepository('EtiJobeetBundle:Job')->getForLuceneQuery('FOO6'); $this->assertEquals(count($jobs), 0); $job = new Job(); $job->setType('part-time'); $job->setCompany('Sensio'); $job->setPosition('FOO7'); $job->setLocation('Paris'); $job->setDescription('WebDevelopment'); $job->setHowToApply('Send resumee'); $job->setEmail('*****@*****.**'); $job->setUrl('http://sensio-labs.com'); $job->setIsActivated(true); $em->persist($job); $em->flush(); $jobs = $em->getRepository('EtiJobeetBundle:Job')->getForLuceneQuery('position:FOO7'); $this->assertEquals(count($jobs), 1); foreach ($jobs as $job_rep) { $this->assertEquals($job_rep->getId(), $job->getId()); } $em->remove($job); $em->flush(); $jobs = $em->getRepository('EtiJobeetBundle:Job')->getForLuceneQuery('position:FOO7'); $this->assertEquals(count($jobs), 0); }
public function testSetExpiresAtValue() { $job = new Job(); $job->setExpiresAtValue(); $this->assertEquals(time() + 86400 * 30, $job->getExpiresAt()->format('U')); }