workshop_lara_nova/app/Nova/Technician.php
2025-03-22 10:19:15 +00:00

88 lines
2.5 KiB
PHP

<?php
namespace App\Nova;
use Laravel\Nova\Fields\ID;
use Laravel\Nova\Fields\Text;
use Laravel\Nova\Fields\Number;
use Laravel\Nova\Fields\Select;
use Laravel\Nova\Fields\Textarea;
use Laravel\Nova\Fields\Boolean;
use Laravel\Nova\Fields\Date;
use Laravel\Nova\Fields\DateTime;
use Laravel\Nova\Fields\BelongsTo;
use Laravel\Nova\Fields\BelongsToMany;
use Laravel\Nova\Fields\HasMany;
use Laravel\Nova\Fields\Currency;
use Laravel\Nova\Fields\Badge;
use Laravel\Nova\Fields\File;
use Laravel\Nova\Fields\MorphMany;
use Laravel\Nova\Http\Requests\NovaRequest;
use App\Nova\Metrics\VehiclesPerStatus;
use App\Nova\Metrics\RepairsPerMonth;
use App\Nova\Metrics\AverageRepairCost;
use App\Nova\Metrics\PartsInventoryValue;
use App\Nova\Actions\GenerateRepairReport;
use App\Nova\Actions\CompleteRepair;
use App\Nova\Actions\AssignTechnicians;
use App\Nova\Actions\OrderParts;
use App\Nova\Filters\VehicleStatusFilter;
use App\Nova\Filters\RepairStatusFilter;
use App\Nova\Filters\TechnicianSpecializationFilter;
use App\Nova\Lenses\VehiclesDueForMaintenance;
use App\Nova\Lenses\LowInventoryParts;
class Technician extends Resource
{
public static $model = \App\Models\Technician::class;
public static $title = 'name';
public static $search = ['name', 'employee_id', 'email'];
public function fields(NovaRequest $request)
{
return [
ID::make()->sortable(),
Text::make('Name')
->sortable()
->rules('required'),
Text::make('Employee ID')
->sortable()
->rules('required', 'unique:technicians,employee_id,{{resourceId}}'),
Text::make('Email')
->sortable()
->rules('required', 'email', 'unique:technicians,email,{{resourceId}}'),
Text::make('Phone')
->hideFromIndex()
->rules('nullable'),
Select::make('Specialization')
->options([
'mechanical' => 'Mechanical',
'electrical' => 'Electrical',
'body' => 'Body Work',
'general' => 'General',
])
->displayUsingLabels()
->sortable(),
Boolean::make('Is Active')
->sortable(),
BelongsToMany::make('Repair Orders'),
HasMany::make('Repair Tasks'),
];
}
public function filters(NovaRequest $request)
{
return [
new TechnicianSpecializationFilter,
];
}
}