From 11ad96e5d8d4dce87e1f21058d01bc98d7dcb9b2 Mon Sep 17 00:00:00 2001 From: Nurmuhammet Allanov Date: Sun, 26 Nov 2023 17:36:17 +0500 Subject: [PATCH] WIP on loan order --- .../Order/Loan/Concerns/LoanOrderNovaRepo.php | 13 + app/Nova/Resources/Order/Loan/LoanOrder.php | 245 +++++++++++------- app/Nova/User.php | 2 - app/Nova/Wizards/AddUserWizard.php | 90 ------- app/Providers/NovaServiceProvider.php | 14 +- app/Repos/System/Nova/NovaRepo.php | 2 +- .../System/Settings/Legal/EducationRepo.php | 8 + .../System/Settings/Legal/MarriageRepo.php | 8 + composer.json | 5 +- composer.lock | 157 +++++++---- config/nova-wizard.php | 46 ---- ..._11_23_162920_create_loan_orders_table.php | 2 +- resources/css/vendor/nova/css/additional.css | 7 + 13 files changed, 306 insertions(+), 293 deletions(-) delete mode 100644 app/Nova/Wizards/AddUserWizard.php delete mode 100644 config/nova-wizard.php create mode 100644 resources/css/vendor/nova/css/additional.css diff --git a/app/Nova/Resources/Order/Loan/Concerns/LoanOrderNovaRepo.php b/app/Nova/Resources/Order/Loan/Concerns/LoanOrderNovaRepo.php index dc541ab..51f8c88 100644 --- a/app/Nova/Resources/Order/Loan/Concerns/LoanOrderNovaRepo.php +++ b/app/Nova/Resources/Order/Loan/Concerns/LoanOrderNovaRepo.php @@ -2,6 +2,19 @@ namespace App\Nova\Resources\Order\Loan\Concerns; +use App\Models\Branch\Branch; +use Closure; + class LoanOrderNovaRepo { + public function fillUniqueId(): Closure + { + return function ($request, $model, $attribute, $requestAttribute) { + $model->{$attribute} = mb_strtoupper(sprintf( + '%s-%s', + Branch::find($request->branch_id)->unique_code, + $request->id + )) ?? uniqid(); + }; + } } diff --git a/app/Nova/Resources/Order/Loan/LoanOrder.php b/app/Nova/Resources/Order/Loan/LoanOrder.php index 9899c7b..90736e8 100644 --- a/app/Nova/Resources/Order/Loan/LoanOrder.php +++ b/app/Nova/Resources/Order/Loan/LoanOrder.php @@ -5,6 +5,7 @@ namespace App\Nova\Resources\Order\Loan; use App\Models\Order\Loan\LoanOrder as LoanOrderModel; use App\Nova\Resource; use App\Nova\Resources\Branch\Concerns\BranchNovaRepo; +use App\Nova\Resources\Order\Loan\Concerns\LoanOrderNovaRepo; use App\Repos\Order\Loan\BranchRepo; use App\Repos\Order\Loan\LoanTypeRepo; use App\Repos\System\Settings\Legal\EducationRepo; @@ -12,13 +13,17 @@ use App\Repos\System\Settings\Legal\MarriageRepo; use App\Repos\System\Settings\Legal\PassportRepo; use App\Repos\System\Settings\Location\RegionRepo; use Illuminate\Http\Request; +use Konsulting\NovaTarget\NovaTarget; use Laravel\Nova\Fields\Date; use Laravel\Nova\Fields\Email; +use Laravel\Nova\Fields\File; use Laravel\Nova\Fields\ID; use Laravel\Nova\Fields\Number; use Laravel\Nova\Fields\Select; +use Laravel\Nova\Fields\Slug; use Laravel\Nova\Fields\Text; use Laravel\Nova\Http\Requests\NovaRequest; +use Laravel\Nova\Panel; use Nurmuhammet\NovaInputmask\NovaInputmask; class LoanOrder extends Resource @@ -62,134 +67,186 @@ class LoanOrder extends Resource return __('Loan order'); } + /** + * Get the fields for create. + */ + // public function fieldsForCreate(NovaRequest $request): array + // { + + // } + /** * Get the fields displayed by the resource. */ public function fields(NovaRequest $request): array { return [ - ID::make()->sortable(), + ID::hidden()->sortable(), - // $table->string('unique_id')->unique(); + new Panel(__('Loan'), [ + Select::make(__('Loan type'), 'loan_type') + ->displayUsingLabels() + ->fullWidth() + ->searchable() + ->options(LoanTypeRepo::values()) + ->rules('required') + ->sortable(), + ]), - Select::make(__('Region'), 'region') - ->displayUsingLabels() - ->searchable() - ->options(RegionRepo::values()) - ->default(RegionRepo::default()) - ->rules('required') - ->sortable(), + new Panel(__('Location'), [ + Select::make(__('Region'), 'region') + ->displayUsingLabels() + ->searchable() + ->options(RegionRepo::values()) + ->default(RegionRepo::default()) + ->size('w-1/2') + ->rules('required') + ->sortable(), - Select::make(__('Branch'), 'branch_id') - ->displayUsingLabels() - ->searchable() - ->options(BranchRepo::values()) - ->dependsOn('region', BranchNovaRepo::dependsOnRegion()) - ->rules('required') - ->sortable(), + Select::make(__('Branch'), 'branch_id') + ->displayUsingLabels() + ->searchable() + ->options(BranchRepo::values()) + ->dependsOn('region', BranchNovaRepo::dependsOnRegion()) + ->size('w-1/2') + ->rules('required') + ->sortable(), + ]), - Select::make(__('Loan type'), 'loan_type') - ->displayUsingLabels() - ->searchable() - ->options(LoanTypeRepo::values()) - ->rules('required') - ->sortable(), + new Panel(__('Personal data'), [ + Text::make(__('Customer name'), 'customer_name') + ->size('w-1/3') + ->rules('required', 'string', 'max:255'), - Text::make(__('Customer name'), 'customer_name') - ->rules('required', 'string', 'max:255'), + Text::make(__('Customer surname'), 'customer_surname') + ->size('w-1/3') + ->rules('required', 'string', 'max:255'), - Text::make(__('Customer surname'), 'customer_surname') - ->rules('required', 'string', 'max:255'), + Text::make(__('Customer patronic name'), 'customer_patronic_name') + ->size('w-1/3') + ->rules('required', 'string', 'max:255'), - Text::make(__('Customer patronic name'), 'customer_patronic_name') - ->rules('required', 'string', 'max:255'), + Select::make(__('Education'), 'education') + ->displayUsingLabels() + ->searchable() + ->options(EducationRepo::values()) + ->default(EducationRepo::default()) + ->size('w-1/3') + ->rules('required') + ->sortable(), - Text::make(__('Residence (passport)'), 'passport_address') - ->rules('required', 'string', 'max:255'), + Select::make(__('Marriage status'), 'marriage_status') + ->displayUsingLabels() + ->searchable() + ->options(MarriageRepo::values()) + ->default(MarriageRepo::default()) + ->size('w-1/3') + ->rules('required') + ->sortable(), - Text::make(__('Current Residence'), 'real_address') - ->rules('required', 'string', 'max:255'), + Date::make(__('Date of birth'), 'born_at') + ->size('w-1/3') + ->rules('required'), - Select::make(__('Passport serie'), 'passport_serie') - ->displayUsingLabels() - ->searchable() - ->options(PassportRepo::values()) - ->rules('required') - ->sortable(), + Text::make(__('Residence (passport)'), 'passport_address') + ->size('w-1/2') + ->rules('required', 'string', 'max:255'), - Number::make(__('Passport id'), 'passport_id') - ->rules('required'), + Text::make(__('Current Residence'), 'real_address') + ->size('w-1/2') + ->rules('required', 'string', 'max:255'), + ]), - Date::make(__('Passport date of issue'), 'passport_given_at') - ->rules('required'), + new Panel(__('Passport'), [ + Select::make(__('Passport serie'), 'passport_serie') + ->displayUsingLabels() + ->searchable() + ->options(PassportRepo::values()) + ->size('w-1/3') + ->rules('required') + ->sortable(), - Text::make(__('Passport given by'), 'passport_given_by') - ->rules('required'), + Number::make(__('Passport id'), 'passport_id') + ->size('w-1/3') + ->rules('required'), - Text::make(__('Born place (passport)'), 'born_place') - ->rules('required'), + Date::make(__('Passport date of issue'), 'passport_given_at') + ->size('w-1/3') + ->rules('required'), - Date::make(__('Date of birth'), 'born_at') - ->rules('required'), + Text::make(__('Passport given by'), 'passport_given_by') + ->size('w-1/2') + ->rules('required'), - Email::make(__('Email'), 'email') - ->rules('nullable', 'email'), + Text::make(__('Born place (passport)'), 'born_place') + ->size('w-1/2') + ->rules('required'), + ]), - NovaInputmask::make(__('Phone'), 'phone') - ->phonenumber('TM') - ->rules('required'), + new Panel(__('Contact data'), [ + Email::make(__('Email'), 'email') + ->size('w-1/4') + ->rules('nullable', 'email'), - NovaInputmask::make(__('Phone Additional'), 'phone_additional') - ->phonenumber('TM') - ->rules('required'), + NovaInputmask::make(__('Phone'), 'phone') + ->phonenumber('TM') + ->size('w-1/4') + ->rules('required'), - NovaInputmask::make(__('Home phone'), 'phone_home') - ->rules('required'), + NovaInputmask::make(__('Phone Additional'), 'phone_additional') + ->phonenumber('TM') + ->size('w-1/4') + ->rules('required'), - Select::make(__('Work region'), 'work_region') - ->displayUsingLabels() - ->searchable() - ->options(RegionRepo::values()) - ->default(RegionRepo::default()) - ->rules('required') - ->sortable(), + NovaInputmask::make(__('Home phone'), 'phone_home') + ->size('w-1/4') + ->rules('required'), + ]), - Select::make(__('Work province'), 'work_province') - ->displayUsingLabels() - ->searchable() - ->dependsOn('region', BranchNovaRepo::dependsOnRegion('work_region')), + new Panel(__('Job'), [ + Text::make(__('Work company name'), 'work_company') + ->rules('required', 'string', 'max:255') + ->size('w-1/2'), - Text::make(__('Work company name'), 'work_company') - ->rules('required', 'string', 'max:255'), + NovaInputmask::make(__('HR department work number'), 'work_company_accountant_number') + ->size('w-1/2') + ->rules('required'), - NovaInputmask::make(__('HR department work number'), 'work_company_accountant_number'), + Select::make(__('Work region'), 'work_region') + ->displayUsingLabels() + ->searchable() + ->options(RegionRepo::values()) + ->default(RegionRepo::default()) + ->size('w-1/2') + ->rules('required') + ->sortable(), - Date::make(__('Work started at'), 'work_started_at') - ->rules('required'), + Select::make(__('Work province'), 'work_province') + ->displayUsingLabels() + ->searchable() + ->dependsOn('region', BranchNovaRepo::dependsOnRegion('work_region')) + ->size('w-1/2') + ->rules('required'), - Text::make(__('Salary'), 'work_salary') - ->rules('required'), - Text::make(__('Position'), 'work_position') - ->rules('required'), + Text::make(__('Position'), 'work_position') + ->size('w-1/2') + ->rules('required'), - Select::make(__('Education'), 'education') - ->displayUsingLabels() - ->searchable() - ->options(EducationRepo::values()) - ->rules('required') - ->sortable(), + Text::make(__('Salary'), 'work_salary') + ->size('w-1/4') + ->rules('required'), - Select::make(__('Marriage status'), 'marriage_status') - ->displayUsingLabels() - ->searchable() - ->options(MarriageRepo::values()) - ->rules('required') - ->sortable(), + Date::make(__('Work started at'), 'work_started_at') + ->size('w-1/4') + ->rules('required'), + ]), - // $table->text('passport_one'); - // $table->text('passport_two'); - // $table->text('passport_three'); - // $table->text('passport_four'); + new Panel(__('Passport'), [ + File::make(__('Passport (page 1)'), 'passport_one'), + File::make(__('Passport (page 2-3)'), 'passport_two'), + File::make(__('Passport (page 8-9)'), 'passport_three'), + File::make(__('Passport (page 32)'), 'passport_four'), + ]), // $table->foreignId('filled_by')->constrained('users')->restrictOnDelete(); // $table->foreignId('user_id')->constrained('users')->restrictOnDelete(); diff --git a/app/Nova/User.php b/app/Nova/User.php index e1d45ae..b8aac09 100644 --- a/app/Nova/User.php +++ b/app/Nova/User.php @@ -45,8 +45,6 @@ class User extends Resource return [ ID::make()->sortable(), - Gravatar::make()->maxWidth(50), - Text::make('Name') ->sortable() ->rules('required', 'max:255'), diff --git a/app/Nova/Wizards/AddUserWizard.php b/app/Nova/Wizards/AddUserWizard.php deleted file mode 100644 index 5782c36..0000000 --- a/app/Nova/Wizards/AddUserWizard.php +++ /dev/null @@ -1,90 +0,0 @@ - [ - [ - 'title' => 'Step 1/2', - 'fields' => [ - Text::make(__('Username'), 'username'), - Text::make(__('Text field'), 'myText'), - Textarea::make(__('Longer text'), 'myLongerText') - ->help("You can use Help texts on Nova fields like you're used to"), - Number::make(__('Some number'), 'myNumber') - ->rules('required') - ->withMeta(['value' => 60]) - ->min(1) - ->step(1), - ], - ], - [ - 'title' => 'Step 2/2', - 'fields' => [ - Text::make(__('Text field 2'), 'myText2'), - Textarea::make(__('Longer text 2'), 'myLongerText2') - ->help("You can use Help texts on Nova fields like you're used to"), - Number::make(__('Some number 2'), 'myNumber2') - ->rules('required') - ->withMeta(['value' => 60]) - ->min(1) - ->step(1), - ], - ], - [ - 'title' => 'Step 2/2', - 'fields' => [ - Text::make(__('Text field 2'), 'myText2'), - Textarea::make(__('Longer text 2'), 'myLongerText2') - ->help("You can use Help texts on Nova fields like you're used to"), - Number::make(__('Some number 2'), 'myNumber2') - ->rules('required') - ->withMeta(['value' => 60]) - ->min(1) - ->step(1), - ], - ], - ], - ]; - } - - public function onSubmit($formData, &$context): bool - { - // - // When this method gets called, a valid and complete wizard was submitted. - // - // $formData is an array that contains the data submitted by the user. - // - // $context is an empty array that you can store arbitrary info in; - // it will be passed to the next method so you can use it - // to display specific context info to the user on success. - - // Parse submitted wizard data somehow - $user = User::create(['name' => $formData['username']]); - $context['newUserId'] = $user->id; - - // Return true at the end of this method to indicate success - return true; - - // Or return false if the data can not be parsed successfully; - // the user will then stay in the form view and have a chance - // to revise the data before resubmitting. - } - - public function successViewData($context): array - { - return [ - 'message' => 'Successfully created user with id: '.$context['newUserId'], - ]; - } -} diff --git a/app/Providers/NovaServiceProvider.php b/app/Providers/NovaServiceProvider.php index cebd860..c052580 100644 --- a/app/Providers/NovaServiceProvider.php +++ b/app/Providers/NovaServiceProvider.php @@ -21,7 +21,6 @@ use Laravel\Nova\Menu\MenuItem; use Laravel\Nova\Menu\MenuSection; use Laravel\Nova\Nova; use Laravel\Nova\NovaApplicationServiceProvider; -use Wdelfuego\NovaWizard\NovaWizard; class NovaServiceProvider extends NovaApplicationServiceProvider { @@ -38,6 +37,7 @@ class NovaServiceProvider extends NovaApplicationServiceProvider $this->setupNavigation(); $this->setupUserNavigation(); $this->setupUserSettings(); + $this->setupAssets(); } /** @@ -84,7 +84,6 @@ class NovaServiceProvider extends NovaApplicationServiceProvider LocaleSwitcher::make() ->setLocales(config('app.locales')) ->onSwitchLocale(NovaRepo::localeSwitcherSave()), - // new NovaWizard('add-user'), ]; } @@ -107,7 +106,6 @@ class NovaServiceProvider extends NovaApplicationServiceProvider MenuSection::make(__('Orders'), [ MenuItem::resource(LoanOrder::class), - // MenuItem::link('Add a user', NovaWizard::pathToWizard('add-user')) ])->icon('collection')->collapsable(), MenuSection::make(__('System'), [ @@ -117,7 +115,7 @@ class NovaServiceProvider extends NovaApplicationServiceProvider MenuItem::resource(Permission::class), ])->collapsable(), - MenuGroup::make(__('Loans'), [ + MenuGroup::make(__('Loan'), [ MenuItem::resource(LoanType::class), ])->collapsable(), @@ -149,4 +147,12 @@ class NovaServiceProvider extends NovaApplicationServiceProvider { Nova::serving(fn (ServingNova $event) => NovaRepo::serving($event)); } + + /** + * Setup Assets + */ + public function setupAssets(): void + { + Nova::style('additional', resource_path('css/vendor/nova/css/additional.css')); + } } diff --git a/app/Repos/System/Nova/NovaRepo.php b/app/Repos/System/Nova/NovaRepo.php index aee3116..5a4f3f7 100644 --- a/app/Repos/System/Nova/NovaRepo.php +++ b/app/Repos/System/Nova/NovaRepo.php @@ -23,7 +23,7 @@ class NovaRepo { $user = $event->request->user(); - if (array_key_exists($user->locale, config('app.locales'))) { + if (array_key_exists($user?->locale, config('app.locales'))) { app()->setLocale($user->locale); } } diff --git a/app/Repos/System/Settings/Legal/EducationRepo.php b/app/Repos/System/Settings/Legal/EducationRepo.php index 8d5664d..f3fc19d 100644 --- a/app/Repos/System/Settings/Legal/EducationRepo.php +++ b/app/Repos/System/Settings/Legal/EducationRepo.php @@ -33,4 +33,12 @@ class EducationRepo self::PHD => __('PHD'), ]; } + + /** + * Default education status + */ + public static function default(): string + { + return self::HIGH_EDUCATION; + } } diff --git a/app/Repos/System/Settings/Legal/MarriageRepo.php b/app/Repos/System/Settings/Legal/MarriageRepo.php index 7449467..dd1da8d 100644 --- a/app/Repos/System/Settings/Legal/MarriageRepo.php +++ b/app/Repos/System/Settings/Legal/MarriageRepo.php @@ -27,4 +27,12 @@ class MarriageRepo self::SINGLE => __('Single'), ]; } + + /** + * Default marriage value + */ + public static function default(): string + { + return self::MARRIED; + } } diff --git a/composer.json b/composer.json index bfd69b9..2cfa46b 100644 --- a/composer.json +++ b/composer.json @@ -8,16 +8,17 @@ "php": "^8.1", "eolica/nova-locale-switcher": "dev-support-nova-4", "guzzlehttp/guzzle": "^7.2", + "konsulting/nova-target": "^1.0", "laravel/framework": "^10.10", "laravel/nova": "*", "laravel/sanctum": "^3.3", "laravel/tinker": "^2.8", "nurmuhammet/nova-inputmask": "^1.0", + "outl1ne/nova-grid": "@dev", "outl1ne/nova-translatable": "^2.2", "spatie/laravel-permission": "^6.1", "spatie/laravel-translatable": "^6.5", - "trin4ik/nova-switcher": "^0.4.0", - "wdelfuego/nova-wizard": "^1.0" + "trin4ik/nova-switcher": "^0.4.0" }, "require-dev": { "fakerphp/faker": "^1.9.1", diff --git a/composer.lock b/composer.lock index 848b2b4..57a6257 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "e54517769c07296164429fd898ff3555", + "content-hash": "f339ec5654f56037abedbd8f4046b180", "packages": [ { "name": "brick/math", @@ -1501,6 +1501,52 @@ ], "time": "2023-10-27T10:59:02+00:00" }, + { + "name": "konsulting/nova-target", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/konsulting/nova-target.git", + "reference": "b9922ecbc94ea68a574d8386f7e1e612d2732418" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/konsulting/nova-target/zipball/b9922ecbc94ea68a574d8386f7e1e612d2732418", + "reference": "b9922ecbc94ea68a574d8386f7e1e612d2732418", + "shasum": "" + }, + "require": { + "laravel/nova": "^4.26", + "php": "^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Konsulting\\NovaTarget\\FieldServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Konsulting\\NovaTarget\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Target elements to hide or adjust classes in Laravel Nova resources", + "keywords": [ + "laravel", + "nova" + ], + "support": { + "issues": "https://github.com/konsulting/nova-target/issues", + "source": "https://github.com/konsulting/nova-target/tree/1.0.1" + }, + "time": "2023-07-04T11:06:03+00:00" + }, { "name": "laravel/framework", "version": "v10.33.0", @@ -3216,6 +3262,61 @@ ], "time": "2023-11-22T15:34:18+00:00" }, + { + "name": "outl1ne/nova-grid", + "version": "dev-main", + "source": { + "type": "git", + "url": "https://github.com/outl1ne/nova-grid.git", + "reference": "050866c64cdceadf968250e3edae17d94654d3a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/outl1ne/nova-grid/zipball/050866c64cdceadf968250e3edae17d94654d3a3", + "reference": "050866c64cdceadf968250e3edae17d94654d3a3", + "shasum": "" + }, + "require": { + "laravel/nova": "^4.26.5", + "php": ">=8.0" + }, + "default-branch": true, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Outl1ne\\NovaGrid\\ToolServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Outl1ne\\NovaGrid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tarvo Reinpalu", + "email": "tarvo@outl1ne.com" + } + ], + "description": "A Laravel Nova tool that allows placing fields in a grid using ->size() helpers.", + "keywords": [ + "grid", + "laravel", + "layout", + "nova" + ], + "support": { + "issues": "https://github.com/outl1ne/nova-grid/issues", + "source": "https://github.com/outl1ne/nova-grid/tree/main" + }, + "time": "2023-08-01T10:22:09+00:00" + }, { "name": "outl1ne/nova-translatable", "version": "2.2.0", @@ -7071,57 +7172,6 @@ ], "time": "2022-03-08T17:03:00+00:00" }, - { - "name": "wdelfuego/nova-wizard", - "version": "v1.0.1", - "source": { - "type": "git", - "url": "https://github.com/wdelfuego/nova-wizard.git", - "reference": "4e8879415a417f10554a69e3214acd2fb8599c1f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wdelfuego/nova-wizard/zipball/4e8879415a417f10554a69e3214acd2fb8599c1f", - "reference": "4e8879415a417f10554a69e3214acd2fb8599c1f", - "shasum": "" - }, - "require": { - "laravel/nova": "^4.0", - "php": "^7.3|^8.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Wdelfuego\\NovaWizard\\ToolServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Wdelfuego\\NovaWizard\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "AGPL-3.0-or-later", - "proprietary" - ], - "description": "A tool to create wizards in Nova 4.", - "keywords": [ - "form", - "laravel", - "multi step", - "multistep", - "nova", - "wizard" - ], - "support": { - "issues": "https://github.com/wdelfuego/nova-wizard/issues", - "source": "https://github.com/wdelfuego/nova-wizard/tree/v1.0.1" - }, - "time": "2023-10-17T13:18:08+00:00" - }, { "name": "webmozart/assert", "version": "1.11.0", @@ -9624,7 +9674,8 @@ "aliases": [], "minimum-stability": "stable", "stability-flags": { - "eolica/nova-locale-switcher": 20 + "eolica/nova-locale-switcher": 20, + "outl1ne/nova-grid": 20 }, "prefer-stable": true, "prefer-lowest": false, diff --git a/config/nova-wizard.php b/config/nova-wizard.php deleted file mode 100644 index 2a75464..0000000 --- a/config/nova-wizard.php +++ /dev/null @@ -1,46 +0,0 @@ - [ - - /* - * The class of the Nova Wizard. - Don't forget to add the proper use statement above. - This key is required. - */ - 'class' => AddUserWizard::class, - - /* - * URI for this wizard (will be appended to the Nova path, /nova by default) - This key is required. - */ - 'uri' => 'wizard/add-user', - - /* - * Browser window/tab title for this Nova Wizard. - This key is optional. - If you remove it or set it to an empty string, the dynamic title displayed above - the wizard view will be used as window/tab title in the browser. - */ - 'windowTitle' => 'Add User', - - ], - -]; diff --git a/database/migrations/2023_11_23_162920_create_loan_orders_table.php b/database/migrations/2023_11_23_162920_create_loan_orders_table.php index ce550df..2dd21b1 100644 --- a/database/migrations/2023_11_23_162920_create_loan_orders_table.php +++ b/database/migrations/2023_11_23_162920_create_loan_orders_table.php @@ -13,7 +13,7 @@ return new class extends Migration { Schema::create('loan_orders', function (Blueprint $table) { $table->id(); - $table->string('unique_id')->unique(); + $table->string('unique_id')->nullable()->unique(); $table->foreignId('loan_type')->constrained()->restrictOnDelete(); diff --git a/resources/css/vendor/nova/css/additional.css b/resources/css/vendor/nova/css/additional.css new file mode 100644 index 0000000..34a3b1a --- /dev/null +++ b/resources/css/vendor/nova/css/additional.css @@ -0,0 +1,7 @@ +.nova-grid--field-wrapper { + border-color: rgba(0, 0, 0, 0) !important; +} + +input { + width: 100%; +}