*/ class SkillRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Skill::class); } public function deleteAsset(Skill $skill): void { if ($skill->hasAsset()) { $asset = $skill->getAsset(); $skill->setAsset(null); $this->getEntityManager()->persist($skill); $this->getEntityManager()->remove($asset); $this->getEntityManager()->flush(); } } public function update(Skill $skill): void { $this->getEntityManager()->persist($skill); $this->getEntityManager()->flush(); } public function delete(Skill $skill): void { $this->getEntityManager()->remove($skill); $this->getEntityManager()->flush(); } /** * Get the last acquired skill by a user on course and/or session. */ public function getLastByUser(User $user, ?Course $course = null, ?Session $session = null): ?Skill { $qb = $this->createQueryBuilder('s'); $qb ->innerJoin( 'ChamiloCoreBundle:SkillRelUser', 'su', Join::WITH, 's.id = su.skill' ) ->where( $qb->expr()->eq('su.user', $user->getId()) ) ; if (null !== $course) { $qb->andWhere( $qb->expr()->eq('su.course', $course->getId()) ); } if (null !== $session) { $qb->andWhere( $qb->expr()->eq('su.session', $session->getId()) ); } $qb ->setMaxResults(1) ->orderBy('su.id', Criteria::DESC) ; return $qb->getQuery()->getOneOrNullResult(); } }