/home/bdqbpbxa/api-uniferx.goodface.com.ua/app/Nova/Page.php
<?php
namespace App\Nova;
use Acme\MultilangText\MultilangText;
use Acme\MultilangTextarea\MultilangTextarea;
use App\Models\Country;
use App\Models\Language;
use App\Nova\Helpers\ResourceFieldHelper;
use App\Nova\Layouts\Pages\AboutLayout;
use App\Nova\Layouts\Pages\AnonymousLayout;
use App\Nova\Layouts\Pages\BlogLayout;
use App\Nova\Layouts\Pages\CareerLayout;
use App\Nova\Layouts\Pages\ContactsLayout;
use App\Nova\Layouts\Pages\CropNutritionLayout;
use App\Nova\Layouts\Pages\HomepageLayout;
use App\Nova\Layouts\Pages\InformationMaterialsLayout;
use App\Nova\Layouts\Pages\MenuLayout;
use App\Nova\Layouts\Pages\ProductsLayout;
use App\Nova\Layouts\Pages\ResourcesLayout;
use App\Nova\Layouts\Pages\TrialResultsLayout;
use App\Nova\Layouts\Pages\VacanciesLayout;
use App\Nova\Repeater\Homepage;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Storage;
use Laravel\Nova\Fields\BelongsToMany;
use Laravel\Nova\Fields\Heading;
use Laravel\Nova\Fields\ID;
use Laravel\Nova\Fields\Image;
use Laravel\Nova\Fields\MorphedByMany;
use Laravel\Nova\Fields\Text;
use Laravel\Nova\Http\Requests\NovaRequest;
use Whitecube\NovaFlexibleContent\Flexible;
class Page extends Resource
{
/**
* The model the resource corresponds to.
*
* @var class-string<\App\Models\Page>
*/
public static $model = \App\Models\Page::class;
/**
* The single value that should be used to represent the resource when being displayed.
*
* @var string
*/
public static $title = 'name';
/**
* The columns that should be searched.
*
* @var array
*/
public static $search = [
'name',
];
public static $trafficCop = false;
/**
* Get the fields displayed by the resource.
*
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
* @return array
*/
public function fields(NovaRequest $request)
{
$countries = Country::query()->get();
$languages = Language::query()->get();
$uploadLink = route('nova.fields.upload.image');
return $this->pageFields();
}
public static function indexQuery(NovaRequest $request, $query)
{
return $query->where('name', '!=', 'Anonymous feedback');
}
public function pageFields()
{
$fields = match ($this->name) {
// 'Blog' => BlogLayout::class,
// 'Career' => CareerLayout::class,
// 'Resources' => ResourcesLayout::class,
// 'Crop nutrition programs' => CropNutritionLayout::class,
// 'Trial results' => TrialResultsLayout::class,
// 'Information materials' => InformationMaterialsLayout::class,
// 'Products' => ProductsLayout::class,
// default => new HomepageLayout(),
'Blog' => ResourceFieldHelper::blogPageFields(),
'Career' => ResourceFieldHelper::careerPageFields(),
'Resources' => ResourceFieldHelper::resourcesPageFields(),
'Crop nutrition programs' => ResourceFieldHelper::cropNutritionPageFields(),
'Trial results' => ResourceFieldHelper::trialResultsPageFields(),
'Information materials' => ResourceFieldHelper::informationMaterialsPageFields(),
'Products' => ResourceFieldHelper::productPageFields(),
'General Translations' => ResourceFieldHelper::generalTranslationFields(),
'About us' => ResourceFieldHelper::aboutUsFields(),
'Contacts' => ResourceFieldHelper::contactsFields(),
'Terms Conditions' => ResourceFieldHelper::termsConditionsFields(),
'Anonymous feedback' => ResourceFieldHelper::anonymousFeedbackFields(),
'Legal info' => ResourceFieldHelper::legalInfoFields(),
default => ResourceFieldHelper::homePageFields(),
};
$fields[] = ID::make()->sortable()->hide();
$fields[] = Text::make(__('Name'), 'name')
->sortable(true)
->onlyOnIndex();
$fields[] = BelongsToMany::make(__('Crops'), 'crops')
->canSee(function () {
return match ($this->name) {
'Crop nutrition programs', 'Trial results' => true,
default => false,
};
});
// $fields[] = MorphedByMany::make(__('Flyers'), 'flyers', Flyer::class)
// ->canSee(function () {
// return match ($this->name) {
// 'Information materials' => true,
// default => false,
// };
// });
$fields[] = MorphedByMany::make(__('Catalogs'), 'Catalogs', Catalog::class)
->canSee(function () {
return match ($this->name) {
'Information materials' => true,
default => false,
};
});
$fields[] = BelongsToMany::make('Employees', 'employees', Employee::class)
->canSee(function () {
return match ($this->name) {
'About us' => true,
default => false,
};
});
return $fields;
}
public static function afterUpdate(NovaRequest $request, Model $model)
{
// dd($request->all());
}
/**
* 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 [];
}
}