sackey a65fee9d75
Some checks are pending
linter / quality (push) Waiting to run
tests / ci (push) Waiting to run
Add customer portal workflow progress component and analytics dashboard
- Implemented the customer portal workflow progress component with detailed service progress tracking, including current status, workflow steps, and contact information.
- Developed a management workflow analytics dashboard featuring key performance indicators, charts for revenue by branch, labor utilization, and recent quality issues.
- Created tests for admin-only middleware to ensure proper access control for admin routes.
- Added tests for customer portal view rendering and workflow integration, ensuring the workflow service operates correctly through various stages.
- Introduced a .gitignore file for the debugbar storage directory to prevent unnecessary files from being tracked.
2025-08-10 19:41:25 +00:00

213 lines
12 KiB
PHP

<div class="p-6">
<!-- Header -->
<div class="flex flex-col lg:flex-row lg:items-center justify-between space-y-4 lg:space-y-0 mb-6">
<div>
<h1 class="text-2xl font-semibold text-zinc-900 dark:text-white">Create New Branch</h1>
<p class="text-zinc-600 dark:text-zinc-400">Add a new branch location to your network</p>
</div>
<div class="flex items-center space-x-3">
<a href="{{ route('branches.index') }}"
class="inline-flex items-center px-4 py-2 bg-zinc-100 hover:bg-zinc-200 dark:bg-zinc-700 dark:hover:bg-zinc-600 text-zinc-700 dark:text-zinc-300 text-sm font-medium rounded-md transition-colors"
wire:navigate>
<svg class="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 19l-7-7m0 0l7-7m-7 7h18"></path>
</svg>
Back to Branches
</a>
</div>
</div>
<!-- Flash Messages -->
@if(session()->has('error'))
<div class="bg-red-50 dark:bg-red-900/50 border border-red-200 dark:border-red-700 rounded-lg p-4 mb-6">
<div class="text-sm text-red-800 dark:text-red-200">
{{ session('error') }}
</div>
</div>
@endif
<!-- Create Form -->
<div class="bg-white dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 rounded-lg shadow-sm">
<div class="p-6">
<form wire:submit="save">
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<!-- Branch Code -->
<div>
<label for="code" class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">
Branch Code <span class="text-red-500">*</span>
</label>
<input type="text"
wire:model="code"
id="code"
class="w-full rounded-md border-zinc-300 dark:border-zinc-600 dark:bg-zinc-700 dark:text-white shadow-sm focus:border-blue-500 focus:ring-blue-500 @error('code') border-red-500 @enderror"
placeholder="e.g., MAIN, NORTH"
maxlength="10"
style="text-transform: uppercase;">
@error('code')
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
@enderror
</div>
<!-- Branch Name -->
<div>
<label for="name" class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">
Branch Name <span class="text-red-500">*</span>
</label>
<input type="text"
wire:model="name"
id="name"
class="w-full rounded-md border-zinc-300 dark:border-zinc-600 dark:bg-zinc-700 dark:text-white shadow-sm focus:border-blue-500 focus:ring-blue-500 @error('name') border-red-500 @enderror"
placeholder="e.g., Main Branch">
@error('name')
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
@enderror
</div>
<!-- Manager Name -->
<div>
<label for="manager_name" class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">
Manager Name
</label>
<input type="text"
wire:model="manager_name"
id="manager_name"
class="w-full rounded-md border-zinc-300 dark:border-zinc-600 dark:bg-zinc-700 dark:text-white shadow-sm focus:border-blue-500 focus:ring-blue-500 @error('manager_name') border-red-500 @enderror"
placeholder="Branch Manager Name">
@error('manager_name')
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
@enderror
</div>
<!-- Phone -->
<div>
<label for="phone" class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">
Phone Number
</label>
<input type="tel"
wire:model="phone"
id="phone"
class="w-full rounded-md border-zinc-300 dark:border-zinc-600 dark:bg-zinc-700 dark:text-white shadow-sm focus:border-blue-500 focus:ring-blue-500 @error('phone') border-red-500 @enderror"
placeholder="e.g., +1-555-0100">
@error('phone')
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
@enderror
</div>
<!-- Email -->
<div>
<label for="email" class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">
Email Address
</label>
<input type="email"
wire:model="email"
id="email"
class="w-full rounded-md border-zinc-300 dark:border-zinc-600 dark:bg-zinc-700 dark:text-white shadow-sm focus:border-blue-500 focus:ring-blue-500 @error('email') border-red-500 @enderror"
placeholder="branch@company.com">
@error('email')
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
@enderror
</div>
<!-- Status -->
<div>
<label class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">
Status
</label>
<label class="inline-flex items-center">
<input type="checkbox"
wire:model="is_active"
class="rounded border-zinc-300 dark:border-zinc-600 text-blue-600 shadow-sm focus:border-blue-500 focus:ring-blue-500">
<span class="ml-2 text-sm text-zinc-700 dark:text-zinc-300">Branch is active</span>
</label>
</div>
</div>
<!-- Address Section -->
<div class="mt-8">
<h3 class="text-lg font-medium text-zinc-900 dark:text-white mb-4">Address Information</h3>
<div class="grid grid-cols-1 gap-6">
<!-- Address -->
<div>
<label for="address" class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">
Street Address
</label>
<textarea wire:model="address"
id="address"
rows="2"
class="w-full rounded-md border-zinc-300 dark:border-zinc-600 dark:bg-zinc-700 dark:text-white shadow-sm focus:border-blue-500 focus:ring-blue-500 @error('address') border-red-500 @enderror"
placeholder="Enter street address"></textarea>
@error('address')
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
@enderror
</div>
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
<!-- City -->
<div>
<label for="city" class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">
City
</label>
<input type="text"
wire:model="city"
id="city"
class="w-full rounded-md border-zinc-300 dark:border-zinc-600 dark:bg-zinc-700 dark:text-white shadow-sm focus:border-blue-500 focus:ring-blue-500 @error('city') border-red-500 @enderror"
placeholder="City">
@error('city')
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
@enderror
</div>
<!-- State -->
<div>
<label for="state" class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">
State/Province
</label>
<input type="text"
wire:model="state"
id="state"
class="w-full rounded-md border-zinc-300 dark:border-zinc-600 dark:bg-zinc-700 dark:text-white shadow-sm focus:border-blue-500 focus:ring-blue-500 @error('state') border-red-500 @enderror"
placeholder="State">
@error('state')
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
@enderror
</div>
<!-- Postal Code -->
<div>
<label for="postal_code" class="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-2">
Postal Code
</label>
<input type="text"
wire:model="postal_code"
id="postal_code"
class="w-full rounded-md border-zinc-300 dark:border-zinc-600 dark:bg-zinc-700 dark:text-white shadow-sm focus:border-blue-500 focus:ring-blue-500 @error('postal_code') border-red-500 @enderror"
placeholder="12345">
@error('postal_code')
<p class="mt-1 text-sm text-red-600 dark:text-red-400">{{ $message }}</p>
@enderror
</div>
</div>
</div>
</div>
<!-- Form Actions -->
<div class="mt-8 flex items-center justify-end space-x-4 pt-6 border-t border-zinc-200 dark:border-zinc-700">
<a href="{{ route('branches.index') }}"
class="inline-flex items-center px-4 py-2 bg-zinc-100 hover:bg-zinc-200 dark:bg-zinc-700 dark:hover:bg-zinc-600 text-zinc-700 dark:text-zinc-300 text-sm font-medium rounded-md transition-colors"
wire:navigate>
Cancel
</a>
<button type="submit"
class="inline-flex items-center px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white text-sm font-medium rounded-md transition-colors">
<svg class="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path>
</svg>
Create Branch
</button>
</div>
</form>
</div>
</div>
</div>