public function rent() { global $config; $maxUmb = $config['max']; $FUmbrella = new FUmbrella(); $USession = new USession(); $view = new VRent(); $row = intval($view->getRow()); $number = intval($view->getNumber()); $start = $view->getStartDate(); $end = $view->getEndDate(); $owner = new DPerson($USession->getValue('name'), $USession->getValue('surname'), $USession->getValue('ssn'), $USession->getValue('phone')); $flag = true; $FRate = new FRate(); $FRent = new FRent(); $today = new DateTime('now'); $numUmb = $FRent->getNumRent($USession->getValue('ssn'), $today->format('y-m-d')); $season = false; //$seasonRate = $FRate->getSeasonRates(); // tariffa stagionale $startSeason = new DateTime($config['season_start']); $endSeason = new DateTime($config['season_end']); try { if ($start == 'STAGIONE' && $end == 'STAGIONE') { $t = clone $startSeason; $end = $endSeason; $t->add(new DateInterval('P20D')); // data massima per stagionale if ($today > $t) { $start = $today; } else { $start = $startSeason; $season = true; } } else { $start = new DateTime($start); $end = new DateTime($end); if ($start < new DateTime('yesterday') || $end < new DateTime('yesterday')) { $flag = false; } } $FUmbrella = new FUmbrella(); $umbrella = $FUmbrella->loadUmbrella($row, $number); if (!$umbrella) { $flag = false; } if (!$FUmbrella->isFree($start->format('y-m-d'), $end->format('y-m-d'), $umbrella)) { $flag = false; } if (!($FRate->isInSeason($start->format('y-m-d')) && $FRate->isInSeason($end->format('y-m-d')))) { $flag = false; } if ($end < $start) { $flag = false; } if ($numUmb >= $maxUmb) { $flag = false; } } catch (Exception $e) { $flag = false; } if ($flag) { $t = clone $startSeason; $t->add(new DateInterval('P20D')); // data entro la quale è stagionale $t1 = clone $end; $t1->add(new DateInterval('P10D')); if ($start <= $t && $t1 >= $endSeason) { $season = true; } if (!$season) { $rates = $FRate->getRateByLine($start->format('y-m-d'), $end->format('y-m-d'), $umbrella->getRow()); // array di tariffe da considerare $period = date_diff($start, $end); $period = $period->format('%a') + 1; // periodo in giorni richiesto dal cliente $tar = count($rates); if ($tar > 0) { // il peirodo scelto appartiene ad una sola tariffa(periodo) $this->getRateArray($rates, $period, $start, $owner, $umbrella); } else { $rates = $FRate->getOtherRateByLine($start->format('y-m-d'), $end->format('y-m-d'), $umbrella->getRow()); foreach ($rates as $r) { $f = true; if ($r[0]->getStartPeriod() <= $start) { $period = date_diff($start, $r[0]->getEndPeriod()); $period = $period->format('%a') + 1; $this->getRateArray($r, $period, $start, $owner, $umbrella); $f = false; } if ($end <= $r[0]->getEndPeriod()) { $period = date_diff($r[0]->getStartPeriod(), $end); $period = $period->format('%a') + 1; $this->getRateArray($r, $period, $r[0]->getStartPeriod(), $owner, $umbrella); $f = false; } if ($f) { $period = date_diff($r[0]->getStartPeriod(), $r[0]->getEndPeriod()); $period = $period->format('%a') + 1; $this->getRateArray($r, $period, $r[0]->getStartPeriod(), $owner, $umbrella); } } // fine foreach } // fine else echo '0'; } else { $price = $seasonRate[$umbrella->getRow()]->getPrice(); $Rent = new DRent($owner, $umbrella, false, $price, new DateTime($config['season_start']), new DateTime($config['season_end'])); $FRent->saveRent($Rent); echo '0'; } } else { echo 'error'; } // codice se nel caso i dati arrivati sono sbagliati }
public function getRentList() { global $config; $view = new VAdmin(); $start = $view->getStartDate(); // data iniziale $end = $view->getEndDate(); // data finale $row = intval($view->getRow()); // fila $number = intval($view->getNumber()); // numero $FRate = new FRate(); $FRent = new FRent(); $FUmbrella = new FUmbrella(); $season = false; $flag = true; $umb; //$seasonRates = $FRate->getSeasonRates(); // torna la tariffa stagionale(array) $startSeason = new DateTime($config['season_start']); $endSeason = new DateTime($config['season_end']); $template = false; if ($start == 'STAGIONE' && $end == 'STAGIONE') { $start = $startSeason; $end = $endSeason; $season = true; } if (!$season) { try { $start = new DateTime($start); $end = new DateTime($end); if ($end < $start) { $flag = false; } } catch (Exception $e) { $flag = false; } if ($flag) { if (!($FRate->isInSeason($start->format('y-m-d')) && $FRate->isInSeason($end->format('y-m-d')))) { // date fuori stagione $template = true; } } } if ($flag) { $FUmbrella = new FUmbrella(); $umb = $FUmbrella->loadUmbrella($row, $number); if (!$umb) { $flag = false; } } if ($flag && !$template) { $f = $FRent->getRentByPeriod($start, $end, $umb); // array delle prenotazioni $view->setData('rent_list', $f); $html = $view->fetch('rent_list.tpl'); echo $html; } else { if (!$flag) { echo 'error'; } elseif ($template) { $view->setData('sdate', $startSeason->format('d-m-Y')); $view->setData('edate', $endSeason->format('d-m-Y')); $html = $view->fetch('season_closed.tpl'); echo $html; } } }