{
//$resources = $this->getDoctrine()->getEntityManager()->getRepository('EpnadminCoreBundle:Resource')->findAll();
$resources = $this->getDoctrine()->getEntityManager()->getRepository('EpnadminCoreBundle:Resource')->findBy(
- array('status'=>'actif'),
+ array('status' => Resource::STATUS_ACTIVE),
array('name'=>'ASC')
);
+++ /dev/null
-<?php
-
-namespace Epnadmin\CoreBundle\DataFixtures\ORM;
-
-use Doctrine\Common\DataFixtures\AbstractFixture;
-use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
-use Doctrine\Common\Persistence\ObjectManager;
-
-use Epnadmin\CoreBundle\Entity\Resource;
-
-class LoadResourceData extends AbstractFixture implements OrderedFixtureInterface
-{
- public function load(ObjectManager $manager)
- {
- $resource = new Resource();
- $resource->setName('Ville');
- $this->setReference('resource-ville', $resource);
- $resource->setType('zone');
- $resource->setStatus('actif');
- $manager->persist($resource);
-
- $resource = new Resource();
- $resource->setName('Salle');
- $resource->setParent($manager->merge($this->getReference('resource-ville')));
- $this->setReference('resource-ville-salle', $resource);
- $resource->setType('salle');
- $resource->setStatus('actif');
- $manager->persist($resource);
-
- $manager->flush();
- }
-
- public function getOrder()
- {
- return 1;
- }
-}
--- /dev/null
+<?php
+
+namespace Epnadmin\CoreBundle\DataFixtures\ORM;
+
+use Doctrine\Common\DataFixtures\AbstractFixture;
+use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
+use Doctrine\Common\Persistence\ObjectManager;
+
+use Epnadmin\CoreBundle\Entity\ResourcePlace;
+use Epnadmin\CoreBundle\Entity\Resource;
+
+class LoadResourcePlaceData extends AbstractFixture implements OrderedFixtureInterface
+{
+ public function load(ObjectManager $manager)
+ {
+ $paris = $this->getReference('zone-paris');
+ $manager->merge($paris);
+
+ $espaceMultimedia = $this->createPlace('Espace Multimédia', $paris);
+ $salleA = $this->createPlace('Salle A', $espaceMultimedia);
+
+ $this->setReference('place-espace-multimedia', $espaceMultimedia);
+ $this->setReference('place-salle-a', $salleA);
+
+ $manager->persist($espaceMultimedia);
+ $manager->persist($salleA);
+ $manager->flush();
+ }
+
+ public function getOrder()
+ {
+ return 2;
+ }
+
+ public function createPlace($name, Resource $parent = null)
+ {
+ $place = new ResourcePlace();
+ $place->setName($name);
+
+ if ($parent) {
+ $place->setParent($parent);
+ }
+
+ return $place;
+ }
+}
--- /dev/null
+<?php
+
+namespace Epnadmin\CoreBundle\DataFixtures\ORM;
+
+use Doctrine\Common\DataFixtures\AbstractFixture;
+use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
+use Doctrine\Common\Persistence\ObjectManager;
+
+use Epnadmin\CoreBundle\Entity\ResourceZone;
+
+class LoadResourceZoneData extends AbstractFixture implements OrderedFixtureInterface
+{
+ public function load(ObjectManager $manager)
+ {
+ $france = $this->createZone('France');
+ $idf = $this->createZone('IDF', $france);
+ $paris = $this->createZone('Paris', $idf);
+
+ $this->setReference('zone-france', $france);
+ $this->setReference('zone-idf', $idf);
+ $this->setReference('zone-paris', $paris);
+
+ $manager->persist($france);
+ $manager->persist($idf);
+ $manager->persist($paris);
+ $manager->flush();
+ }
+
+ public function getOrder()
+ {
+ return 1;
+ }
+
+ protected function createZone($name, ResourceZone $parent = null)
+ {
+ $zone = new ResourceZone();
+ $zone->setName($name);
+
+ if ($parent) {
+ $zone->setParent($parent);
+ }
+
+ return $zone;
+ }
+}
/**
* @ORM\Entity
+ * @ORM\InheritanceType(value="JOINED")
+ * @ORM\DiscriminatorColumn(name="type", type="text", length=30)
+ * @ORM\DiscriminatorMap({
+ * "place" = "ResourcePlace",
+ * "computer" = "ResourceComputer",
+ * "zone" = "ResourceZone"
+ * })
*/
class Resource
{
- /**
+ const STATUS_ACTIVE = 1;
+ const STATUS_INACTIVE = 0;
+
+ /**
* @var integer $id
- *
+ *
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $description;
- /**
- * @ORM\Column(type="text", length=30)
- */
protected $type;
/**
- * @ORM\Column(type="text", length=30)
+ * @ORM\Column(type="integer")
*/
protected $status;
# Seule manière d'attribuer une valeur par défaut
public function __construct()
{
- $this->setType('lieu');
- $this->setStatus('actif');
+ $this->status = self::STATUS_ACTIVE;
}
-
+
public function getId()
{
return $this->id;
{
$list = array(null=>null);
$resources = $em->getRepository('EpnadminCoreBundle:Resource')->findBy(
- array('status'=>'actif','parent'=>null),
+ array('status'=>self::STATUS_ACTIVE,'parent'=>null),
array('name'=>'ASC')
);
foreach($resources as $resource)
/**
* Get sessions
*
- * @return Doctrine\Common\Collections\Collection
+ * @return Doctrine\Common\Collections\Collection
*/
public function getSessions()
{
return $this->sessions;
}
+
+ public function activate()
+ {
+ $this->status = self::STATUS_ACTIVE;
+ }
+
+ public function inactivate()
+ {
+ $this->status = self::STATUS_INACTIVE;
+ }
+
+ public function isBookable()
+ {
+ return $this->status == self::STATUS_ACTIVE;
+ }
}
--- /dev/null
+<?php
+
+namespace Epnadmin\CoreBundle\Entity;
+
+use Doctrine\ORM\Mapping as ORM;
+
+/**
+ * @ORM\Entity
+ */
+class ResourceComputer extends Resource
+{
+ /**
+ * @ORM\Column(type="string", length=255, nullable=true)
+ */
+ protected $netbiosName;
+
+ /**
+ * @ORM\Column(type="string", length=16, nullable=true)
+ */
+ protected $ipAddress;
+
+ public function getIpAddress()
+ {
+ return $this->ipAddress;
+ }
+
+ public function setIpAddress($ipAddress)
+ {
+ $this->ipAddress = $ipAddress;
+ }
+
+ public function getNetbiosName()
+ {
+ return $this->netbiosName;
+ }
+
+ public function setNetbiosName($netbiosName)
+ {
+ $this->netbiosName = $netbiosName;
+ }
+}
--- /dev/null
+<?php
+
+namespace Epnadmin\CoreBundle\Entity;
+
+use Doctrine\ORM\Mapping as ORM;
+
+/**
+ * @ORM\Entity
+ */
+class ResourcePlace extends Resource
+{
+ /**
+ * @ORM\Column(type="text",nullable=true)
+ */
+ protected $address;
+
+ public function getAddress()
+ {
+ return $this->address;
+ }
+
+ public function setAddress($address)
+ {
+ $this->address = $address;
+ }
+}
--- /dev/null
+<?php
+
+namespace Epnadmin\CoreBundle\Entity;
+
+use Doctrine\ORM\Mapping as ORM;
+
+/**
+ * @ORM\Entity
+ */
+class ResourceZone extends Resource
+{
+ public function isBookable()
+ {
+ return false;
+ }
+}
use Symfony\Component\Form\AbstractType;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
+use Epnadmin\CoreBundle\Entity\Resource;
+
class ResourceType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
));
$builder->add('status', 'choice', array(
'choices' => array(
- 'actif'=>'actif',
- 'inactif'=>'inactif',
+ Resource::STATUS_ACTIVE => 'actif',
+ Resource::STATUS_INACTIVE => 'inactif',
),
'required' => true,
'label'=>"Statut*"