WIP on loan order

This commit is contained in:
2023-11-26 17:36:17 +05:00
parent 392136dc9b
commit 11ad96e5d8
13 changed files with 306 additions and 293 deletions

View File

@@ -2,6 +2,19 @@
namespace App\Nova\Resources\Order\Loan\Concerns; namespace App\Nova\Resources\Order\Loan\Concerns;
use App\Models\Branch\Branch;
use Closure;
class LoanOrderNovaRepo 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();
};
}
} }

View File

@@ -5,6 +5,7 @@ namespace App\Nova\Resources\Order\Loan;
use App\Models\Order\Loan\LoanOrder as LoanOrderModel; use App\Models\Order\Loan\LoanOrder as LoanOrderModel;
use App\Nova\Resource; use App\Nova\Resource;
use App\Nova\Resources\Branch\Concerns\BranchNovaRepo; 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\BranchRepo;
use App\Repos\Order\Loan\LoanTypeRepo; use App\Repos\Order\Loan\LoanTypeRepo;
use App\Repos\System\Settings\Legal\EducationRepo; 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\Legal\PassportRepo;
use App\Repos\System\Settings\Location\RegionRepo; use App\Repos\System\Settings\Location\RegionRepo;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Konsulting\NovaTarget\NovaTarget;
use Laravel\Nova\Fields\Date; use Laravel\Nova\Fields\Date;
use Laravel\Nova\Fields\Email; use Laravel\Nova\Fields\Email;
use Laravel\Nova\Fields\File;
use Laravel\Nova\Fields\ID; use Laravel\Nova\Fields\ID;
use Laravel\Nova\Fields\Number; use Laravel\Nova\Fields\Number;
use Laravel\Nova\Fields\Select; use Laravel\Nova\Fields\Select;
use Laravel\Nova\Fields\Slug;
use Laravel\Nova\Fields\Text; use Laravel\Nova\Fields\Text;
use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Http\Requests\NovaRequest;
use Laravel\Nova\Panel;
use Nurmuhammet\NovaInputmask\NovaInputmask; use Nurmuhammet\NovaInputmask\NovaInputmask;
class LoanOrder extends Resource class LoanOrder extends Resource
@@ -62,21 +67,39 @@ class LoanOrder extends Resource
return __('Loan order'); return __('Loan order');
} }
/**
* Get the fields for create.
*/
// public function fieldsForCreate(NovaRequest $request): array
// {
// }
/** /**
* Get the fields displayed by the resource. * Get the fields displayed by the resource.
*/ */
public function fields(NovaRequest $request): array public function fields(NovaRequest $request): array
{ {
return [ 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(),
]),
new Panel(__('Location'), [
Select::make(__('Region'), 'region') Select::make(__('Region'), 'region')
->displayUsingLabels() ->displayUsingLabels()
->searchable() ->searchable()
->options(RegionRepo::values()) ->options(RegionRepo::values())
->default(RegionRepo::default()) ->default(RegionRepo::default())
->size('w-1/2')
->rules('required') ->rules('required')
->sortable(), ->sortable(),
@@ -85,97 +108,30 @@ class LoanOrder extends Resource
->searchable() ->searchable()
->options(BranchRepo::values()) ->options(BranchRepo::values())
->dependsOn('region', BranchNovaRepo::dependsOnRegion()) ->dependsOn('region', BranchNovaRepo::dependsOnRegion())
->size('w-1/2')
->rules('required') ->rules('required')
->sortable(), ->sortable(),
]),
Select::make(__('Loan type'), 'loan_type') new Panel(__('Personal data'), [
->displayUsingLabels()
->searchable()
->options(LoanTypeRepo::values())
->rules('required')
->sortable(),
Text::make(__('Customer name'), 'customer_name') Text::make(__('Customer name'), 'customer_name')
->size('w-1/3')
->rules('required', 'string', 'max:255'), ->rules('required', 'string', 'max:255'),
Text::make(__('Customer surname'), 'customer_surname') Text::make(__('Customer surname'), 'customer_surname')
->size('w-1/3')
->rules('required', 'string', 'max:255'), ->rules('required', 'string', 'max:255'),
Text::make(__('Customer patronic name'), 'customer_patronic_name') Text::make(__('Customer patronic name'), 'customer_patronic_name')
->size('w-1/3')
->rules('required', 'string', 'max:255'), ->rules('required', 'string', 'max:255'),
Text::make(__('Residence (passport)'), 'passport_address')
->rules('required', 'string', 'max:255'),
Text::make(__('Current Residence'), 'real_address')
->rules('required', 'string', 'max:255'),
Select::make(__('Passport serie'), 'passport_serie')
->displayUsingLabels()
->searchable()
->options(PassportRepo::values())
->rules('required')
->sortable(),
Number::make(__('Passport id'), 'passport_id')
->rules('required'),
Date::make(__('Passport date of issue'), 'passport_given_at')
->rules('required'),
Text::make(__('Passport given by'), 'passport_given_by')
->rules('required'),
Text::make(__('Born place (passport)'), 'born_place')
->rules('required'),
Date::make(__('Date of birth'), 'born_at')
->rules('required'),
Email::make(__('Email'), 'email')
->rules('nullable', 'email'),
NovaInputmask::make(__('Phone'), 'phone')
->phonenumber('TM')
->rules('required'),
NovaInputmask::make(__('Phone Additional'), 'phone_additional')
->phonenumber('TM')
->rules('required'),
NovaInputmask::make(__('Home phone'), 'phone_home')
->rules('required'),
Select::make(__('Work region'), 'work_region')
->displayUsingLabels()
->searchable()
->options(RegionRepo::values())
->default(RegionRepo::default())
->rules('required')
->sortable(),
Select::make(__('Work province'), 'work_province')
->displayUsingLabels()
->searchable()
->dependsOn('region', BranchNovaRepo::dependsOnRegion('work_region')),
Text::make(__('Work company name'), 'work_company')
->rules('required', 'string', 'max:255'),
NovaInputmask::make(__('HR department work number'), 'work_company_accountant_number'),
Date::make(__('Work started at'), 'work_started_at')
->rules('required'),
Text::make(__('Salary'), 'work_salary')
->rules('required'),
Text::make(__('Position'), 'work_position')
->rules('required'),
Select::make(__('Education'), 'education') Select::make(__('Education'), 'education')
->displayUsingLabels() ->displayUsingLabels()
->searchable() ->searchable()
->options(EducationRepo::values()) ->options(EducationRepo::values())
->default(EducationRepo::default())
->size('w-1/3')
->rules('required') ->rules('required')
->sortable(), ->sortable(),
@@ -183,13 +139,114 @@ class LoanOrder extends Resource
->displayUsingLabels() ->displayUsingLabels()
->searchable() ->searchable()
->options(MarriageRepo::values()) ->options(MarriageRepo::values())
->default(MarriageRepo::default())
->size('w-1/3')
->rules('required') ->rules('required')
->sortable(), ->sortable(),
// $table->text('passport_one'); Date::make(__('Date of birth'), 'born_at')
// $table->text('passport_two'); ->size('w-1/3')
// $table->text('passport_three'); ->rules('required'),
// $table->text('passport_four');
Text::make(__('Residence (passport)'), 'passport_address')
->size('w-1/2')
->rules('required', 'string', 'max:255'),
Text::make(__('Current Residence'), 'real_address')
->size('w-1/2')
->rules('required', 'string', 'max:255'),
]),
new Panel(__('Passport'), [
Select::make(__('Passport serie'), 'passport_serie')
->displayUsingLabels()
->searchable()
->options(PassportRepo::values())
->size('w-1/3')
->rules('required')
->sortable(),
Number::make(__('Passport id'), 'passport_id')
->size('w-1/3')
->rules('required'),
Date::make(__('Passport date of issue'), 'passport_given_at')
->size('w-1/3')
->rules('required'),
Text::make(__('Passport given by'), 'passport_given_by')
->size('w-1/2')
->rules('required'),
Text::make(__('Born place (passport)'), 'born_place')
->size('w-1/2')
->rules('required'),
]),
new Panel(__('Contact data'), [
Email::make(__('Email'), 'email')
->size('w-1/4')
->rules('nullable', 'email'),
NovaInputmask::make(__('Phone'), 'phone')
->phonenumber('TM')
->size('w-1/4')
->rules('required'),
NovaInputmask::make(__('Phone Additional'), 'phone_additional')
->phonenumber('TM')
->size('w-1/4')
->rules('required'),
NovaInputmask::make(__('Home phone'), 'phone_home')
->size('w-1/4')
->rules('required'),
]),
new Panel(__('Job'), [
Text::make(__('Work company name'), 'work_company')
->rules('required', 'string', 'max:255')
->size('w-1/2'),
NovaInputmask::make(__('HR department work number'), 'work_company_accountant_number')
->size('w-1/2')
->rules('required'),
Select::make(__('Work region'), 'work_region')
->displayUsingLabels()
->searchable()
->options(RegionRepo::values())
->default(RegionRepo::default())
->size('w-1/2')
->rules('required')
->sortable(),
Select::make(__('Work province'), 'work_province')
->displayUsingLabels()
->searchable()
->dependsOn('region', BranchNovaRepo::dependsOnRegion('work_region'))
->size('w-1/2')
->rules('required'),
Text::make(__('Position'), 'work_position')
->size('w-1/2')
->rules('required'),
Text::make(__('Salary'), 'work_salary')
->size('w-1/4')
->rules('required'),
Date::make(__('Work started at'), 'work_started_at')
->size('w-1/4')
->rules('required'),
]),
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('filled_by')->constrained('users')->restrictOnDelete();
// $table->foreignId('user_id')->constrained('users')->restrictOnDelete(); // $table->foreignId('user_id')->constrained('users')->restrictOnDelete();

View File

@@ -45,8 +45,6 @@ class User extends Resource
return [ return [
ID::make()->sortable(), ID::make()->sortable(),
Gravatar::make()->maxWidth(50),
Text::make('Name') Text::make('Name')
->sortable() ->sortable()
->rules('required', 'max:255'), ->rules('required', 'max:255'),

View File

@@ -1,90 +0,0 @@
<?php
namespace App\Nova\Wizards;
use App\Models\User;
use Laravel\Nova\Fields\Number;
use Laravel\Nova\Fields\Text;
use Laravel\Nova\Fields\Textarea;
use Wdelfuego\NovaWizard\AbstractWizard;
class AddUserWizard extends AbstractWizard
{
public function wizardViewData(): array
{
return [
'steps' => [
[
'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'],
];
}
}

View File

@@ -21,7 +21,6 @@ use Laravel\Nova\Menu\MenuItem;
use Laravel\Nova\Menu\MenuSection; use Laravel\Nova\Menu\MenuSection;
use Laravel\Nova\Nova; use Laravel\Nova\Nova;
use Laravel\Nova\NovaApplicationServiceProvider; use Laravel\Nova\NovaApplicationServiceProvider;
use Wdelfuego\NovaWizard\NovaWizard;
class NovaServiceProvider extends NovaApplicationServiceProvider class NovaServiceProvider extends NovaApplicationServiceProvider
{ {
@@ -38,6 +37,7 @@ class NovaServiceProvider extends NovaApplicationServiceProvider
$this->setupNavigation(); $this->setupNavigation();
$this->setupUserNavigation(); $this->setupUserNavigation();
$this->setupUserSettings(); $this->setupUserSettings();
$this->setupAssets();
} }
/** /**
@@ -84,7 +84,6 @@ class NovaServiceProvider extends NovaApplicationServiceProvider
LocaleSwitcher::make() LocaleSwitcher::make()
->setLocales(config('app.locales')) ->setLocales(config('app.locales'))
->onSwitchLocale(NovaRepo::localeSwitcherSave()), ->onSwitchLocale(NovaRepo::localeSwitcherSave()),
// new NovaWizard('add-user'),
]; ];
} }
@@ -107,7 +106,6 @@ class NovaServiceProvider extends NovaApplicationServiceProvider
MenuSection::make(__('Orders'), [ MenuSection::make(__('Orders'), [
MenuItem::resource(LoanOrder::class), MenuItem::resource(LoanOrder::class),
// MenuItem::link('Add a user', NovaWizard::pathToWizard('add-user'))
])->icon('collection')->collapsable(), ])->icon('collection')->collapsable(),
MenuSection::make(__('System'), [ MenuSection::make(__('System'), [
@@ -117,7 +115,7 @@ class NovaServiceProvider extends NovaApplicationServiceProvider
MenuItem::resource(Permission::class), MenuItem::resource(Permission::class),
])->collapsable(), ])->collapsable(),
MenuGroup::make(__('Loans'), [ MenuGroup::make(__('Loan'), [
MenuItem::resource(LoanType::class), MenuItem::resource(LoanType::class),
])->collapsable(), ])->collapsable(),
@@ -149,4 +147,12 @@ class NovaServiceProvider extends NovaApplicationServiceProvider
{ {
Nova::serving(fn (ServingNova $event) => NovaRepo::serving($event)); 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'));
}
} }

View File

@@ -23,7 +23,7 @@ class NovaRepo
{ {
$user = $event->request->user(); $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); app()->setLocale($user->locale);
} }
} }

View File

@@ -33,4 +33,12 @@ class EducationRepo
self::PHD => __('PHD'), self::PHD => __('PHD'),
]; ];
} }
/**
* Default education status
*/
public static function default(): string
{
return self::HIGH_EDUCATION;
}
} }

View File

@@ -27,4 +27,12 @@ class MarriageRepo
self::SINGLE => __('Single'), self::SINGLE => __('Single'),
]; ];
} }
/**
* Default marriage value
*/
public static function default(): string
{
return self::MARRIED;
}
} }

