label('Move Aircraft to Inventory') ->icon('heroicon-m-arrows-pointing-out') ->color('info') ->form([ Repeater::make('aircrafts') ->schema([ Grid::make() ->columns(1) ->schema([ Select::make('aircraft_id') ->label('Select Aircraft') ->searchable() ->getSearchResultsUsing(fn (string $search): array => Aircraft::where('serial_number', 'like', "%{$search}%")->limit(5)->pluck('serial_number', 'id')->toArray()) ->required(), ]) ]), ])->action(function (array $data, EmailThread $thread) { dd($data); foreach ($data['requests'] as $request) { $request['user_id'] = auth()->user()->id; $request['contact_id'] = $thread->contacts->first()->contact_id; $request['email_thread_id'] = $thread->id; TenderRequest::newRequest($request); } }), Actions\Action::make('createTenderRequest') ->label('Create Aircraft') ->icon('heroicon-o-plus') ->color('success') ->form([ Repeater::make('aircrafts') ->schema([ Grid::make() ->columns(4) ->schema([ Select::make('manufacturer_id') ->label('Manufacturer') ->options( Manufacturer::all()->pluck('manufacturer', 'id') ) ->afterStateUpdated(function ($state, callable $get, callable $set) { if ($state) { $manufacturer = Manufacturer::find($state); $set('manufacturer_id', $manufacturer->id); } }) ->required() ->reactive(), Select::make('aircraft_model_id') ->label('Model') ->required() ->options( function (callable $get, callable $set) { return AircraftModel::where('manufacturer_id', $get('manufacturer_id'))->get()->pluck('model', 'id'); } ), TextInput::make('serial_number') ->label('Serial Number') ->placeholder('Serial Number') ->required() // ->unique('aircraft', 'serial_number') ->rules([ function () { return function (string $attribute, $value, Closure $fail) { dd($get('manufacturer_id')); $fail("The {$attribute} is invalid."); }; }, ]) ->numeric(), TextInput::make('registration') ->label('Registration') ->placeholder('Registration') ->unique('aircraft', 'registration') ->required(), ]) ]), ])->action(function (array $data, EmailThread $thread) { dd($data); foreach ($data['requests'] as $request) { $request['user_id'] = auth()->user()->id; $request['contact_id'] = $thread->contacts->first()->contact_id; $request['email_thread_id'] = $thread->id; TenderRequest::newRequest($request); } }), Actions\Action::make('changeStatus') ->label('Move') ->icon('heroicon-m-arrows-pointing-out') ->form([ Select::make('type') ->label('Move to') ->options([ 'junk' => 'Junk', 'sale' => 'Sale', 'purchase_order' => 'Purchase Order' ]) ->required(), ])->action(function (array $data, EmailThread $thread) { $thread->type = $data['type']; $thread->save(); switch ($thread->type) { case 'sale': return redirect(url('admin/email-threads/' . $thread->id)); case 'purchase_order': return redirect(url('admin/purchase-order-emails/' . $thread->id)); case 'listing_request': return redirect(url('admin/listing-request-emails/' . $thread->id)); default: return redirect(url('admin/aircraft-mails')); } }), // Actions\EditAction::make(), ]; } }