phases one of time logged now with log display

This commit is contained in:
Mark Gregory
2026-06-22 12:53:56 +01:00
parent c1a9d0de27
commit 052bae718e
231 changed files with 15113 additions and 12891 deletions
@@ -1,24 +1,57 @@
<x-layouts::app :title="__('Validation Rules')">
<div class="space-y-6">
<x-wms.page-hero
eyebrow="Administration"
title="Validation Rules"
<x-wms.page-hero eyebrow="Administration" title="Validation Rules"
description="Configure warehouse validation controls, severity levels and operational rule keys."
icon="fa-solid fa-shield-halved"
/>
icon="fa-solid fa-shield-halved" />
<div class="rounded-3xl bg-white p-6 shadow-sm ring-1 ring-zinc-200 dark:bg-zinc-900 dark:ring-zinc-800">
<h2 class="text-lg font-bold text-zinc-900 dark:text-white">Add validation rule</h2>
<form method="POST" action="{{ route('warehouse-rules.store') }}" class="mt-5 grid gap-4 md:grid-cols-6">
@csrf
<select name="warehouse_id" class="rounded-xl border-zinc-300 dark:border-zinc-700 dark:bg-zinc-950">@foreach($warehouses as $warehouse)<option value="{{ $warehouse->id }}">{{ $warehouse->name }}</option>@endforeach</select>
<input name="name" placeholder="Rule name" class="rounded-xl border-zinc-300 dark:border-zinc-700 dark:bg-zinc-950" required>
<input name="rule_key" placeholder="stock.location.required" class="rounded-xl border-zinc-300 dark:border-zinc-700 dark:bg-zinc-950" required>
<select name="severity" class="rounded-xl border-zinc-300 dark:border-zinc-700 dark:bg-zinc-950"><option>error</option><option>warning</option><option>blocker</option><option>info</option></select>
<input name="configuration" placeholder='{"min": 1}' class="rounded-xl border-zinc-300 dark:border-zinc-700 dark:bg-zinc-950">
<button class="rounded-xl bg-zinc-900 px-4 py-2 font-semibold text-white dark:bg-white dark:text-zinc-900">Add rule</button>
<select name="warehouse_id" class="rounded-xl border-zinc-300 dark:border-zinc-700 dark:bg-zinc-950">
@foreach ($warehouses as $warehouse)
<option value="{{ $warehouse->id }}">{{ $warehouse->name }}</option>
@endforeach
</select>
<input name="name" placeholder="Rule name"
class="rounded-xl border-zinc-300 dark:border-zinc-700 dark:bg-zinc-950" required>
<input name="rule_key" placeholder="stock.location.required"
class="rounded-xl border-zinc-300 dark:border-zinc-700 dark:bg-zinc-950" required>
<select name="severity" class="rounded-xl border-zinc-300 dark:border-zinc-700 dark:bg-zinc-950">
<option>error</option>
<option>warning</option>
<option>blocker</option>
<option>info</option>
</select>
<input name="configuration" placeholder='{"min": 1}'
class="rounded-xl border-zinc-300 dark:border-zinc-700 dark:bg-zinc-950">
<button
class="rounded-xl bg-zinc-900 px-4 py-2 font-semibold text-white dark:bg-white dark:text-zinc-900">Add
rule</button>
</form>
</div>
<div class="overflow-x-auto rounded-2xl bg-white shadow-sm ring-1 ring-zinc-200 dark:bg-zinc-900 dark:ring-zinc-800"><table class="min-w-full text-sm"><thead><tr class="border-b"><th class="p-4 text-left">Warehouse</th><th class="p-4 text-left">Rule</th><th class="p-4 text-left">Key</th><th class="p-4 text-left">Severity</th></tr></thead><tbody>@foreach($rules as $rule)<tr class="border-b border-zinc-100 dark:border-zinc-800"><td class="p-4">{{ $rule->warehouse->name }}</td><td class="p-4 font-semibold">{{ $rule->name }}</td><td class="p-4"><code>{{ $rule->rule_key }}</code></td><td class="p-4">{{ $rule->severity }}</td></tr>@endforeach</tbody></table></div>
<div
class="overflow-x-auto rounded-2xl bg-white shadow-sm ring-1 ring-zinc-200 dark:bg-zinc-900 dark:ring-zinc-800">
<table class="min-w-full text-sm">
<thead>
<tr class="border-b">
<th class="p-4 text-left">Warehouse</th>
<th class="p-4 text-left">Rule</th>
<th class="p-4 text-left">Key</th>
<th class="p-4 text-left">Severity</th>
</tr>
</thead>
<tbody>
@foreach ($rules as $rule)
<tr class="border-b border-zinc-100 dark:border-zinc-800">
<td class="p-4">{{ $rule->warehouse->name }}</td>
<td class="p-4 font-semibold">{{ $rule->name }}</td>
<td class="p-4"><code>{{ $rule->rule_key }}</code></td>
<td class="p-4">{{ $rule->severity }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
{{ $rules->links() }}
</div>
</x-layouts::app>
@@ -1,23 +1,35 @@
<x-layouts::app :title="__('WMS Dashboard')">
<div class="space-y-6">
<x-wms.page-hero
eyebrow="MPBA WMS"
:title="auth()->user()->company->name"
<x-wms.page-hero eyebrow="MPBA WMS" :title="auth()->user()->company->name"
description="Tenant warehouse dashboard for operational status, warehouse coverage and validation readiness."
:stats="[
['label' => 'Warehouses', 'value' => $warehouses->count(), 'icon' => 'fa-solid fa-warehouse'],
['label' => 'Status', 'value' => 'Live', 'icon' => 'fa-solid fa-circle-check'],
]"
/>
]" />
<section class="grid gap-4 md:grid-cols-2 xl:grid-cols-3">
@forelse($warehouses as $warehouse)
<article class="rounded-2xl border border-zinc-200 bg-white p-5 shadow-sm dark:border-zinc-800 dark:bg-zinc-900">
<div class="flex items-start justify-between gap-4"><div><p class="text-sm font-semibold text-cyan-600">{{ $warehouse->code }}</p><h2 class="mt-1 text-xl font-bold">{{ $warehouse->name }}</h2></div><span class="rounded-full bg-emerald-100 px-3 py-1 text-xs font-semibold text-emerald-800">{{ $warehouse->status }}</span></div>
<p class="mt-4 text-sm text-zinc-500">{{ $warehouse->validation_rules_count }} validation rules configured.</p>
<article
class="rounded-2xl border border-zinc-200 bg-white p-5 shadow-sm dark:border-zinc-800 dark:bg-zinc-900">
<div class="flex items-start justify-between gap-4">
<div>
<p class="text-sm font-semibold text-cyan-600">{{ $warehouse->code }}</p>
<h2 class="mt-1 text-xl font-bold">{{ $warehouse->name }}</h2>
</div><span
class="rounded-full bg-emerald-100 px-3 py-1 text-xs font-semibold text-emerald-800">{{ $warehouse->status }}</span>
</div>
<p class="mt-4 text-sm text-zinc-500">{{ $warehouse->validation_rules_count }} validation rules
configured.</p>
</article>
@empty
<article class="rounded-2xl border border-dashed border-zinc-300 bg-white p-8 text-center dark:border-zinc-800 dark:bg-zinc-900 md:col-span-2 xl:col-span-3"><h2 class="text-xl font-bold">Create your first warehouse</h2><p class="mt-2 text-zinc-500">Warehouses are isolated to your company tenant.</p><a href="{{ route('warehouses.index') }}" class="mt-5 inline-flex rounded-xl bg-zinc-900 px-4 py-2 font-semibold text-white dark:bg-white dark:text-zinc-900">Add warehouse</a></article>
<article
class="rounded-2xl border border-dashed border-zinc-300 bg-white p-8 text-center dark:border-zinc-800 dark:bg-zinc-900 md:col-span-2 xl:col-span-3">
<h2 class="text-xl font-bold">Create your first warehouse</h2>
<p class="mt-2 text-zinc-500">Warehouses are isolated to your company tenant.</p><a
href="{{ route('warehouses.index') }}"
class="mt-5 inline-flex rounded-xl bg-zinc-900 px-4 py-2 font-semibold text-white dark:bg-white dark:text-zinc-900">Add
warehouse</a>
</article>
@endforelse
</section>
</div>
@@ -1,24 +1,30 @@
<x-layouts::app :title="__('Warehouses')">
<div class="space-y-6">
<x-wms.page-hero
eyebrow="Administration"
title="Warehouses"
<x-wms.page-hero eyebrow="Administration" title="Warehouses"
description="Create and manage warehouse records, tenant ownership and operational locations."
icon="fa-solid fa-warehouse"
/>
icon="fa-solid fa-warehouse" />
<div class="rounded-3xl bg-white p-6 shadow-sm ring-1 ring-zinc-200 dark:bg-zinc-900 dark:ring-zinc-800">
<h2 class="text-lg font-bold text-zinc-900 dark:text-white">Create warehouse</h2>
<form method="POST" action="{{ route('warehouses.store') }}" class="mt-5 grid gap-4 md:grid-cols-4">
@csrf
<input name="code" placeholder="Code" class="rounded-xl border-zinc-300 dark:border-zinc-700 dark:bg-zinc-950" required>
<input name="name" placeholder="Warehouse name" class="rounded-xl border-zinc-300 dark:border-zinc-700 dark:bg-zinc-950" required>
<input name="address" placeholder="Address" class="rounded-xl border-zinc-300 dark:border-zinc-700 dark:bg-zinc-950">
<button class="rounded-xl bg-zinc-900 px-4 py-2 font-semibold text-white dark:bg-white dark:text-zinc-900">Create</button>
<input name="code" placeholder="Code"
class="rounded-xl border-zinc-300 dark:border-zinc-700 dark:bg-zinc-950" required>
<input name="name" placeholder="Warehouse name"
class="rounded-xl border-zinc-300 dark:border-zinc-700 dark:bg-zinc-950" required>
<input name="address" placeholder="Address"
class="rounded-xl border-zinc-300 dark:border-zinc-700 dark:bg-zinc-950">
<button
class="rounded-xl bg-zinc-900 px-4 py-2 font-semibold text-white dark:bg-white dark:text-zinc-900">Create</button>
</form>
</div>
<div class="grid gap-4 md:grid-cols-2 xl:grid-cols-3">
@foreach($warehouses as $warehouse)
<article class="rounded-2xl border border-zinc-200 bg-white p-5 shadow-sm dark:border-zinc-800 dark:bg-zinc-900"><p class="text-sm text-cyan-600">{{ $warehouse->code }}</p><h2 class="mt-1 text-xl font-bold">{{ $warehouse->name }}</h2><p class="mt-3 text-sm text-zinc-500">{{ $warehouse->validation_rules_count }} rules</p></article>
@foreach ($warehouses as $warehouse)
<article
class="rounded-2xl border border-zinc-200 bg-white p-5 shadow-sm dark:border-zinc-800 dark:bg-zinc-900">
<p class="text-sm text-cyan-600">{{ $warehouse->code }}</p>
<h2 class="mt-1 text-xl font-bold">{{ $warehouse->name }}</h2>
<p class="mt-3 text-sm text-zinc-500">{{ $warehouse->validation_rules_count }} rules</p>
</article>
@endforeach
</div>
{{ $warehouses->links() }}