View File

@@ -8,16 +8,17 @@
"php": "^8.1", "php": "^8.1",
"eolica/nova-locale-switcher": "dev-support-nova-4", "eolica/nova-locale-switcher": "dev-support-nova-4",
"guzzlehttp/guzzle": "^7.2", "guzzlehttp/guzzle": "^7.2",
"konsulting/nova-target": "^1.0",
"laravel/framework": "^10.10", "laravel/framework": "^10.10",
"laravel/nova": "*", "laravel/nova": "*",
"laravel/sanctum": "^3.3", "laravel/sanctum": "^3.3",
"laravel/tinker": "^2.8", "laravel/tinker": "^2.8",
"nurmuhammet/nova-inputmask": "^1.0", "nurmuhammet/nova-inputmask": "^1.0",
"outl1ne/nova-grid": "@dev",
"outl1ne/nova-translatable": "^2.2", "outl1ne/nova-translatable": "^2.2",
"spatie/laravel-permission": "^6.1", "spatie/laravel-permission": "^6.1",
"spatie/laravel-translatable": "^6.5", "spatie/laravel-translatable": "^6.5",
"trin4ik/nova-switcher": "^0.4.0", "trin4ik/nova-switcher": "^0.4.0"
"wdelfuego/nova-wizard": "^1.0"
}, },
"require-dev": { "require-dev": {
"fakerphp/faker": "^1.9.1", "fakerphp/faker": "^1.9.1",

157
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "e54517769c07296164429fd898ff3555", "content-hash": "f339ec5654f56037abedbd8f4046b180",
"packages": [ "packages": [
{ {
"name": "brick/math", "name": "brick/math",
@@ -1501,6 +1501,52 @@
], ],
"time": "2023-10-27T10:59:02+00:00" "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", "name": "laravel/framework",
"version": "v10.33.0", "version": "v10.33.0",
@@ -3216,6 +3262,61 @@
], ],
"time": "2023-11-22T15:34:18+00:00" "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", "name": "outl1ne/nova-translatable",
"version": "2.2.0", "version": "2.2.0",
@@ -7071,57 +7172,6 @@
], ],
"time": "2022-03-08T17:03:00+00:00" "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", "name": "webmozart/assert",
"version": "1.11.0", "version": "1.11.0",
@@ -9624,7 +9674,8 @@
"aliases": [], "aliases": [],
"minimum-stability": "stable", "minimum-stability": "stable",
"stability-flags": { "stability-flags": {
"eolica/nova-locale-switcher": 20 "eolica/nova-locale-switcher": 20,
"outl1ne/nova-grid": 20
}, },
"prefer-stable": true, "prefer-stable": true,
"prefer-lowest": false, "prefer-lowest": false,

