public function updateBeneficiaryEvent($beneficiaryId, $event)
 {
     // Create sub-events
     $recurrence = $event->getRecurrence();
     if (null != $recurrence && $recurrence->getNb() > 1) {
         // Remove previous events
         $childs = $event->getChilds();
         if (null == $childs && $childs->count() <= 0 && null != $event->getParent() && null != $event->getParent()->getChilds() && $event->getParent()->getChilds()->count() >= 0) {
             $childs = $parent->getChilds();
         }
         $childsSize = $childs->count();
         $stillSomeChild = true;
         $participants = $event->getParticipants();
         $nbEvent = $event->getRecurrence()->getNb();
         for ($i = 0; $i < $nbEvent - 1; $i++) {
             // Update childs (if any)
             if ($stillSomeChild && $i < $childsSize) {
                 $subEvent = $childs->get($i);
                 $subEvent->setObject('[' . $event->getCategory() . '] ' . $event->getObject());
             } else {
                 $stillSomeChild = false;
                 $subEvent = new Event('[' . $event->getCategory() . '] ' . $event->getObject());
             }
             foreach ($participants as $participant) {
                 $subEvent->addParticipant($participant);
             }
             $diff = '+' . ($i + 1) * $event->getRecurrence()->getFrequency() . ' ' . $event->getRecurrence()->getType();
             $dateStart = clone $event->getDateStart();
             $dateEnd = clone $event->getDateEnd();
             $subEvent->setDateStart($dateStart->modify($diff));
             $subEvent->setDateEnd($dateEnd->modify($diff));
             $subEvent->setRecurrence($recurrence);
             $event->addChild($subEvent);
         }
         // Remove remaining childs (if any)
         if ($stillSomeChild) {
             for ($i = $i; $i < $childsSize; $i++) {
                 $child = $childs->get($i);
                 $event->removeChild($i);
                 $this->em->remove($child);
                 $childsSize--;
                 $i--;
             }
         }
     }
     $this->em->persist($event);
     $this->em->flush();
     return $event->getId();
 }
Example #2
0
 public function addEvent(\Amisure\P4SApiBundle\Entity\Event $event)
 {
     $event->addParticipant($this);
     if (!$this->events->contains($event)) {
         $this->events->add($event);
     }
     return $this;
 }
Example #3
0
 public function getBeneficiaryEvents($criteria = array())
 {
     if (empty($criteria) || !array_key_exists('beneficiaryId', $criteria)) {
         throw new \Exception('Unknown beneficiary\'s event list with these given criteria');
     }
     $data = null;
     try {
         $params = array();
         if (isset($criteria['startDate'])) {
             if ($criteria['startDate'] instanceof \DateTime) {
                 $criteria['startDate'] = $criteria['startDate']->getTimestamp();
             }
             $params['start_date'] = $criteria['startDate'];
         } else {
             $params['start_date'] = time() - 60 * 60 * 24;
         }
         if (isset($criteria['endDate'])) {
             if ($criteria['endDate'] instanceof \DateTime) {
                 $criteria['endDate'] = $criteria['endDate']->getTimestamp();
             }
             $params['end_date'] = $criteria['endDate'];
         }
         if (isset($criteria['participants'])) {
             $params['participants'] = $criteria['participants'];
         }
         $request = $this->client->get('beneficiaries/' . $criteria['beneficiaryId'] . '/agenda', array(), array('query' => $params));
         $response = $request->send()->json();
         if (null == $response || !isset($response['status'])) {
             throw new \Exception($response['message'], StatusConstants::UNKNWON_ERROR);
         }
         if (StatusConstants::OK != $response['status']) {
             throw new \Exception($response['message'], StatusConstants::toCode($response['status']));
         }
         // - Got it!
         if (isset($response['agenda'])) {
             $result = $response['agenda'];
             $beneficiary = null;
             if (isset($result['beneficiary']) && is_array($result['beneficiary'])) {
                 $beneficiaryData = $result['beneficiary'];
                 $beneficiary = new BeneficiaryUser(@$beneficiaryData['id'], @$beneficiaryData['title'], @$beneficiaryData['first_name'], @$beneficiaryData['last_name']);
             }
             $participants = array();
             if (isset($result['participants']) && is_array($result['participants'])) {
                 foreach ($result['participants'] as $participantData) {
                     if (!isset($participantData['id'])) {
                         continue;
                     }
                     $participants[$participantData['id']] = new OrganizationUser($participantData['id'], @$participantData['title'], @$participantData['first_name'], @$participantData['last_name'], '', '', '', '', '', @$participantData['org_type'], @$participantData['role'], @$participantData['sub_role']);
                 }
             }
             if (isset($result['events']) && is_array($result['events'])) {
                 $data = array();
                 foreach ($result['events'] as $eventData) {
                     $event = new Event(@$eventData['object'], @$eventData['description'], @$eventData['place']);
                     $event->setId(@$eventData['id']);
                     $event->setDateStart(@$eventData['start_date']);
                     $event->setDateEnd(@$eventData['end_date']);
                     $event->addParticipant($beneficiary);
                     if (isset($eventData['participants']) && is_array($eventData['participants'])) {
                         foreach ($eventData['participants'] as $participant) {
                             if (!isset($participant['id']) || !isset($participants[$participant['id']])) {
                                 continue;
                             }
                             $event->addParticipant($participants[$participant['id']]);
                         }
                     }
                     $data[] = $event;
                 }
             }
         }
     } catch (\Exception $e) {
         throw new \Exception('Erreur lors de la recherche d\'événements.', StatusConstants::toCode($e->getCode()), $e);
     }
     return $data;
 }