public function executeSubaction(Subaction $subaction, User $user) { $em = $this->getEntityManager(); $userTime = $user->getCurrentDateTime(); $dayStart = clone $userTime; $dayFinish = clone $userTime; $dayStart->modify('today midnight'); $dayFinish->modify('tomorrow midnight'); $existingSubprogress = $em->getRepository('AcmeEdelaBundle:UserSubactionProgress')->matching(Criteria::create()->where(Criteria::expr()->eq('user', $user))->andWhere(Criteria::expr()->eq('subaction', $subaction))->andWhere(Criteria::expr()->gte('createdAt', $dayStart))->andWhere(Criteria::expr()->lte('createdAt', $dayFinish))); if ($existingSubprogress->count()) { $em->remove($existingSubprogress->first()); $progress = false; } else { $subprogress = new UserSubactionProgress(); $subprogress->setUser($user)->setSubaction($subaction); $em->persist($subprogress); $progress = true; } $em->flush(); return $progress; }