View File

@@ -1,46 +0,0 @@
<?php
use App\Nova\Wizards\AddUserWizard;
/*
* © Copyright 2023 · Willem Vervuurt, Studio Delfuego
*
* You can modify, use and distribute this package under one of two licenses:
* 1. GNU AGPLv3
* 2. A perpetual, non-revocable and 100% free (as in beer) do-what-you-want
* license that allows both non-commercial and commercial use, under conditions.
* See LICENSE.md for details.
*
* (it boils down to: do what you want as long as you're building and/or
* using wizards, but don't embed this package or a modified version
* of it in free or paid-for software libraries and packages aimed at developers).
*/
return [
'add-user' => [
/*
* 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',
],
];

View File

@@ -13,7 +13,7 @@ return new class extends Migration
{ {
Schema::create('loan_orders', function (Blueprint $table) { Schema::create('loan_orders', function (Blueprint $table) {
$table->id(); $table->id();
$table->string('unique_id')->unique(); $table->string('unique_id')->nullable()->unique();
$table->foreignId('loan_type')->constrained()->restrictOnDelete(); $table->foreignId('loan_type')->constrained()->restrictOnDelete();

View File

@@ -0,0 +1,7 @@
.nova-grid--field-wrapper {
border-color: rgba(0, 0, 0, 0) !important;
}
input {
width: 100%;
}