#62 - vacation request list for approvers (#69)

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* #5 - bump dependencies

* #43 - wip

* #43 - add composer script

* #43 - fix

* #43 - fix

* #43 - wip

* #43 - ecs fix

* #43 - cr fix

* #43 - cr fix

* #43 - fix

* #62 - wip

* #62 - wip

* #62 - wip

* #62 - fix

* #62 - fix

* #62 - fix

* #62 - fix

* #62 - fix

* #62 - ecs fix

Co-authored-by: EwelinaLasowy <ewelina.lasowy@blumilk.pl>
This commit is contained in:
Adrian Hopek
2022-03-08 09:25:24 +01:00
committed by GitHub
parent af6f747aa2
commit db4be79c91
28 changed files with 753 additions and 146 deletions

View File

@@ -35,10 +35,18 @@ class DashboardController extends Controller
)
->get();
$vacationRequests = VacationRequest::query()
->latest("updated_at")
->limit(3)
->get();
if ($user->can("listAll", VacationRequest::class)) {
$vacationRequests = VacationRequest::query()
->states(VacationRequestStatesRetriever::waitingForUserActionStates($user))
->latest("updated_at")
->limit(3)
->get();
} else {
$vacationRequests = $user->vacationRequests()
->latest("updated_at")
->limit(3)
->get();
}
$holidays = Holiday::query()
->whereDate("date", ">=", $now)
@@ -63,6 +71,9 @@ class DashboardController extends Controller
"pending" => $pending,
"other" => $other,
],
"can" => [
"listAllVacationRequests" => $user->can("listAll", VacationRequest::class),
],
]);
}
}

View File

@@ -40,7 +40,7 @@ class VacationRequestController extends Controller
->with("vacations")
->where("year_period_id", $yearPeriodRetriever->selected()->id)
->latest()
->states(VacationRequestStatesRetriever::filterByStatus($status))
->states(VacationRequestStatesRetriever::filterByStatusGroup($status, $request->user()))
->paginate();
return inertia("VacationRequest/Index", [
@@ -51,6 +51,45 @@ class VacationRequestController extends Controller
]);
}
public function indexForApprovers(
Request $request,
YearPeriodRetriever $yearPeriodRetriever,
): RedirectResponse|Response {
if ($request->user()->cannot("listAll", VacationRequest::class)) {
return redirect()->route("vacation.requests.index");
}
$yearPeriod = $yearPeriodRetriever->selected();
$status = $request->get("status");
$user = $request->get("user");
$vacationRequests = VacationRequest::query()
->with(["user", "vacations"])
->where("year_period_id", $yearPeriod->id)
->when($user !== null, fn(Builder $query) => $query->where("user_id", $user))
->when($status !== null, fn(Builder $query) => $query->states(VacationRequestStatesRetriever::filterByStatusGroup($status, $request->user())))
->latest()
->paginate();
$users = User::query()
->whereRelation(
"vacationlimits",
fn(Builder $query) => $query->where("year_period_id", $yearPeriod->id)->whereNotNull("days"),
)
->orderBy("last_name")
->orderBy("first_name")
->get();
return inertia("VacationRequest/IndexForApprovers", [
"requests" => VacationRequestResource::collection($vacationRequests),
"users" => UserResource::collection($users),
"filters" => [
"status" => $status,
"user" => $user,
],
]);
}
/**
* @throws AuthorizationException
*/

View File

@@ -7,6 +7,7 @@ namespace Toby\Infrastructure\Http\Middleware;
use Illuminate\Http\Request;
use Inertia\Middleware;
use Toby\Eloquent\Helpers\YearPeriodRetriever;
use Toby\Eloquent\Models\VacationRequest;
use Toby\Infrastructure\Http\Resources\UserResource;
class HandleInertiaRequests extends Middleware
@@ -25,6 +26,7 @@ class HandleInertiaRequests extends Middleware
"can" => [
"manageVacationLimits" => $user ? $user->can("manageVacationLimits") : false,
"manageUsers" => $user ? $user->can("manageUsers") : false,
"listAllVacationRequests" => $user ? $user->can("listAll", VacationRequest::class) : false,
],
],
"flash" => fn() => [

View File

@@ -13,7 +13,7 @@ class VacationRequestActivityResource extends JsonResource
public function toArray($request): array
{
return [
"date" => $this->created_at->toDisplayDate(),
"date" => $this->created_at->toDisplayString(),
"time" => $this->created_at->format("H:i"),
"user" => $this->user ? $this->user->fullName : __("System"),
"state" => $this->to,