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); }
private function _process(Google_Event $event) { $event->setSummary($this->_getReservationSummary()); $event->setDescription($this->_getReservationDescription()); $timeBegin = DateTime::createFromTimestamp($this->_reservation->getFinalVisitTime()); $timeEnd = DateTime::createFromTimestamp($this->_reservation->getVisitEndTime()); $timeEventBegin = new Google_EventDateTime(); $timeEventEnd = new Google_EventDateTime(); $timeEventBegin->setDateTime($timeBegin->getGoogleApiDatetime()); $timeEventEnd->setDateTime($timeEnd->getGoogleApiDatetime()); $event->setStart($timeEventBegin); $event->setEnd($timeEventEnd); return $event; }