diff --git a/src/Controller/ActorController.php b/src/Controller/ActorController.php index 29ff656..a23b023 100644 --- a/src/Controller/ActorController.php +++ b/src/Controller/ActorController.php @@ -11,7 +11,6 @@ use Symfony\Component\Routing\Generator\UrlGenerator; use App\Form\Actors\ActorEditForm; use App\Repository\ActivityRepository; -use Doctrine\Common\Collections\Criteria; use App\Enum\StatusEnum; class ActorController extends AbstractExtendedController @@ -111,12 +110,10 @@ $actor = $actorRepository->find($id); // Get activities - $activityCriteria = new Criteria(); - $activityCriteria->andWhere($activityCriteria->expr() - ->eq('actor', $actor)); - $activityCriteria->andWhere($activityCriteria->expr() - ->in('status', StatusEnum::ACTIVE_STATUS)); - $activities = $activityRepository->matching($activityCriteria); + $activities = $activityRepository->findBy([ + 'actor' => $actor, + 'status' => StatusEnum::ACTIVE_STATUS + ]); // Actor edit form /** @var ActorEditForm $actorEditForm */ diff --git a/src/Controller/MainController.php b/src/Controller/MainController.php index 5c78e53..3c3a050 100644 --- a/src/Controller/MainController.php +++ b/src/Controller/MainController.php @@ -1,6 +1,8 @@ render('home.html.twig'); + // Get repositories + $entityManager = $this->getDoctrine()->getManager(); + /** @var ActivityRepository $activityRepository */ + $activityRepository = $entityManager->getRepository(ActivityEntity::class); + + // Get activities + $activities = $activityRepository->findActiveFollowed(); + + return $this->render('home.html.twig', [ + 'activities' => $activities + ]); } } \ No newline at end of file diff --git a/src/Repository/ActivityRepository.php b/src/Repository/ActivityRepository.php index c69053c..f9ca693 100644 --- a/src/Repository/ActivityRepository.php +++ b/src/Repository/ActivityRepository.php @@ -2,10 +2,30 @@ namespace App\Repository; use Doctrine\ORM\EntityRepository; +use Doctrine\ORM\Query; +use Doctrine\ORM\Query\Expr\Join; +use App\Entity\ActorEntity; +use App\Enum\StatusEnum; /** * Repository for workspaces */ class ActivityRepository extends EntityRepository { + + /** + * Find active activities of followed actors + * + * @return array + */ + public function findActiveFollowed(): array + { + $query = $this->createQueryBuilder('activity'); + $query->join(ActorEntity::class, 'actor', Join::WITH, 'activity.actor = actor'); + $query->andWhere($query->expr() + ->eq('actor.followed', true)); + $query->andWhere($query->expr()->in('activity.status', StatusEnum::ACTIVE_STATUS)); + + return $query->getQuery()->execute([], Query::HYDRATE_OBJECT); + } } \ No newline at end of file diff --git a/templates/home.html.twig b/templates/home.html.twig index c31044b..c331797 100644 --- a/templates/home.html.twig +++ b/templates/home.html.twig @@ -3,4 +3,14 @@ {% set page="Accueil" %} {% block pageContent %} +
+
+
+

Activités suivies en cours

+
+
+ {% include "_includes/html/arrays/activity.html.twig" with {activities: activities} only %} +
+
+
{% endblock %} \ No newline at end of file