Commit c8b577a7 authored by alissonalbuquerque's avatar alissonalbuquerque
Browse files

feat(ValidTotalTime): add tratamento pra mensagem de validação

parent 4ab84ea1
...@@ -570,7 +570,7 @@ class TaskTime extends Model ...@@ -570,7 +570,7 @@ class TaskTime extends Model
$diff = $date_time_end->diff($date_time_start); $diff = $date_time_end->diff($date_time_start);
$total_hours = $total_hours + $diff->h; $total_hours = $total_hours + $diff->h;
$total_minutes = $total_minutes + $diff->m; $total_minutes = $total_minutes + $diff->i;
} }
$date_interval = new DateInterval("PT{$total_hours}H{$total_minutes}M"); $date_interval = new DateInterval("PT{$total_hours}H{$total_minutes}M");
...@@ -578,6 +578,15 @@ class TaskTime extends Model ...@@ -578,6 +578,15 @@ class TaskTime extends Model
return $date_interval; return $date_interval;
} }
/**
* @return integer
*/
public static function date_interval_to_minutes(DateInterval $date_interval) {
[$days_to_minutes, $hours_to_minutes, $minutes] = [($date_interval->d * 24 * 60), ($date_interval->h * 60), ($date_interval->i * 1)];
return $days_to_minutes + $hours_to_minutes + $minutes;
}
/** /**
* @param DateTime $dateTimeX * @param DateTime $dateTimeX
* @param DateTime $dateTimeY * @param DateTime $dateTimeY
......
...@@ -107,13 +107,15 @@ class ValidationLimitTime implements Rule ...@@ -107,13 +107,15 @@ class ValidationLimitTime implements Rule
*/ */
public function passes($attribute, $value) public function passes($attribute, $value)
{ {
//--------------------------------------------------------------
$date_time_start = new DateTime($this->taskTime->start_time); $date_time_start = new DateTime($this->taskTime->start_time);
$date_time_end = new DateTime($this->taskTime->end_time); $date_time_end = new DateTime($this->taskTime->end_time);
/** @var DateInternal|null */ /** @var DateInternal|null */
$diff = $date_time_end->diff($date_time_start); $diff = $date_time_end->diff($date_time_start);
[$hours, $minutes] = [$diff->h, $diff->m]; [$hours, $minutes] = [$diff->h, $diff->i];
$new_model_date_interval = new DateInterval("PT{$hours}H{$minutes}M"); $new_model_date_interval = new DateInterval("PT{$hours}H{$minutes}M");
...@@ -123,9 +125,9 @@ class ValidationLimitTime implements Rule ...@@ -123,9 +125,9 @@ class ValidationLimitTime implements Rule
$date_interval = TaskTime::sum_interval_times($this->taskTimes); $date_interval = TaskTime::sum_interval_times($this->taskTimes);
[$date_interval_days, $date_interval_hours, $date_interval_minutes] = [$date_interval->d, $date_interval->h, $date_interval->m]; [$date_interval_days, $date_interval_hours, $date_interval_minutes] = [$date_interval->d, $date_interval->h, $date_interval->i];
[$new_model_days, $new_model_hours, $new_model_minutes] = [$new_model_date_interval->d, $new_model_date_interval->h, $new_model_date_interval->m]; [$new_model_days, $new_model_hours, $new_model_minutes] = [$new_model_date_interval->d, $new_model_date_interval->h, $new_model_date_interval->i];
$date_interval_days = $date_interval_days + $new_model_days; $date_interval_days = $date_interval_days + $new_model_days;
$date_interval_hours = $date_interval_hours + $new_model_hours; $date_interval_hours = $date_interval_hours + $new_model_hours;
...@@ -133,10 +135,12 @@ class ValidationLimitTime implements Rule ...@@ -133,10 +135,12 @@ class ValidationLimitTime implements Rule
$date_interval = new DateInterval("P{$date_interval_days}DT{$date_interval_hours}H{$date_interval_minutes}M"); $date_interval = new DateInterval("P{$date_interval_days}DT{$date_interval_hours}H{$date_interval_minutes}M");
//Fix validação //--------------------------------------------------------------
dd($limit_date_interval <=> $date_interval);
return $limit_date_interval <=> $date_interval; $limit_minutes = TaskTime::date_interval_to_minutes($limit_date_interval);
$interval_minutes = TaskTime::date_interval_to_minutes($date_interval);
return $limit_minutes >= $interval_minutes;
} }
/** /**
...@@ -146,23 +150,60 @@ class ValidationLimitTime implements Rule ...@@ -146,23 +150,60 @@ class ValidationLimitTime implements Rule
*/ */
public function message() public function message()
{ {
$limitDateTime = new DateTime($this->limit_hours); //--------------------------------------------------------------
$date_time_start = new DateTime($this->taskTime->start_time);
$date_time_end = new DateTime($this->taskTime->end_time);
/** @var DateInternal|null */
$diff = $date_time_end->diff($date_time_start);
[$hours, $minutes] = [$diff->h, $diff->i];
$new_model_date_interval = new DateInterval("PT{$hours}H{$minutes}M");
//--------------------------------------------------------------
$limit_date_interval = $this->limit_date_interval;
$sumDateTime = TaskTime::sumIntervalTimes($this->taskTimes); //--------------------------------------------------------------
$date_interval = TaskTime::sum_interval_times($this->taskTimes);
[$date_interval_days, $date_interval_hours, $date_interval_minutes] = [$date_interval->d, $date_interval->h, $date_interval->i];
[$new_model_days, $new_model_hours, $new_model_minutes] = [$new_model_date_interval->d, $new_model_date_interval->h, $new_model_date_interval->i];
$date_interval_days = $date_interval_days + $new_model_days;
$date_interval_hours = $date_interval_hours + $new_model_hours;
$date_interval_minutes = $date_interval_minutes + $new_model_minutes;
$date_interval = new DateInterval("P{$date_interval_days}DT{$date_interval_hours}H{$date_interval_minutes}M");
//--------------------------------------------------------------
dd([
'limite' => $limit_date_interval,
'total' => $date_interval
]);
// $limitDateTime = new DateTime($this->limit_hours);
// $sumDateTime = TaskTime::sumIntervalTimes($this->taskTimes);
$diffInterval = $sumDateTime->diff($limitDateTime); // $diffInterval = $sumDateTime->diff($limitDateTime);
$dateTime = new DateTime('00:00:00'); // $dateTime = new DateTime('00:00:00');
$dateTime->add($diffInterval); // $dateTime->add($diffInterval);
$diff_time = $dateTime->format('H:i'); // $diff_time = $dateTime->format('H:i');
$taskTime = $this->createTaskTime(); // $taskTime = $this->createTaskTime();
$interval_time = $taskTime->intervalTime('H:i'); // $interval_time = $taskTime->intervalTime('H:i');
$msgError = "Carga horária disponível restante: {$diff_time} hora(s)!"; // $msgError = "Carga horária disponível restante: {$diff_time} hora(s)!";
$msgError .= $diff_time == "00:00"? " Atividade Indisponível!" : " Intervalo entre inicio e fim : {$interval_time} hora(s)!"; // $msgError .= $diff_time == "00:00"? " Atividade Indisponível!" : " Intervalo entre inicio e fim : {$interval_time} hora(s)!";
return $msgError; return $msgError;
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment