Последняя версия с сервера прошлого разработчика

This commit is contained in:
2025-07-10 04:35:51 +00:00
commit c731570032
1174 changed files with 134314 additions and 0 deletions

172
app/Nova/User.php Executable file
View File

@@ -0,0 +1,172 @@
<?php
namespace App\Nova;
use Carbon\Carbon;
use Laravel\Nova\Fields\ID;
use Illuminate\Http\Request;
use Laravel\Nova\Fields\Text;
use Laravel\Nova\Fields\Boolean;
use Laravel\Nova\Fields\Gravatar;
use Laravel\Nova\Fields\Password;
use Laravel\Nova\Fields\MorphToMany;
use Laravel\Nova\Fields\BelongsToMany;
use Vyuldashev\NovaPermission\RoleBooleanGroup;
use Ebess\AdvancedNovaMediaLibrary\Fields\Files;
use Vyuldashev\NovaPermission\PermissionBooleanGroup;
class User extends Resource
{
/**
* The model the resource corresponds to.
*
* @var string
*/
public static $model = \App\Models\User::class;
public static $with = ['media', 'roles', 'permissions', 'subscription'];
public static $group = 'Users';
/**
* The single value that should be used to represent the resource when being displayed.
*
* @var string
*/
public function title()
{
return $this->first_name;
}
public function subtitle()
{
return "Username: {$this->username}";
}
/**
* The columns that should be searched.
*
* @var array
*/
public static $search = [
'id', 'first_name', 'last_name', 'username', 'email',
];
/**
* Get the fields displayed by the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function fields(Request $request)
{
return [
ID::make()->sortable(),
// Gravatar::make()->maxWidth(50),
Text::make('Имя', 'Name', function () {
return $this->first_name.' '.$this->last_name;
})->onlyOnIndex(),
Text::make('Username')
->rules('required', 'max:255')
->creationRules('unique:users,username')
->updateRules('unique:users,username,{{resourceId}}'),
Text::make('Имя', 'first_name')
->onlyOnForms()
->rules('required', 'max:255'),
Text::make('Фамилия', 'last_name')
->onlyOnForms(),
Text::make('Tелефон', 'phone'),
Text::make('ИНН', 'inn')->hideFromIndex(),
Text::make('Расчетный счет', 'checking_account')->hideFromIndex(),
Text::make('Бик банка', 'bik')->hideFromIndex(),
Text::make('Почта', 'email')
->sortable()
->rules('required', 'email', 'max:254')
->creationRules('unique:users,email')
->updateRules('unique:users,email,{{resourceId}}'),
Password::make('Password')
->onlyOnForms()
->creationRules('required', 'string', 'min:4')
->updateRules('nullable', 'string', 'min:4'),
RoleBooleanGroup::make('Roles'),
PermissionBooleanGroup::make('Permissions'),
BelongsToMany::make('Votes')->fields(function () {
return [
Text::make('Payment'),
];
}),
Boolean::make('Вер.: телефон', 'phone_verified'),
Boolean::make('Вер.: паспорт', 'passport_verified'),
Boolean::make('Загружен док.?', function () {
return $this->media->count() ? true : false;
})->onlyOnIndex(),
Boolean::make('Подписка', function () {
$last = $this->subscription()->first();
if (empty($last)) {
return false;
}
if ($last->ends_at > Carbon::now()) {
return true;
}
return false;
})->onlyOnIndex(),
Files::make('Документ', 'documents')->readonly(),
];
}
/**
* Get the cards available for the request.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function cards(Request $request)
{
return [];
}
/**
* Get the filters available for the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function filters(Request $request)
{
return [];
}
/**
* Get the lenses available for the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function lenses(Request $request)
{
return [];
}
/**
* Get the actions available for the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function actions(Request $request)
{
return [];
}
}