loan order improvemetns

This commit is contained in:
2023-11-27 01:30:49 +05:00
parent 0fcdedbcc7
commit c50aae497e
10 changed files with 104 additions and 92 deletions

View File

@@ -2,7 +2,7 @@
namespace App\Nova\Resources\Branch\Concerns;
use App\Models\Branch\Branch;
use App\Models\System\Location\Province;
use Closure;
class BranchNovaRepo
@@ -15,7 +15,7 @@ class BranchNovaRepo
return function ($field, $request, $formData) use ($attribute) {
$field->options(
$formData->{$attribute}
? Branch::where('region', $formData->{$attribute})->pluck('name', 'id')
? Province::where('region', $formData->{$attribute})->pluck('name', 'id')
: []
);
};

View File

@@ -2,7 +2,6 @@
namespace App\Nova\Resources\Order\Loan\Concerns;
use App\Nova\Resources\Order\Loan\Concerns\LoanOrderNovaRepo;
use Illuminate\Database\Eloquent\Model;
use Laravel\Nova\Http\Requests\NovaRequest;
@@ -10,9 +9,6 @@ trait LoanOrderEvents
{
/**
* Register a callback to be called after the resource is created.
*
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
* @param \Illuminate\Database\Eloquent\Model $model
*/
public static function afterCreate(NovaRequest $request, Model $model): void
{

View File

@@ -0,0 +1,57 @@
<?php
namespace App\Nova\Resources\Order\Loan\Concerns;
use App\Repos\Order\Loan\BranchRepo;
use App\Repos\Order\Loan\LoanTypeRepo;
use App\Repos\Order\OrderRepo;
use App\Repos\System\Settings\Location\RegionRepo;
use Laravel\Nova\Fields\Badge;
use Laravel\Nova\Fields\ID;
use Laravel\Nova\Fields\Select;
use Laravel\Nova\Fields\Text;
class LoanOrderFieldsForIndex
{
/**
* Loan Order fields for "create"
*/
public static function make(): array
{
return [
ID::make()->hide(),
Text::make(__('ID'), 'unique_id')->sortable(),
Select::make(__('Loan type'), 'loan_type')
->displayUsingLabels()
->options(LoanTypeRepo::values())
->sortable(),
Select::make(__('Region'), 'region')
->displayUsingLabels()
->options(RegionRepo::values())
->sortable(),
Select::make(__('Branch'), 'branch_id')
->displayUsingLabels()
->options(BranchRepo::values())
->sortable(),
Text::make(__('Name'), 'customer_name'),
Text::make(__('Surname'), 'customer_surname'),
Text::make(__('Phone'), 'phone'),
Badge::make(__('Status'), 'status')
->map(OrderRepo::statusClasses())
->addTypes([
'primary' => 'dark:bg-gray-900 bg-gray-600 text-white',
])
->labels(OrderRepo::statusValues())
->withIcons()
->sortable(),
];
}
}

View File

@@ -4,7 +4,6 @@ namespace App\Nova\Resources\Order\Loan\Concerns;
use App\Models\Branch\Branch;
use App\Repos\Order\OrderRepo;
use Closure;
use Illuminate\Database\Eloquent\Model;
use Laravel\Nova\Http\Requests\NovaRequest;
@@ -13,7 +12,7 @@ class LoanOrderNovaRepo
public static function fillUniqueId($request, $model): string
{
return mb_strtoupper(sprintf(
'%s-%s',
'%s-%s',
Branch::find($request->branch_id)->unique_code ?? 'TB',
$model->id
)) ?? uniqid();

View File

@@ -6,26 +6,20 @@ 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\LoanOrderEvents;
use App\Nova\Resources\Order\Loan\Concerns\LoanOrderNovaRepo;
use App\Nova\Resources\Order\Loan\Concerns\LoanOrderFieldsForIndex;
use App\Repos\Order\Loan\BranchRepo;
use App\Repos\Order\Loan\LoanTypeRepo;
use App\Repos\Order\OrderRepo;
use App\Repos\System\Settings\Legal\EducationRepo;
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\Badge;
use Laravel\Nova\Fields\Date;
use Laravel\Nova\Fields\Email;
use Laravel\Nova\Fields\File;
use Laravel\Nova\Fields\Hidden;
use Laravel\Nova\Fields\ID;
use Laravel\Nova\Fields\Image;
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;
@@ -55,7 +49,7 @@ class LoanOrder extends Resource
* @var array
*/
public static $search = [
'unique_id', 'customer_name', 'customer_surname'
'unique_id', 'customer_name', 'customer_surname',
];
/**
@@ -63,21 +57,21 @@ class LoanOrder extends Resource
*
* @var bool
*/
// public static $polling = true;
public static $polling = true;
// /**
// * The interval at which Nova should poll for new resources.
// *
// * @var int
// */
// public static $pollingInterval = 120;
/**
* The interval at which Nova should poll for new resources.
*
* @var int
*/
public static $pollingInterval = 120;
// /**
// * Indicates whether to show the polling toggle button inside Nova.
// *
// * @var bool
// */
// public static $showPollingToggle = true;
/**
* Indicates whether to show the polling toggle button inside Nova.
*
* @var bool
*/
public static $showPollingToggle = true;
/**
* Get the displayable label of the resource.
@@ -100,41 +94,7 @@ class LoanOrder extends Resource
*/
public function fieldsForIndex(NovaRequest $request): array
{
return [
ID::make()->hide(),
Text::make(__('ID'), 'unique_id')->sortable(),
Select::make(__('Loan type'), 'loan_type')
->displayUsingLabels()
->options(LoanTypeRepo::values())
->sortable(),
Select::make(__('Region'), 'region')
->displayUsingLabels()
->options(RegionRepo::values())
->sortable(),
Select::make(__('Branch'), 'branch_id')
->displayUsingLabels()
->options(BranchRepo::values())
->sortable(),
Text::make(__('Name'), 'customer_name'),
Text::make(__('Surname'), 'customer_surname'),
Text::make(__('Phone'), 'phone'),
Badge::make(__('Status'), 'status')
->map(OrderRepo::statusClasses())
->addTypes([
'primary' => 'dark:bg-gray-900 bg-gray-600 text-white',
])
->labels(OrderRepo::statusValues())
->withIcons()
->sortable(),
];
return LoanOrderFieldsForIndex::make();
}
/**
@@ -163,7 +123,7 @@ class LoanOrder extends Resource
->default(RegionRepo::default())
->size('w-1/2')
->rules('required')
->sortable(),
->sortable(),
Select::make(__('Branch'), 'branch_id')
->displayUsingLabels()
@@ -287,8 +247,8 @@ class LoanOrder extends Resource
->displayUsingLabels()
->searchable()
->dependsOn('region', BranchNovaRepo::dependsOnRegion('work_region'))
->size('w-1/2'),
// ->rules('required'),
->size('w-1/2')
->rules('required'),
Text::make(__('Position'), 'work_position')
->size('w-1/2')

View File

@@ -4,7 +4,6 @@ namespace App\Nova;
use Illuminate\Http\Request;
use Illuminate\Validation\Rules;
use Laravel\Nova\Fields\Gravatar;
use Laravel\Nova\Fields\ID;
use Laravel\Nova\Fields\Password;
use Laravel\Nova\Fields\Text;

View File

@@ -12,6 +12,6 @@ class LoanTypeRepo
*/
public static function values(): Collection|array
{
return LoanType::pluck('name', 'id');
return LoanType::where('active', true)->pluck('name', 'id');
}
}