<?php declare (strict_types = 1); namespace App\Nova; use App\Models\Retailer; use App\Rules\isSKUAvailable; use Illuminate\Http\Request; use Laravel\Nova\Fields\ID; use Laravel\Nova\Fields\Select; use Laravel\Nova\Fields\Text; use Laravel\Nova\Fields\Textarea; use Laravel\Nova\Http\Requests\NovaRequest; class Product extends Resource { /** * The model the resource corresponds to. * * @var string */ public static $model = \App\Models\Product::class; /** * The single value that should be used to represent the resource when being displayed. * * @var string */ public static $title = 'id'; /** * The columns that should be searched. * * @var array */ public static $search = [ 'name', 'sku' ]; public function getAllRetailers() { $list = array(); foreach (Retailer::get() as $retailer) { $list[$retailer['id']] = $retailer['name']; } return $list; } /** * Get the fields displayed by the resource. * * @param \Laravel\Nova\Http\Requests\NovaRequest $request * @return array */ public function fields(NovaRequest $request) { return [ ID::make()->sortable(), Text::make('Name') ->sortable() ->rules('required', 'max:255', 'min:2'), Select::make('Retailer', 'retailer_id') ->options( $this->getAllRetailers() ) ->rules('required'), Text::make('SKU') ->sortable() ->rules('required', new isSKUAvailable($request->retailer_id)), Text::make('Price') ->sortable() ->rules('required'), Textarea::make('Description') ->sortable() ->rules('required'), ]; } /** * Get the cards available for the request. * * @param \Laravel\Nova\Http\Requests\NovaRequest $request * @return array */ public function cards(NovaRequest $request) { return []; } /** * Get the filters available for the resource. * * @param \Laravel\Nova\Http\Requests\NovaRequest $request * @return array */ public function filters(NovaRequest $request) { return []; } /** * Get the lenses available for the resource. * * @param \Laravel\Nova\Http\Requests\NovaRequest $request * @return array */ public function lenses(NovaRequest $request) { return []; } /** * Get the actions available for the resource. * * @param \Laravel\Nova\Http\Requests\NovaRequest $request * @return array */ public function actions(NovaRequest $request) { return []; } }