Exemple #1
0
 public function sync()
 {
     if ($this->_debug) {
         echo "Sync of reservation #{$this->_reservation->getId()}" . PHP_EOL;
     }
     if (!$this->isValid()) {
         if ($this->_debug) {
             echo 'Something wrong with calendar. Stop' . PHP_EOL;
         }
         return false;
     }
     if ($this->_reservation->isAccepted()) {
         if ($this->_reservation->wasSynced()) {
             $this->_sync();
         } else {
             $this->_addRemote();
         }
     } else {
         if ($this->_reservation->isDeclined()) {
             if ($this->_reservation->wasSynced()) {
                 $this->deleteRemote();
                 // delete remove first because delete remove method removes Google Event Id !!
                 $this->_deleteLocal();
             }
         }
     }
     return true;
 }
 protected function __setData(stdClass $data)
 {
     try {
         $finalVisitTime = DateTime::create($data->final_visit_time);
         $visitEndTime = DateTime::create($data->visit_end_time);
     } catch (Exception $e) {
         throw new Exception('Время имеет неверный формат');
     }
     if ($finalVisitTime->getTimestamp() > $visitEndTime->getTimestamp()) {
         throw new Exception('Время приема не может быть позже времени окончания приема');
     }
     $timeChanged = false || $this->_entity->getFinalVisitTime() != $finalVisitTime->getTimestamp();
     $timeChanged = $timeChanged || $this->_entity->getVisitEndTime() != $visitEndTime->getTimestamp();
     if ($timeChanged) {
         $schedule = $this->_entity->getDoctor()->getSchedule($finalVisitTime);
         if (!$schedule->isAvailable($finalVisitTime, $visitEndTime, [(int) $this->_entity->getId()])) {
             throw new Exception('В это время доктор не принимает или занят');
         }
     }
     $this->_entity->setFinalVisitTime($finalVisitTime->getTimestamp());
     $this->_entity->setVisitEndTime($visitEndTime->getTimestamp());
     $serviceCollection = $this->_entity->getServiceCollection();
     $serviceCollection->resetItems();
     foreach ($data->id_services as $idService) {
         $service = Application_Model_Medical_Service::getById($idService);
         if ($service instanceof Application_Model_Medical_Service) {
             $serviceCollection->add($service);
         }
     }
     $this->_entity->setStatus($data->status);
 }