88 lines
2.5 KiB
PHP
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,
|
|
];
|
|
}
|
|
}
|