diff --git a/migrations/Version20241206074803.php b/migrations/Version20241212162704.php similarity index 89% rename from migrations/Version20241206074803.php rename to migrations/Version20241212162704.php index 3655279..469579d 100644 --- a/migrations/Version20241206074803.php +++ b/migrations/Version20241212162704.php @@ -10,7 +10,7 @@ use Doctrine\Migrations\AbstractMigration; /** * Auto-generated Migration: Please modify to your needs! */ -final class Version20241206074803 extends AbstractMigration +final class Version20241212162704 extends AbstractMigration { public function getDescription(): string { @@ -38,7 +38,8 @@ final class Version20241206074803 extends AbstractMigration $this->addSql('CREATE UNIQUE INDEX UNIQ_IDENTIFIER_EMAIL ON employee (email)'); $this->addSql('CREATE TABLE employee_skill (employee INT NOT NULL, skill INT NOT NULL, PRIMARY KEY(employee, skill))'); $this->addSql('CREATE UNIQUE INDEX UNIQ_B630E90E5D9F75A15E3DE477 ON employee_skill (employee, skill)'); - $this->addSql('CREATE TABLE incident (id INT NOT NULL, description VARCHAR(255) NOT NULL, PRIMARY KEY(id))'); + $this->addSql('CREATE TABLE incident (id INT NOT NULL, ride_id INT DEFAULT NULL, description VARCHAR(255) NOT NULL, PRIMARY KEY(id))'); + $this->addSql('CREATE INDEX IDX_3D03A11A302A8A70 ON incident (ride_id)'); $this->addSql('CREATE TABLE incident_type (id INT NOT NULL, incidents_id INT DEFAULT NULL, label VARCHAR(30) NOT NULL, PRIMARY KEY(id))'); $this->addSql('CREATE INDEX IDX_66D2209655955332 ON incident_type (incidents_id)'); $this->addSql('CREATE TABLE mission (id INT NOT NULL, label VARCHAR(30) NOT NULL, PRIMARY KEY(id))'); @@ -50,9 +51,7 @@ final class Version20241206074803 extends AbstractMigration $this->addSql('CREATE UNIQUE INDEX UNIQ_29D5499E8C03F15C302A8A70AA9E377A ON representation (employee_id, ride_id, date)'); $this->addSql('CREATE TABLE requirement (mission INT NOT NULL, skill INT NOT NULL, PRIMARY KEY(mission, skill))'); $this->addSql('CREATE UNIQUE INDEX UNIQ_DB3F55509067F23C5E3DE477 ON requirement (mission, skill)'); - $this->addSql('CREATE TABLE ride (id INT NOT NULL, incident_types_id INT DEFAULT NULL, missions_id INT DEFAULT NULL, label VARCHAR(30) NOT NULL, count INT NOT NULL, PRIMARY KEY(id))'); - $this->addSql('CREATE INDEX IDX_9B3D7CD076775724 ON ride (incident_types_id)'); - $this->addSql('CREATE INDEX IDX_9B3D7CD017C042CF ON ride (missions_id)'); + $this->addSql('CREATE TABLE ride (id INT NOT NULL, label VARCHAR(30) NOT NULL, count INT NOT NULL, PRIMARY KEY(id))'); $this->addSql('CREATE TABLE skill (id INT NOT NULL, label VARCHAR(30) NOT NULL, PRIMARY KEY(id))'); $this->addSql('CREATE TABLE messenger_messages (id BIGSERIAL NOT NULL, body TEXT NOT NULL, headers TEXT NOT NULL, queue_name VARCHAR(190) NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, available_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, delivered_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, PRIMARY KEY(id))'); $this->addSql('CREATE INDEX IDX_75EA56E0FB7336F0 ON messenger_messages (queue_name)'); @@ -73,11 +72,10 @@ final class Version20241206074803 extends AbstractMigration $this->addSql('ALTER TABLE assignment ADD CONSTRAINT FK_30C544BA302A8A70 FOREIGN KEY (ride_id) REFERENCES ride (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); $this->addSql('ALTER TABLE employee ADD CONSTRAINT FK_5D9F75A117C042CF FOREIGN KEY (missions_id) REFERENCES mission (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); $this->addSql('ALTER TABLE employee ADD CONSTRAINT FK_5D9F75A155955332 FOREIGN KEY (incidents_id) REFERENCES incident (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE incident ADD CONSTRAINT FK_3D03A11A302A8A70 FOREIGN KEY (ride_id) REFERENCES ride (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); $this->addSql('ALTER TABLE incident_type ADD CONSTRAINT FK_66D2209655955332 FOREIGN KEY (incidents_id) REFERENCES incident (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); $this->addSql('ALTER TABLE representation ADD CONSTRAINT FK_29D5499E8C03F15C FOREIGN KEY (employee_id) REFERENCES employee (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); $this->addSql('ALTER TABLE representation ADD CONSTRAINT FK_29D5499E302A8A70 FOREIGN KEY (ride_id) REFERENCES ride (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); - $this->addSql('ALTER TABLE ride ADD CONSTRAINT FK_9B3D7CD076775724 FOREIGN KEY (incident_types_id) REFERENCES incident_type (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); - $this->addSql('ALTER TABLE ride ADD CONSTRAINT FK_9B3D7CD017C042CF FOREIGN KEY (missions_id) REFERENCES mission (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); } public function down(Schema $schema): void @@ -95,11 +93,10 @@ final class Version20241206074803 extends AbstractMigration $this->addSql('ALTER TABLE assignment DROP CONSTRAINT FK_30C544BA302A8A70'); $this->addSql('ALTER TABLE employee DROP CONSTRAINT FK_5D9F75A117C042CF'); $this->addSql('ALTER TABLE employee DROP CONSTRAINT FK_5D9F75A155955332'); + $this->addSql('ALTER TABLE incident DROP CONSTRAINT FK_3D03A11A302A8A70'); $this->addSql('ALTER TABLE incident_type DROP CONSTRAINT FK_66D2209655955332'); $this->addSql('ALTER TABLE representation DROP CONSTRAINT FK_29D5499E8C03F15C'); $this->addSql('ALTER TABLE representation DROP CONSTRAINT FK_29D5499E302A8A70'); - $this->addSql('ALTER TABLE ride DROP CONSTRAINT FK_9B3D7CD076775724'); - $this->addSql('ALTER TABLE ride DROP CONSTRAINT FK_9B3D7CD017C042CF'); $this->addSql('DROP TABLE assignment'); $this->addSql('DROP TABLE category'); $this->addSql('DROP TABLE employee'); diff --git a/src/Controller/RepresentationController.php b/src/Controller/RepresentationController.php index b864828..8be4c27 100644 --- a/src/Controller/RepresentationController.php +++ b/src/Controller/RepresentationController.php @@ -7,6 +7,7 @@ use App\Entity\Representation; use App\Entity\Ride; use App\Form\RepresentationType; use App\Repository\RepresentationRepository; +use App\Repository\RideRepository; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; @@ -16,6 +17,12 @@ use Symfony\Component\Routing\Attribute\Route; #[Route('/representation', name: 'representation')] final class RepresentationController extends AbstractController { + public function __toString(): string + { + // TODO: Implement __toString() method. + return ""; + } + #[Route(name: '_index', methods: ['GET'])] public function index(RepresentationRepository $representationRepository): Response { @@ -25,23 +32,20 @@ final class RepresentationController extends AbstractController } #[Route('/new', name: '_new', methods: ['GET', 'POST'])] - public function new(Request $request, EntityManagerInterface $entityManager): Response + public function new(Request $request, EntityManagerInterface $entityManager, RideRepository $rideRepository): Response { $representation = new Representation(); $form = $this->createForm(RepresentationType::class, $representation); $form->handleRequest($request); -// $employee = $entityManager->getRepository(Employee::class)->findOneBy(['email' => $this->getUser()->getEmail()]); -// $ride = $entityManager->getRepository(Ride::class)->findOneBy(['id' => $form->get('ride')->getData()]); - - if ($form->isSubmitted() && $form->isValid()) { -// $representation->setEmployee($employee); -// $representation->setRide($ride); -// dd($representation); + $ride = $rideRepository->find($representation->getRide()); + $newCount = $ride->getCount() + $representation->getCount(); + $ride->setCount($newCount); + $entityManager->persist($representation); $entityManager->flush(); - +// return $this->redirectToRoute('representation_index', [], Response::HTTP_SEE_OTHER); } diff --git a/src/Entity/Incident.php b/src/Entity/Incident.php index 4654c92..be6a292 100644 --- a/src/Entity/Incident.php +++ b/src/Entity/Incident.php @@ -23,7 +23,7 @@ class Incident #[ORM\OneToMany(targetEntity: IncidentType::class, mappedBy: 'incident')] private ?IncidentType $incidentType; - #[ORM\OneToMany(targetEntity: Ride::class, mappedBy: 'incident')] + #[ORM\ManyToOne(targetEntity: Ride::class, inversedBy: 'incidents')] private ?Ride $ride; public function getEmployeeincidents(): Collection diff --git a/src/Entity/Mission.php b/src/Entity/Mission.php index 2ddc1f5..b14e0b2 100644 --- a/src/Entity/Mission.php +++ b/src/Entity/Mission.php @@ -25,9 +25,6 @@ class Mission #[ORM\OneToMany(targetEntity: Employee::class, mappedBy: 'mission')] private ?Employee $employee = null; - #[ORM\OneToMany(targetEntity: Ride::class, mappedBy: 'mission')] - private ?Ride $ride; - #[ORM\OneToMany(targetEntity: MissionCategory::class, mappedBy: 'mission')] #[ORM\JoinColumn(referencedColumnName: 'mission')] private Collection $missionCategories; diff --git a/src/Entity/Ride.php b/src/Entity/Ride.php index d8ff7d2..e43951d 100644 --- a/src/Entity/Ride.php +++ b/src/Entity/Ride.php @@ -26,10 +26,10 @@ class Ride #[ORM\OneToMany(targetEntity: Representation::class, mappedBy: 'ride')] private Collection $representations; - #[ORM\ManyToOne(targetEntity: IncidentType::class, inversedBy: 'ride')] - private Collection $incidentTypes; + #[ORM\OneToMany(targetEntity: Incident::class, mappedBy: 'ride')] + private Collection $incidents; - #[ORM\ManyToOne(targetEntity: Mission::class, inversedBy: 'ride')] + #[ORM\OneToMany(targetEntity: Mission::class, mappedBy: 'ride')] private Collection $missions; public function getAssignments(): Collection @@ -60,7 +60,7 @@ class Ride public function getRepresentations(): Collection { - return $this->representations; + return $this->incidents; } public function addRepresentation(Representation $representation): static @@ -120,16 +120,6 @@ class Ride return $this; } - public function getIncidentTypes(): Collection - { - return $this->incidentTypes; - } - - public function setIncidentTypes(Collection $incidentTypes): void - { - $this->incidentTypes = $incidentTypes; - } - public function getMissions(): Collection { return $this->missions; @@ -140,6 +130,16 @@ class Ride $this->missions = $missions; } + public function getIncidents(): Collection + { + return $this->incidents; + } + + public function setIncidents(Collection $incidents): void + { + $this->incidents = $incidents; + } + public function __toString(): string { return $this->label; diff --git a/src/Form/RideType.php b/src/Form/RideType.php index 3bc014b..415757c 100644 --- a/src/Form/RideType.php +++ b/src/Form/RideType.php @@ -2,6 +2,7 @@ namespace App\Form; +use App\Entity\Incident; use App\Entity\IncidentType; use App\Entity\Mission; use App\Entity\Ride; @@ -17,8 +18,8 @@ class RideType extends AbstractType $builder ->add('label') ->add('count') - ->add('incidentTypes', EntityType::class, [ - 'class' => IncidentType::class, + ->add('incidents', EntityType::class, [ + 'class' => Incident::class, 'choice_label' => 'id', ]) ->add('missions', EntityType::class, [