diff --git a/src/DataFixtures/AppPollFixtures.php b/src/DataFixtures/AppPollFixtures.php index ef6c64f..5245756 100644 --- a/src/DataFixtures/AppPollFixtures.php +++ b/src/DataFixtures/AppPollFixtures.php @@ -3,9 +3,9 @@ namespace App\DataFixtures; use App\Entity\Choice; +use App\Entity\Comment; use App\Entity\Owner; use App\Entity\Poll; -use App\Entity\StackOfVotes; use App\Entity\Vote; use DateTime; use Doctrine\Bundle\FixturesBundle\Fixture; @@ -16,8 +16,11 @@ class AppPollFixtures extends Fixture { $owner = new Owner(); $owner->setEmail( 'tktest@tktest.com' ) - ->setPseudo( 'tk_TEST' ) - ->setModifierToken( uniqid() ); + ->setPseudo( 'tk_TEST' ); + $commenterMan = new Owner(); + $commenterMan->setEmail( 'tktest_commentateur@tktest.com' ) + ->setPseudo( 'tk_TEST_commentateur' ); + $voter = new Owner(); $voter->setEmail( 'testing_vote_people@tktest.com' ) ->setPseudo( 'voting_people_TEST' ) @@ -55,9 +58,23 @@ class AppPollFixtures extends Fixture { $poll = new Poll(); - $poll->setTitle( 'démo sondage de texte 2' ); + + $ownerComment = new Comment(); + $ownerComment + ->setText( "trop bien ce sondage wohooo! signé l'auteur." ) + ->setOwner( $owner ); + $poll->addComment( $ownerComment ); + + $someoneComment = new Comment(); + $someoneComment + ->setText( "comme l'auteur se la raconte. PFFFF!" ) + ->setOwner( $commenterMan ); + $poll->addComment( $someoneComment ); + + + $poll->setTitle( 'démo sondage de texte avec deux commentaires' ); $poll->setDescription( 'description du sondage 2' ); - $poll->setKind( 'date' ); + $poll->setKind( 'text' ); $poll->setAdminKey( uniqid() ); $poll->setModificationPolicy( 'self' ); $poll->setMailOnComment( true ); @@ -69,47 +86,80 @@ class AppPollFixtures extends Fixture { $owner->addPoll( $poll ); $manager->persist( $poll ); + $manager->persist( $someoneComment ); + $manager->persist( $ownerComment ); // voting test with 2 people - $stack1 = new StackOfVotes(); - $vote0 = new Vote(); - $vote0->setChoice( $poll->getChoices()[ 0 ] ); - $stack1->setOwner( $voter ) - ->addVote( $vote0 ); +// $stack1 = new StackOfVotes(); +// $vote0 = new Vote(); +// $vote0->setChoice( $poll->getChoices()[ 0 ] ); +// $stack1->setOwner( $voter ) +// ->addVote( $vote0 ); +// +// $stack2 = new StackOfVotes(); +// $vote1 = new Vote(); +// $vote1 +// ->setChoice( $poll->getChoices()[ 1 ] ); +// $stack1 +// ->setOwner( $owner ) +// ->addVote( $vote1 ); +// +// +// $voter->addStackOfVote( $stack1 ); +// $owner->addStackOfVote( $stack2 ); +// +// $poll = new Poll(); +// $poll->setTitle( 'accès restreint sondage de texte' ); +// $poll->setKind( 'text' ); +// $poll->setPassword( md5( 'mot_de_passe_super' ) ); +// $poll->setModificationPolicy( 'everybody' ); +// $poll->setDescription( 'description du sondage a accès restreint. le mot de passe est mot_de_passe_super' ); +// $poll->setAdminKey( uniqid() ); +// $poll->setCustomUrl( 'boudoum_podom_podom' ); +// +// $poll->setExpiracyDate( new DateTime() ); +// $poll->setMailOnComment( true ); +// $poll->setMailOnVote( true ); +// $poll->setOwner( $owner ); +// $owner->addPoll( $poll ); +// +// $manager->persist( $vote1 ); +// $manager->persist( $vote0 ); +// $manager->persist( $stack1 ); +// $manager->persist( $stack2 ); +// $manager->persist( $poll ); +// $manager->persist( $owner ); +// $manager->persist( $voter ); - $stack2 = new StackOfVotes(); - $vote1 = new Vote(); - $vote1->setChoice( $poll->getChoices()[ 1 ] ); - $stack1->setOwner( $owner )->addVote( $vote1 ); - $voter->addStackOfVote( $stack1 ); - $owner->addStackOfVote( $stack2 ); - - $poll = new Poll(); - $poll->setTitle( 'accès restreint sondage de texte' ); - $poll->setKind( 'text' ); - $poll->setPassword( md5( 'mot_de_passe_super' ) ); - $poll->setModificationPolicy( 'everybody' ); - $poll->setDescription( 'description du sondage a accès restreint. le mot de passe est mot_de_passe_super' ); - $poll->setAdminKey( uniqid() ); - $poll->setCustomUrl( 'boudoum_podom_podom' ); - - $poll->setExpiracyDate( new DateTime() ); - $poll->setMailOnComment( true ); - $poll->setMailOnVote( true ); - $poll->setOwner( $owner ); - $owner->addPoll( $poll ); - - $manager->persist( $poll ); - $manager->persist( $owner ); - $manager->persist( $voter ); + // poll with date type + $poll = new Poll(); + $choice = new Choice(); + $firstDate = new DateTime(); + $choice->setName( $firstDate ); + $choice2 = new Choice(); + $choice3 = new Choice(); + $choice2->setName( $poll->addDaysToDate( $firstDate, 1 ) ); + $choice3->setName( $poll->addDaysToDate( $firstDate, 2 ) ); + $poll->setTitle( "c'est pour aujourdhui ou pour demain" ) + ->setDescription( 'Vous avez le choix dans la date' ) + ->setExpiracyDate( new DateTime() ) + ->setKind( 'date' ) + ->setOwner( $owner ) + ->addChoice( $choice ) + ->addChoice( $choice2 ) + ->setModificationPolicy( 'self' ); // poll with cartoon choices $poll = new Poll(); $poll->setTitle( 'dessin animé préféré' ) ->setDescription( 'choisissez votre animé préféré' ) + ->setExpiracyDate( new DateTime() ) + ->setKind( 'text' ) + ->setOwner( $owner ) + ->setModificationPolicy( 'self' ) ->addTextChoiceArray( [ "Vic le viking", "Boumbo petite automobile", @@ -118,11 +168,12 @@ class AppPollFixtures extends Fixture { "Foot 2 rue", "Le chat, la vache, et l'océan", "Digimon", - ], - 'fixture land' ); + ] ); $manager->persist( $poll ); + $manager->persist( $commenterMan ); + $manager->flush(); } } diff --git a/src/Entity/Choice.php b/src/Entity/Choice.php index 44df862..8526dff 100644 --- a/src/Entity/Choice.php +++ b/src/Entity/Choice.php @@ -65,7 +65,11 @@ class Choice { return $this->name; } - public function setName( string $name ): self { + public function setName( $name ): self { + if ( is_a( $name, 'DateTime' ) ) { + $this->setDateTime( $name ); + $name = $name->format( 'D Y-m-d' ); + } $this->name = $name; return $this; diff --git a/src/Entity/Comment.php b/src/Entity/Comment.php index f34f53d..2a9edca 100644 --- a/src/Entity/Comment.php +++ b/src/Entity/Comment.php @@ -36,6 +36,10 @@ class Comment { */ private $poll; + function __construct() { + $this->setCreatedAt( new \DateTime() ); + } + public function getId(): ?int { return $this->id; } diff --git a/src/Entity/Owner.php b/src/Entity/Owner.php index efebe2a..4ad6cc7 100644 --- a/src/Entity/Owner.php +++ b/src/Entity/Owner.php @@ -49,12 +49,17 @@ class Owner { * @ORM\Column(type="string", length=255) */ private $modifierToken; - + /** + * @ORM\Column(type="datetime") + */ + private $createdAt; public function __construct() { $this->polls = new ArrayCollection(); $this->comments = new ArrayCollection(); $this->stackOfVotes = new ArrayCollection(); + $this->setCreatedAt( new \DateTime() ); + $this->setModifierToken( uniqid() ); } public function getId(): ?int { @@ -195,4 +200,14 @@ class Owner { return $this; } + + public function getCreatedAt(): ?\DateTimeInterface { + return $this->createdAt; + } + + public function setCreatedAt( \DateTimeInterface $createdAt ): self { + $this->createdAt = $createdAt; + + return $this; + } } diff --git a/src/Entity/Poll.php b/src/Entity/Poll.php index a956337..618356c 100644 --- a/src/Entity/Poll.php +++ b/src/Entity/Poll.php @@ -77,7 +77,7 @@ class Poll { * @ORM\Column(type="string", length=255) * @Serializer\Type("string") */ - public $modificationPolicy; + public $modificationPolicy = 'nobody'; /** * send a mail on a new comment * @ORM\Column(type="boolean", nullable=true) @@ -134,15 +134,33 @@ class Poll { */ private $adminKey; + /** + * number of days from now for default expiracy date + * @var int + */ + private $defaultExpiracyDaysFromNow = 60; + + public function __construct() { + $this->adminKey = uniqid(); $this->votes = new ArrayCollection(); $this->choices = new ArrayCollection(); $this->comments = new ArrayCollection(); $this->stackOfVotes = new ArrayCollection(); $this->setCreationDate( new \DateTime() ); + $this->setExpiracyDate( $this->addDaysToDate( + new \DateTime(), + $this->defaultExpiracyDaysFromNow + ) ); $this->setAllowedAnswers( [ 'yes' ] ); } + public function addDaysToDate( \DateTime $date, int $days ) { + $st = strtotime( $date->getTimestamp() . ' + ' . $days . ' days' ); + + return new \DateTime( "@$st" ); + } + public function getId(): ?int { return $this->id; }