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 setTimeOverlapsWith(MedOptima_DateTime $fromDateTime, MedOptima_DateTime $toDateTime) { $from = $fromDateTime->getTimestamp(); $to = $toDateTime->getTimestamp(); $firstOr = new RM_Query_Where(); $firstOr->add('finalVisitTime', '<=', $from)->add('visitEndTime', '>', $from); $secondOr = new RM_Query_Where(); $secondOr->add('finalVisitTime', '<', $to)->add('visitEndTime', '>', $to); $thirdOr = new RM_Query_Where(); $thirdOr->add('finalVisitTime', '>=', $from)->add('finalVisitTime', '<', $to); $fourthOr = new RM_Query_Where(); $fourthOr->add('visitEndTime', '>', $from)->add('visitEndTime', '<', $to); $where = new RM_Query_Where(); $where->addSubOr($firstOr)->addSubOr($secondOr)->addSubOr($thirdOr)->addSubOr($fourthOr); $this->_getWhere()->addSub($where); }