Trabalhando com Datas no PHP - #2 Construindo um sistema de locação veicular
13/05/2019No vídeo de hoje continuaremos a última aula trabalhando com datas no PHP. Para isso realizaremos a criaçao de um sistema de locação veícular.
Formulário de locação veícular
No nosso HTML vamos criar um formulário simples com a data de entrada e de saída e os horários de entrada e saída:
<!doctype html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Car Location</title>
</head>
<body>
<form name="formLocation" id="formLocation" action="controllers/controllerLocation.php" method="post">
Entry date: <input type="date" name="entryDate" id="entryDate" required> - <input type="time" name="entryTime" id="entryTime" required><br>
Departure date: <input type="date" name="departureDate" id="departureDate" required> - <input type="time" name="departureTime" id="departureTime" required><br>
<input type="submit" value="Rent">
</form>
</body>
</html>
Controller
Os dados do formulário serão recepcionados no controllerLocation. Nesse controller também faremos a instância da ClassDate.
<?php
include ("../classes/ClassDate.php");
$entryDate=filter_input(INPUT_POST,'entryDate',FILTER_SANITIZE_STRING);
$entryTime=filter_input(INPUT_POST,'entryTime',FILTER_SANITIZE_STRING);
$entryFinal=$entryDate.' '.$entryTime;
$departureDate=filter_input(INPUT_POST,'departureDate',FILTER_SANITIZE_STRING);
$departureTime=filter_input(INPUT_POST,'departureTime',FILTER_SANITIZE_STRING);
$departureFinal=$departureDate.' '.$departureTime;
$objDate=new ClassDate($entryFinal,$departureFinal);
echo $objDate->getLocation();
Repare que no código acima nós criamos uma variável Final pra concatenar a data e o horário vindos do formulário no formato YYYY-mm-dd HH:ii
ClassDate
Por fim, vamos criar a nossa ClassDate que fará a verificação dos horários e datas e exibirá para o usuário o valor final.
<?php
class ClassDate{
private $entryDate;
private $departureDate;
private $dateDiff;
#Prices
private $yearValue=15000;
private $monthValue=1800;
private $dayValue=60;
private $hourValue=5;
#Construct
public function __construct($entryFinal,$departureFinal)
{
$this->entryFinal=new DateTime($entryFinal, new DateTimeZone("America/Sao_Paulo"));
$this->departureFinal=new DateTime($departureFinal, new DateTimeZone("America/Sao_Paulo"));
$this->dateDiff=$this->entryFinal->diff($this->departureFinal);
}
#Get location
public function getLocation()
{
$finalValue=0;
$msg="";
if($this->dateDiff->y > 0){
$finalValue+=$this->dateDiff->y * $this->yearValue;
$msg.=" ".$this->dateDiff->y." years";
}
if($this->dateDiff->m > 0){
$finalValue+=$this->dateDiff->m * $this->monthValue;
$msg.=" ".$this->dateDiff->m." month";
}
if($this->dateDiff->d > 0){
$finalValue+=$this->dateDiff->d * $this->dayValue;
$msg.=" ".$this->dateDiff->d." days";
}
if($this->dateDiff->h > 0){
$finalValue+=$this->dateDiff->h * $this->hourValue;
$msg.=" ".$this->dateDiff->h." hours";
}
if($this->dateDiff->i > 30){
$finalValue+=$this->hourValue;
$msg.=" ".$this->dateDiff->i." minutes";
}
return "
<h1>Diária</h1><hr>
Você selecionou o período de {$msg} <br>
Você deverá pagar: <br>
<strong>{$finalValue}</strong>,00
";
}
}
Sucesso nos códigos e na vida!
Posts Relacionados
Trabalhando com Datas no PHP - #1 Entendendo a classe DateTime
No tutorial de hoje trabalharemos com a manipulação de datas no PHP. Iremos ver a forma procedural e orientada a objetos.
Trabalhando com Datas no PHP - #3 Construindo um sistema de mensalidades
Nessa vídeo-aula vamos trabalhar com um sistema de controle de mensalidades com verificação diária e envio de mensagens via email utilizando CRON.