%PDF- %PDF-
Direktori : /var/www/html/camillo/camillo-api-master/app/Nova/ |
Current File : /var/www/html/camillo/camillo-api-master/app/Nova/User.php |
<?php namespace App\Nova; use App\Enums\UsertypeEnum; use App\Nova\Actions\PrincipalResetPassword; use App\Nova\Actions\SmsInvitation; use App\Nova\Filters\UserInsitute; use Laravel\Nova\Fields\BelongsTo; use Laravel\Nova\Fields\BelongsToMany; use Laravel\Nova\Fields\Boolean; use Laravel\Nova\Fields\HasOne; use Laravel\Nova\Fields\ID; use Illuminate\Http\Request; use Laravel\Nova\Fields\Text; use Laravel\Nova\Fields\Gravatar; use Laravel\Nova\Fields\Password; use Laravel\Nova\Http\Requests\NovaRequest; class User extends Resource { /** * The model the resource corresponds to. * * @var string */ public static $model = 'App\User'; /** * The single value that should be used to represent the resource when being displayed. * * @var string */ public static $title = 'name'; public static function label() { return __('Users'); } public static function singularLabel() { return __('User'); } /** * The columns that should be searched. * * @var array */ public static $search = [ 'id', 'name', 'email', ]; public static $with = [ 'individual', 'usertype' ]; /** * Build an "index" query for the given resource. * * @param \Laravel\Nova\Http\Requests\NovaRequest $request * @param \Illuminate\Database\Eloquent\Builder $query * @return \Illuminate\Database\Eloquent\Builder */ public static function indexQuery(NovaRequest $request, $query) { $user = auth()->user(); $allowed_roles = [ UsertypeEnum::TEACHER, UsertypeEnum::TUTOR, UsertypeEnum::PRINCIPAL ]; $institutes = $user->institutes; $institutes_id = $institutes->map(function ($item, $key){ return $item->id; }); if($user->usertype->role === UsertypeEnum::PRINCIPAL){ return $query->whereHas('usertype', function($query) use ($institutes_id, $allowed_roles) { $query->whereIn('role', $allowed_roles); })->whereHas('institutes', function($query) use ($institutes_id) { $query->whereIn('institute_id', $institutes_id->all()); }); } } /** * Get the fields displayed by the resource. * * @param \Illuminate\Http\Request $request * @return array */ public function fields(Request $request) { return [ ID::make()->sortable()->canSee(function($request){ return $request->user()->usertype->role === UsertypeEnum::ADMIN; }), // Gravatar::make(), Text::make(__('Name'), 'name') ->sortable() ->rules('required', 'max:255'), Text::make(__('Username'), 'email') ->sortable() ->rules('required') ->creationRules('unique:users,email') ->updateRules('unique:users,email,{{resourceId}}'), /* Password::make('Password') ->onlyOnForms() ->creationRules('required', 'string', 'min:6') ->updateRules('nullable', 'string', 'min:6'),*/ Boolean::make(__('Active'), 'active')->sortable()->hideWhenCreating()->canSee(function($request){ return $request->user()->usertype->role === UsertypeEnum::ADMIN; }), Boolean::make(__('Active'), 'active')->sortable()->hideWhenUpdating()->hideWhenCreating()->canSee(function($request){ return $request->user()->usertype->role !== UsertypeEnum::ADMIN; }), HasOne::make(__('Individual'), 'individual', Individual::class), BelongsTo::make(__('User Type'), 'usertype', Usertype::class) ->creationRules('required'), BelongsToMany::make(__('Institute'), 'institutes', Institute::class) ]; } /** * 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 [ new Filters\UserInsitute, new Filters\UserType, new Filters\UserActive ]; } /** * 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 [ (new SmsInvitation())->canSee(function ($request){ $allowed = [ UsertypeEnum::ADMIN, UsertypeEnum::PRINCIPAL ]; return in_array($request->user()->usertype->role, $allowed); }), (new PrincipalResetPassword())->canSee(function ($request){ $allowed = [ UsertypeEnum::ADMIN, UsertypeEnum::PRINCIPAL ]; return in_array($request->user()->usertype->role, $allowed); }) ]; } }