private function buildQuote(Equipment $equipment, Rate $rate, RentalPeriod $requestedPeriod)
 {
     /** @var RentalPeriod $requestedPeriod */
     /** @var Rate $rate */
     $quantity = ceil($requestedPeriod->getDayCount() / $rate->getUnitDays());
     $quote = new RateQuote($equipment);
     $quote->add(RateQuoteLineItem::make($rate, $quantity));
     return $quote;
 }
 public function add(RateQuoteLineItem $newLineItem)
 {
     /** @var RateQuoteLineItem $lineItem */
     foreach ($this->lineItems as $lineItem) {
         if ($lineItem->getRate() === $newLineItem->getRate()) {
             $lineItem->modifyQuantity($newLineItem->getQuantity());
             return;
         }
     }
     $this->lineItems[] = $newLineItem;
 }
 public function getQuotesFor(RentalQuery $query)
 {
     $rateQuote = new RateQuote($query->getEquipment());
     $dayCount = $query->getTotalDayCount();
     while ($dayCount > 0) {
         $rate = $this->getBestRateForDays($query->getApplicableRates(), $dayCount);
         $rateQuote->add(RateQuoteLineItem::make($rate, 1));
         $dayCount -= $rate->getUnitDays();
     }
     return [$rateQuote];
 }