Commit 0513ace9 authored by alissonalbuquerque's avatar alissonalbuquerque
Browse files

feat(task-time): add validações de limite de horário em relação a cadastros do calendário

feat(task-time): remoção de intervalo de tempo para cadastro de horas

feat(task-time): correção de vizualização de atividades cadastradas

feat(task-time): correção na filtragem de tasktimes de acordo com o pad em tela
parent f8605b4d
...@@ -104,6 +104,7 @@ class TaskTimeController extends Controller ...@@ -104,6 +104,7 @@ class TaskTimeController extends Controller
'user_pad_id' => $request->get('user_pad_id'), 'user_pad_id' => $request->get('user_pad_id'),
'tarefa_id' => $request->get('tarefa_id'), 'tarefa_id' => $request->get('tarefa_id'),
'type' => $request->get('type'), 'type' => $request->get('type'),
'weekday' => $request->get('weekday'),
'start_time' => $request->get('start_time'), 'start_time' => $request->get('start_time'),
'end_time' => $request->get('end_time'), 'end_time' => $request->get('end_time'),
]; ];
......
...@@ -30,6 +30,7 @@ use App\Models\Tabelas\Pesquisa\PesquisaOrientacao; ...@@ -30,6 +30,7 @@ use App\Models\Tabelas\Pesquisa\PesquisaOrientacao;
use App\Models\Tabelas\Pesquisa\PesquisaOutros; use App\Models\Tabelas\Pesquisa\PesquisaOutros;
use App\Rules\ValidationGreaterThanTime; use App\Rules\ValidationGreaterThanTime;
use App\Rules\ValidationLimitTime; use App\Rules\ValidationLimitTime;
use App\Rules\ValidationRangeTime;
use Carbon\Carbon; use Carbon\Carbon;
use DateInterval; use DateInterval;
use DateTime; use DateTime;
...@@ -72,7 +73,7 @@ class TaskTime extends Model ...@@ -72,7 +73,7 @@ class TaskTime extends Model
CONST TYPE_GESTAO_OUTROS = 24; CONST TYPE_GESTAO_OUTROS = 24;
CONST WEEK_HOUR = 0; CONST WEEK_HOUR = 0;
CONST WEEK_DAY_SUNDAY = 1; CONST WEEK_DAY_SUNDAY = 1; // Não Utilizado
CONST WEEK_DAY_MONDAY = 2; CONST WEEK_DAY_MONDAY = 2;
CONST WEEK_DAY_TUESDAY = 3; CONST WEEK_DAY_TUESDAY = 3;
CONST WEEK_DAY_WEDNESDAY = 4; CONST WEEK_DAY_WEDNESDAY = 4;
...@@ -93,7 +94,7 @@ class TaskTime extends Model ...@@ -93,7 +94,7 @@ class TaskTime extends Model
'type' => ['required', 'integer', Rule::in(array_keys(self::listTaskTypes()))], 'type' => ['required', 'integer', Rule::in(array_keys(self::listTaskTypes()))],
'weekday' => ['required', 'integer', Rule::in(array_keys(self::listWeekDays()))], 'weekday' => ['required', 'integer', Rule::in(array_keys(self::listWeekDays()))],
'start_time' => ['required', 'date_format:H:i', 'before:end_time'], 'start_time' => ['required', 'date_format:H:i', 'before:end_time'],
'end_time' => ['required', 'date_format:H:i', 'after:start_time', new ValidationLimitTime($attributes)], 'end_time' => ['required', 'date_format:H:i', 'after:start_time', new ValidationLimitTime($attributes), new ValidationRangeTime($attributes)],
]; ];
} }
...@@ -360,6 +361,13 @@ class TaskTime extends Model ...@@ -360,6 +361,13 @@ class TaskTime extends Model
// - - - - - - - - - - // - - - - - - - - - -
} }
/**
* @return string
*/
public function getWeekdayAsText() {
return $this->listWeekDays($this->weekday);
}
/** /**
* @return string * @return string
*/ */
......
...@@ -87,12 +87,6 @@ class ValidationLimitTime implements Rule ...@@ -87,12 +87,6 @@ class ValidationLimitTime implements Rule
$this->outLineTime = $totalDateTime->diff($limitDateTime); $this->outLineTime = $totalDateTime->diff($limitDateTime);
// dd([
// 'limite' => $limitDateTime,
// 'total' => $totalDateTime,
// 'interval' => $this->outLineTime
// ]);
return $limitDateTime >= $totalDateTime; return $limitDateTime >= $totalDateTime;
} }
......
<?php
namespace App\Rules;
use App\Models\TaskTime;
use Illuminate\Contracts\Validation\Rule;
class ValidationRangeTime implements Rule
{
/** @var string|integer */
protected $id;
/** @var string|integer */
protected $user_pad_id;
/** @var string|integer */
protected $tarefa_id;
/** @var string|integer */
protected $type;
/** @var string|integer */
protected $weekday;
/** @var string|date */
protected $start_time;
/** @var string|date */
protected $end_time;
/** @var TaskTime */
protected $taskTime;
/**
* Create a new rule instance.
*
* @return void
*/
public function __construct($attributes = [])
{
$this->id = $attributes['id'];
$this->user_pad_id = $attributes['user_pad_id'];
$this->tarefa_id = $attributes['tarefa_id'];
$this->type = $attributes['type'];
$this->weekday = $attributes['weekday'];
$this->start_time = $attributes['start_time'];
$this->end_time = $attributes['end_time'];
}
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
$start_time = "{$this->start_time}:00";
$end_time = "{$this->end_time}:00";
$taskTimeQuery =
TaskTime::whereUserPadId($this->user_pad_id)
->whereWeekday($this->weekday)
->where(
function($query) use ($start_time, $end_time) {
$query->whereBetween('start_time', [$start_time, $end_time]);
$query->orWhereBetween('end_time', [$start_time, $end_time]);
}
);
if(isset($this->id)) {
$taskTimeQuery->where('id', '!=', $this->id);
}
$this->taskTime = $taskTimeQuery->first();
return !$taskTimeQuery->exists();
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return "Não é possivel utilizar o horário, ele está sendo preenchido por \"{$this->taskTime->getCode()} : {$this->taskTime->getName()}\" !";
}
}
...@@ -33,11 +33,10 @@ ...@@ -33,11 +33,10 @@
$max_len_column = 0; $max_len_column = 0;
foreach (array_keys(TaskTime::listWeekDays()) as $weekday) { foreach (array_keys(TaskTime::listWeekDays()) as $weekday) {
$weekColumns[$weekday] = $weekColumn = TaskTime::whereUserPadId($user_pad_id)->whereWeekday($weekday)->orderBy('start_time', 'ASC')->get();
TaskTime::whereWeekday($weekday)
->orderBy('start_time', 'ASC') $weekColumns[$weekday] = $weekColumn->isNotEmpty() ? $weekColumn : collect(['--']);
->get();
if(count($weekColumns[$weekday]) > $max_len_column) { if(count($weekColumns[$weekday]) > $max_len_column) {
$max_len_column = count($weekColumns[$weekday]); $max_len_column = count($weekColumns[$weekday]);
...@@ -47,7 +46,6 @@ ...@@ -47,7 +46,6 @@
foreach (range(0, $max_len_column-1) as $i) { foreach (range(0, $max_len_column-1) as $i) {
$row = []; $row = [];
foreach (array_keys(TaskTime::listWeekDays()) as $weekday) { foreach (array_keys(TaskTime::listWeekDays()) as $weekday) {
isset($weekColumns[$weekday][$i]) ? array_push($row, $weekColumns[$weekday][$i]) : array_push($row, null); isset($weekColumns[$weekday][$i]) ? array_push($row, $weekColumns[$weekday][$i]) : array_push($row, null);
} }
$calendar[] = $row; $calendar[] = $row;
...@@ -55,8 +53,7 @@ ...@@ -55,8 +53,7 @@
@endphp @endphp
<div class="my-4"> <div class="my-4">
<table class="table table-hover table-borderless">
<table class="table table-hover">
<thead> <thead>
<tr> <tr>
@foreach(TaskTime::listWeekDays() as $key => $weekday) @foreach(TaskTime::listWeekDays() as $key => $weekday)
...@@ -71,21 +68,28 @@ ...@@ -71,21 +68,28 @@
@if($model !== null) @if($model !== null)
<td> <td>
<div class="card"> @if($model instanceof TaskTime)
<div class="card-header"> <div class="card">
<p class="text-center"> <i class="bi bi-clock"></i> {{ $model->formatStartTime() }} </p> <div class="card-header">
</div> <p class="text-center"> <i class="bi bi-clock"></i> {{ $model->formatStartTime() }} </p>
<div class="card-body"> </div>
<div class="text-center"> <div class="card-body">
<a href="#modal" class="btn btn-edit_task" id="{{ $model->id }}"> <div class="text-center">
{{ "{$model->getCode()} : {$model->getName()}" }} <i class="bi bi-pencil"></i> <a href="#modal" class="btn btn-edit_task" id="{{ $model->id }}">
</a> {{ "{$model->getCode()} : {$model->getName()}" }} <i class="bi bi-pencil"></i>
</a>
{{-- --}}
<p class="text-center"> </i> DIA: {{ $model->getWeekdayAsText() }} </p>
{{-- --}}
</div>
</div>
<div class="card-header">
<p class="text-center"> <i class="bi bi-clock-fill"></i> {{ $model->formatEndTime() }} </p>
</div> </div>
</div> </div>
<div class="card-header"> @else
<p class="text-center"> <i class="bi bi-clock-fill"></i> {{ $model->formatEndTime() }} </p>
</div> @endif
</div>
</td> </td>
@endif @endif
......
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