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 _buildReservation(Reservation $reservation) { $reservation->setDoctor($this->_doctor); $reservation->setDesiredVisitTime($this->_fromTime->getTimestamp()); $reservation->setFinalVisitTime($this->_fromTime->getTimestamp()); $reservation->setVisitEndTime($this->_toTime->getTimestamp()); $reservation->setVisitorName($this->_data->visitorName); $reservation->setVisitorPhone($this->_data->visitorPhone); $serviceCollection = $reservation->getServiceCollection(); foreach ($this->_services as $service) { $serviceCollection->add($service); } $reservation->setStatus($reservation::STATUS_NEW); $reservation->save(); return $reservation; }
public function updateReservationFromEvent(Google_Event $event) { $this->_reservation->setFinalVisitTime(DateTime::create($event->getStart()->getDateTime())->getTimestamp()); $this->_reservation->setVisitEndTime(DateTime::create($event->getEnd()->getDateTime())->getTimestamp()); }