user(); if ($user->isAdmin()) { return $query; } if ($user->isOperator()) { return $query->whereIn('branch_id', $user->branches()->pluck('branches.id')); } return $query->where('user_id', $request->user()->id); } /** * After resource created * * @param Laravel\Nova\Http\Requests\NovaRequest $request * @param Illuminate\Database\Eloquent\Model $model */ public static function afterCreate(NovaRequest $request, Model $model): void { $model->update(['unique_id' => CardOrderRepo::fillUniqueId($model)]); } /** * Get the fields for index. */ public function fieldsForIndex(NovaRequest $request): array { return CardRequisiteFieldsForIndex::make($this, $request); } /** * Get the fields for detail */ public function fieldsForDetail(): array { return CardRequisiteFieldsForDetail::make($this); } /** * Get the fields displayed by the resource. */ public function fields(NovaRequest $request): array { return [ ID::make()->sortable(), Hidden::make('user_id') ->default(auth()->id()) ->hideWhenUpdating(), Select::make(__('Status'), 'status') ->displayUsingLabels() ->searchable() ->options(OrderRepo::statusValues()) ->default(OrderRepo::defaultStatus()) ->fullWidth() ->rules('required') ->canSeeWhen('systemUser', $this), Text::make(__('Note'), 'notes') ->fullWidth() ->canSeeWhen('systemUser', $this), new Panel(__('Card'), [ Select::make(__('Card type'), 'card_type_id') ->displayUsingLabels() ->fullWidth() ->searchable() ->options(CardTypeRepo::values()) ->size('w-1/2') ->rules('required'), NovaInputmask::make(__('Card number'), 'card_number') ->mask('9999 9999 9999 9999') ->storeRawValue() ->size('w-1/2') ->rules('required', 'int', 'digits:16'), ]), new Panel(__('Location'), [ Select::make(__('Region'), 'region') ->displayUsingLabels() ->searchable() ->options(RegionRepo::values()) ->default(RegionRepo::default()) ->size('w-1/2') ->rules('required'), Select::make(__('Branch'), 'branch_id') ->displayUsingLabels() ->searchable() ->dependsOn('region', NovaRepo::dependsOnRegion('region', Branch::class)) ->size('w-1/2') ->rules('required'), ]), new Panel(__('Personal data'), [ Text::make(__('Name'), 'customer_name') ->size('w-1/3') ->rules('required', 'string', new OnlyLetters(), 'max:255'), Text::make(__('Surname'), 'customer_surname') ->size('w-1/3') ->rules('required', 'string', new OnlyLetters(), 'max:255'), Text::make(__('Patronic name'), 'customer_patronic_name') ->size('w-1/3') ->rules('required', 'string', new OnlyLetters(), 'max:255'), Date::make(__('Date of birth'), 'born_at') ->size('w-1/2') ->rules('required', 'before_or_equal:today'), NovaInputmask::make(__('Phone'), 'phone') ->mask('+(\\9\\93)-99-99-99-99') ->storeRawValue() ->size('w-1/2') ->rules('required', 'integer', 'between:61000000, 71999999'), ]), new Panel(__('Passport'), [ Select::make(__('Passport serie'), 'passport_serie') ->displayUsingLabels() ->searchable() ->options(PassportRepo::values()) ->size('w-1/2') ->rules('required'), Number::make(__('Passport id'), 'passport_id') ->size('w-1/2') ->rules('required', 'numeric', 'digits:6'), Image::make(__('Passport (page 1)'), 'passport_one') ->size('w-1/2') ->deletable(false) ->rules('max:2048', 'mimes:jpg,png,jpeg') ->creationRules('required') ->updateRules('nullable'), Image::make(__('Passport (page 2-3)'), 'passport_two') ->size('w-1/2') ->deletable(false) ->rules('max:2048', 'mimes:jpg,png,jpeg') ->creationRules('required') ->updateRules('nullable'), Image::make(__('Passport (page 8-9)'), 'passport_three') ->size('w-1/2') ->deletable(false) ->rules('max:2048', 'mimes:jpg,png,jpeg') ->creationRules('required') ->updateRules('nullable'), Image::make(__('Passport (page 32)'), 'passport_four') ->size('w-1/2') ->deletable(false) ->rules('max:2048', 'mimes:jpg,png,jpeg') ->creationRules('required') ->updateRules('nullable'), ]), new Panel(__('Ready files'), [ File::make(__('Card requisite'), 'ready_files') ->rules('max:2048', 'mimes:doc,docx,rtf,pdf,jpg,png,jpeg') ->hideWhenCreating() ->canSeeWhen('systemUser', $this), ]), ]; } /** * Get the cards available for the request. * * @return array */ public function cards(NovaRequest $request) { return []; } /** * Get the filters available for the resource. * * @return array */ public function filters(NovaRequest $request) { return [ RegionFilter::make() ->canSee(fn () => Gate::allows('isAdmin'), auth()->user()), new StatusFilter(), ]; } /** * Get the lenses available for the resource. * * @return array */ public function lenses(NovaRequest $request) { return []; } /** * Get the actions available for the resource. * * @return array */ public function actions(NovaRequest $request) { return []; } }