feat: ✨ add claim subjects crud
This commit is contained in:
parent
ced124b60e
commit
7df0fe4634
19 changed files with 692 additions and 28 deletions
172
app/Http/Controllers/Bo/ClaimSubjectController.php
Normal file
172
app/Http/Controllers/Bo/ClaimSubjectController.php
Normal file
|
|
@ -0,0 +1,172 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Bo;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Bo\ClaimSubjects\ClaimSubjectRequest;
|
||||
use App\Models\Brand;
|
||||
use App\Models\ClaimSubject;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class ClaimSubjectController extends Controller
|
||||
{
|
||||
/**
|
||||
* Create the controller instance.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->authorizeResource(ClaimSubject::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Contracts\View\View
|
||||
*/
|
||||
public function index(Request $request): \Illuminate\Contracts\View\View
|
||||
{
|
||||
/** @var \Illuminate\Database\Eloquent\Builder $query */
|
||||
$query = ClaimSubject::query()->when(
|
||||
$request->filled('brand'),
|
||||
fn($q) => $q->whereHas('brand', fn($q) => $q->where('id', $request->brand))
|
||||
);
|
||||
|
||||
if ($request->search) {
|
||||
$this->searchQuery(
|
||||
$query,
|
||||
$request->search,
|
||||
null,
|
||||
'label',
|
||||
);
|
||||
}
|
||||
|
||||
$this->sortQuery($query);
|
||||
$searchFields = trans('validation.custom.label');
|
||||
|
||||
$claimSubjectModels = $this->paginate($query);
|
||||
|
||||
return view('bo.pages.claim_subjects.index', compact('claimSubjectModels', 'searchFields'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the specified resource.
|
||||
*
|
||||
* @param \App\Models\ClaimSubject $claim_subject
|
||||
* @return \Illuminate\Contracts\View\View
|
||||
*/
|
||||
public function show(ClaimSubject $claim_subject): \Illuminate\Contracts\View\View
|
||||
{
|
||||
return view('bo.pages.claim_subjects.show', [
|
||||
'claimSubjectModel' => $claim_subject
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @param \App\Models\ClaimSubject $claim_subject
|
||||
* @return \Illuminate\Contracts\View\View
|
||||
*/
|
||||
public function create(ClaimSubject $claim_subject): \Illuminate\Contracts\View\View
|
||||
{
|
||||
$brandModels = Brand::query()->orderBy('name', 'ASC')->paginate($this->jsonItemPerPagination);
|
||||
return view('bo.pages.claim_subjects.create', [
|
||||
'claimSubjectModel' => $claim_subject,
|
||||
'brandModels' => $brandModels,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \App\Http\Requests\Bo\ClaimSubjects\ClaimSubjectRequest $request
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*/
|
||||
public function store(ClaimSubjectRequest $request): \Illuminate\Http\RedirectResponse
|
||||
{
|
||||
return DB::transaction(function () use ($request) {
|
||||
$claimSubjectModel = new ClaimSubject();
|
||||
$claimSubjectModel->fill($request->validated());
|
||||
if ($claimSubjectModel->saveOrFail()) {
|
||||
return redirect()
|
||||
->route('bo.claim_subjects.edit', $claimSubjectModel)
|
||||
->with('success', trans(
|
||||
':model a été créé.',
|
||||
['model' => Str::singular(trans('models.classes.claimsubjects'))]
|
||||
));
|
||||
}
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', trans(
|
||||
':model n\'a pas été créé.',
|
||||
['model' => Str::singular(trans('models.classes.claimsubjects'))]
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param \App\Models\ClaimSubject $claim_subject
|
||||
* @return \Illuminate\Contracts\View\View
|
||||
*/
|
||||
public function edit(ClaimSubject $claim_subject): \Illuminate\Contracts\View\View
|
||||
{
|
||||
$brandModels = Brand::query()->orderBy('name', 'ASC')->paginate($this->jsonItemPerPagination);
|
||||
return view('bo.pages.claim_subjects.edit', [
|
||||
'claimSubjectModel' => $claim_subject,
|
||||
'brandModels' => $brandModels,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a spacific resource in storage.
|
||||
*
|
||||
* @param \App\Http\Requests\Bo\ClaimSubjects\ClaimSubjectRequest $request
|
||||
* @param \App\Models\ClaimSubject $claim_subject
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*/
|
||||
public function update(ClaimSubjectRequest $request, ClaimSubject $claim_subject): \Illuminate\Http\RedirectResponse
|
||||
{
|
||||
return DB::transaction(function () use ($request, $claim_subject) {
|
||||
$claim_subject->fill($request->validated());
|
||||
if ($claim_subject->saveOrFail()) {
|
||||
return redirect()
|
||||
->route('bo.claim_subjects.edit', $claim_subject)
|
||||
->with('success', trans(
|
||||
':model a été mis à jour.',
|
||||
['model' => Str::singular(trans('models.classes.claimsubjects'))]
|
||||
));
|
||||
}
|
||||
return redirect()
|
||||
->back()
|
||||
->with('error', trans(
|
||||
':model n\'a pas été mis à jour.',
|
||||
['model' => Str::singular(trans('models.classes.claimsubjects'))]
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param \App\Models\ClaimSubject $claim_subject
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*/
|
||||
public function destroy(ClaimSubject $claim_subject): \Illuminate\Http\RedirectResponse
|
||||
{
|
||||
if ($claim_subject->deleteOrFail()) {
|
||||
return redirect()->route('bo.claim_subjects.index')
|
||||
->with('success', __('crud.messages.has_been_deleted', [
|
||||
'model' => Str::of(__('models.classes.claimsubjects'))->singular()
|
||||
]));
|
||||
}
|
||||
return redirect()->back()
|
||||
->with('error', __('crud.messages.cannot_be_deleted', [
|
||||
'model' => Str::of(__('models.classes.claimsubjects'))->singular()
|
||||
]));
|
||||
}
|
||||
}
|
||||
44
app/Http/Requests/Bo/ClaimSubjects/ClaimSubjectRequest.php
Normal file
44
app/Http/Requests/Bo/ClaimSubjects/ClaimSubjectRequest.php
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Requests\Bo\ClaimSubjects;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class ClaimSubjectRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function authorize(): bool
|
||||
{
|
||||
return auth('backend')->check();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'brand_id' => 'required|exists:brands,id',
|
||||
'label' => 'required|string|min:3|max:255',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get custom attributes for validator errors.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function attributes(): array
|
||||
{
|
||||
return [
|
||||
'brand_id' => trans('models.classes.brands'),
|
||||
'label' => trans('validation.attributes.label'),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -45,7 +45,7 @@ class UpdateClaimRequest extends FormRequest
|
|||
{
|
||||
return [
|
||||
'brand_id' => trans('models.classes.brands'),
|
||||
'subject_id' => trans('models.classes.claim_subjects'),
|
||||
'subject_id' => trans('models.classes.claimsubjects'),
|
||||
'type' => trans('validation.custom.type'),
|
||||
'status' => trans('validation.custom.status'),
|
||||
'response_type' => trans('validation.custom.response_type'),
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ class Claim extends Model
|
|||
event(new ClaimModelChanged(
|
||||
$model->load('claimSubject'),
|
||||
'claimSubject',
|
||||
trans('models.classes.claim_subjects'),
|
||||
trans('models.classes.claimsubjects'),
|
||||
$user,
|
||||
));
|
||||
}
|
||||
|
|
|
|||
87
app/Policies/ClaimSubjectPolicy.php
Normal file
87
app/Policies/ClaimSubjectPolicy.php
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
<?php
|
||||
|
||||
namespace App\Policies;
|
||||
|
||||
use App\Enums\Users\RoleEnum;
|
||||
use App\Models\User;
|
||||
use App\Policies\Rules\UserStaticRules;
|
||||
|
||||
class ClaimSubjectPolicy
|
||||
{
|
||||
/**
|
||||
* ViewAny a claim subject.
|
||||
*
|
||||
* @param \App\Models\User $authUser
|
||||
* @return boolean
|
||||
*/
|
||||
public function viewAny(User $authUser): bool
|
||||
{
|
||||
return UserStaticRules::atLeastRole($authUser, RoleEnum::admin);
|
||||
}
|
||||
|
||||
/**
|
||||
* View a claim subject.
|
||||
*
|
||||
* @param \App\Models\User $authUser
|
||||
* @return boolean
|
||||
*/
|
||||
public function view(User $authUser): bool
|
||||
{
|
||||
return UserStaticRules::atLeastRole($authUser, RoleEnum::admin);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a claim subject.
|
||||
*
|
||||
* @param \App\Models\User $authUser
|
||||
* @return boolean
|
||||
*/
|
||||
public function create(User $authUser): bool
|
||||
{
|
||||
return UserStaticRules::atLeastRole($authUser, RoleEnum::admin);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a claim subject.
|
||||
*
|
||||
* @param \App\Models\User $authUser
|
||||
* @return boolean
|
||||
*/
|
||||
public function store(User $authUser): bool
|
||||
{
|
||||
return UserStaticRules::atLeastRole($authUser, RoleEnum::admin);
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a claim subject.
|
||||
*
|
||||
* @param \App\Models\User $authUser
|
||||
* @return boolean
|
||||
*/
|
||||
public function edit(User $authUser): bool
|
||||
{
|
||||
return UserStaticRules::atLeastRole($authUser, RoleEnum::admin);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a claim subject.
|
||||
*
|
||||
* @param \App\Models\User $authUser
|
||||
* @return boolean
|
||||
*/
|
||||
public function update(User $authUser): bool
|
||||
{
|
||||
return UserStaticRules::atLeastRole($authUser, RoleEnum::admin);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a claim subject.
|
||||
*
|
||||
* @param \App\Models\User $authUser
|
||||
* @return boolean
|
||||
*/
|
||||
public function delete(User $authUser): bool
|
||||
{
|
||||
return UserStaticRules::atLeastRole($authUser, RoleEnum::admin);
|
||||
}
|
||||
}
|
||||
|
|
@ -2,17 +2,17 @@
|
|||
|
||||
return [
|
||||
'classes' => [
|
||||
'user' => 'user',
|
||||
'activity_log' => 'activity log|activity logs',
|
||||
'services' => 'Services',
|
||||
'brands' => 'Brands',
|
||||
'customers' => 'Customers',
|
||||
'questions' => 'Questions',
|
||||
'answers' => 'Answers',
|
||||
'singleoptins' => 'Single Opt-ins',
|
||||
'claims' => 'Claims',
|
||||
'claim_subjects' => 'Subjects',
|
||||
'claim_mail_templates' => 'Templates',
|
||||
'user' => 'user',
|
||||
'activity_log' => 'activity log|activity logs',
|
||||
'services' => 'Services',
|
||||
'brands' => 'Brands',
|
||||
'customers' => 'Customers',
|
||||
'questions' => 'Questions',
|
||||
'answers' => 'Answers',
|
||||
'singleoptins' => 'Single Opt-ins',
|
||||
'claims' => 'Claims',
|
||||
'claimsubjects' => 'Subjects',
|
||||
'claimmailtemplates' => 'Templates',
|
||||
],
|
||||
'common' => [
|
||||
'title' => 'Title',
|
||||
|
|
|
|||
|
|
@ -232,5 +232,6 @@ return [
|
|||
'reference' => 'reference',
|
||||
'type' => 'type',
|
||||
'status' => 'status',
|
||||
'label' => 'label',
|
||||
],
|
||||
];
|
||||
|
|
|
|||
|
|
@ -2,17 +2,17 @@
|
|||
|
||||
return [
|
||||
'classes' => [
|
||||
'user' => 'utilisateur',
|
||||
'activity_log' => 'journal d\'activité|journaux d\'activité',
|
||||
'services' => 'Services',
|
||||
'brands' => 'Marques',
|
||||
'questions' => 'Questions',
|
||||
'answers' => 'Réponses',
|
||||
'customers' => 'Clients',
|
||||
'singleoptins' => 'Opt-ins uniques',
|
||||
'claims' => 'Réclamations',
|
||||
'claim_subjects' => 'Sujets',
|
||||
'claim_mail_templates' => 'Modèles',
|
||||
'user' => 'utilisateur',
|
||||
'activity_log' => 'journal d\'activité|journaux d\'activité',
|
||||
'services' => 'Services',
|
||||
'brands' => 'Marques',
|
||||
'questions' => 'Questions',
|
||||
'answers' => 'Réponses',
|
||||
'customers' => 'Clients',
|
||||
'singleoptins' => 'Opt-ins uniques',
|
||||
'claims' => 'Réclamations',
|
||||
'claimsubjects' => 'Sujets',
|
||||
'claimmailtemplates' => 'Modèles',
|
||||
],
|
||||
'common' => [
|
||||
'title' => 'Titre',
|
||||
|
|
|
|||
|
|
@ -232,5 +232,6 @@ return [
|
|||
'reference' => 'référence',
|
||||
'type' => 'type',
|
||||
'status' => 'status',
|
||||
'label' => 'label',
|
||||
],
|
||||
];
|
||||
|
|
|
|||
|
|
@ -60,12 +60,12 @@
|
|||
for="brand"
|
||||
class="col-form-label"
|
||||
>
|
||||
<b>{{ trans.methods.__('Modifier la :model', { model: trans.methods.__("models.classes.claim_subjects") }) }} *</b>
|
||||
<b>{{ trans.methods.__('Modifier la :model', { model: trans.methods.__("models.classes.claimsubjects") }) }} *</b>
|
||||
</label>
|
||||
<SearchBelongsToDropdown
|
||||
id="subject"
|
||||
name="subject_id"
|
||||
:label="trans.methods.__('Modifier la :model', { model: trans.methods.__('models.classes.claim_subjects') })"
|
||||
:label="trans.methods.__('Modifier la :model', { model: trans.methods.__('models.classes.claimsubjects') })"
|
||||
:model="claimModel"
|
||||
targetclass="App\Models\ClaimSubject"
|
||||
:modellistpaginate="claimSubjectModels"
|
||||
|
|
@ -76,7 +76,7 @@
|
|||
:multiple="false"
|
||||
:required="true"
|
||||
:disabled="loading || isTreatedClaim"
|
||||
:placeholder="trans.methods.__('Rechercher une :model', { model: trans.methods.__('models.classes.claim_subjects') })"
|
||||
:placeholder="trans.methods.__('Rechercher une :model', { model: trans.methods.__('models.classes.claimsubjects') })"
|
||||
@selected-value-changed="setSelectedSubject"
|
||||
/>
|
||||
<small class="text-danger m-0">
|
||||
|
|
@ -85,7 +85,7 @@
|
|||
</td>
|
||||
<template v-else>
|
||||
<td class="align-middle fw-bold">
|
||||
{{ trans.methods.__("models.classes.claim_subjects") }}
|
||||
{{ trans.methods.__("models.classes.claimsubjects") }}
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
{{ selectParameters.subject?.label }}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
\App\Models\Service::class,
|
||||
\App\Models\SingleOptin::class,
|
||||
\App\Models\Claim::class,
|
||||
\App\Models\ClaimSubject::class,
|
||||
];
|
||||
@endphp
|
||||
@foreach ($modelsClasses as $crudModel)
|
||||
|
|
|
|||
46
resources/views/bo/pages/claim_subjects/create.blade.php
Normal file
46
resources/views/bo/pages/claim_subjects/create.blade.php
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
@extends('bo.layout')
|
||||
|
||||
@section('title', sprintf('%s - %s', __('models.classes.claimsubjects'), str(__('création'))->ucfirst()))
|
||||
@section('description', __('Création d\'une :model', ['model' => __('models.classes.claimsubjects')]))
|
||||
@section('metaIndex', 'noindex,nofollow')
|
||||
|
||||
@section('content')
|
||||
<div class="card border-0">
|
||||
<div class="card-header">
|
||||
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap">
|
||||
<div class="d-flex align-items-start flex-row">
|
||||
@can('viewAny', \App\Models\ClaimSubject::class)
|
||||
<a class="btn btn-primary text-decoration-none me-2" data-bs-tooltip="tooltip" data-bs-placement="top"
|
||||
data-bs-tooltip="tooltip" href="{{ route('bo.claim_subjects.index') }}"
|
||||
title="{{ __('Retourner sur la liste des :model', ['model' => __('models.classes.claimsubjects')]) }}">
|
||||
<i class="fa-solid fa-arrow-left"></i>
|
||||
</a>
|
||||
@endcan
|
||||
@include('modules.breadcrumbs.breadcrumb-body')
|
||||
</div>
|
||||
@can('create', $claimSubjectModel)
|
||||
<div class="col-12 col-md-4 d-flex justify-content-center justify-content-md-end align-items-center">
|
||||
<button class="btn btn-primary" id="formSubmitClone" data-bs-tooltip="tooltip" type="button"
|
||||
title="{{ __('Sauvegarder cette :model', ['model' => str(__('models.classes.claimsubjects'))->singular()]) }}">
|
||||
{{ __('Sauvegarder') }}
|
||||
</button>
|
||||
</div>
|
||||
@endcan
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form action="{{ route('bo.claim_subjects.store') }}" method="POST">
|
||||
@csrf
|
||||
@include('bo.pages.claim_subjects.form')
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
@can('create', $claimSubjectModel)
|
||||
<button class="btn btn-primary" id="formSubmit" data-bs-tooltip="tooltip" type="submit"
|
||||
title="{{ __('Sauvegarder cette :model', ['model' => str(__('models.classes.claimsubjects'))->singular()]) }}">{{ __('Sauvegarder') }}</button>
|
||||
@endcan
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
65
resources/views/bo/pages/claim_subjects/edit.blade.php
Normal file
65
resources/views/bo/pages/claim_subjects/edit.blade.php
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
@extends('bo.layout')
|
||||
|
||||
@section('title', sprintf('%s - %s', __('models.classes.claimsubjects'), str(__('édition'))->ucfirst()))
|
||||
@section('description', __('Édition d\'une :model', ['model' => __('models.classes.claimsubjects')]))
|
||||
@section('metaIndex', 'noindex,nofollow')
|
||||
|
||||
@section('content')
|
||||
<div class="card border-0">
|
||||
<div class="card-header">
|
||||
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap">
|
||||
<div class="d-flex align-items-start flex-row">
|
||||
@can('viewAny', \App\Models\ClaimSubject::class)
|
||||
<a class="btn btn-primary text-decoration-none me-2" data-bs-tooltip="tooltip" data-bs-placement="top"
|
||||
data-bs-tooltip="tooltip" href="{{ route('bo.claim_subjects.index') }}"
|
||||
title="{{ __('Retourner sur la liste des :model', ['model' => __('models.classes.claimsubjects')]) }}">
|
||||
<i class="fa-solid fa-arrow-left"></i>
|
||||
</a>
|
||||
@endcan
|
||||
@include('modules.breadcrumbs.breadcrumb-body')
|
||||
</div>
|
||||
<form class="btn-group" id="dataDelete"
|
||||
action="{{ route('bo.claim_subjects.destroy', $claimSubjectModel) }}" method="POST">
|
||||
@can('view', $claimSubjectModel)
|
||||
<a class="btn btn-warning" data-bs-tooltip="tooltip"
|
||||
href="{{ route('bo.claim_subjects.show', $claimSubjectModel->getKey()) }}"
|
||||
title="{{ __('Voir ce :model', ['model' => str(__('models.classes.claimsubjects'))->singular()]) }}">
|
||||
<i class="fa-solid fa-eye"></i>
|
||||
</a>
|
||||
@endcan
|
||||
@can('update', $claimSubjectModel)
|
||||
<button class="btn btn-primary" id="formSubmitClone" data-bs-tooltip="tooltip" type="button"
|
||||
title="{{ __('Sauvegarder ce :model', ['model' => str(__('models.classes.claimsubjects'))->singular()]) }}">
|
||||
{{ __('Sauvegarder') }}
|
||||
</button>
|
||||
@endcan
|
||||
@can('delete', $claimSubjectModel)
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button class="btn btn-danger" data-bs-tooltip="tooltip"
|
||||
title="{{ __('Supprimer ce :model', ['model' => str(__('models.classes.claimsubjects'))->singular()]) }}">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
</button>
|
||||
@endcan
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form action="{{ route('bo.claim_subjects.update', $claimSubjectModel->getKey()) }}" method="POST">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
@include('bo.pages.claim_subjects.form')
|
||||
<div class="row">
|
||||
<div class="col text-center">
|
||||
@can('update', $claimSubjectModel)
|
||||
<button class="btn btn-primary" id="formSubmit" data-bs-tooltip="tooltip" type="submit"
|
||||
title="{{ __('Sauvegarder ce :model', ['model' => str(__('models.classes.claimsubjects'))->singular()]) }}">
|
||||
{{ __('Sauvegarder') }}
|
||||
</button>
|
||||
@endcan
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
67
resources/views/bo/pages/claim_subjects/form.blade.php
Normal file
67
resources/views/bo/pages/claim_subjects/form.blade.php
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
<div class="row">
|
||||
{{-- BRAND --}}
|
||||
<div class="col-12 col-md-6 pb-3">
|
||||
<fieldset class="h-100 border p-3">
|
||||
<legend>{{ __('Marque') }}</legend>
|
||||
<div class="row">
|
||||
@include('bo.partials.inputs.search-belongs-to-dropdown', [
|
||||
'id' => 'claimSubjectBrand',
|
||||
'label' => __('Modifier la :model associée', [
|
||||
'model' => str(__('models.classes.brands'))->singular(),
|
||||
]),
|
||||
'name' => 'brand_id',
|
||||
'relation' => 'brand',
|
||||
'model' => $claimSubjectModel,
|
||||
'targetClass' => 'App\Models\Brand',
|
||||
'modelListPaginate' => $brandModels ?? [],
|
||||
'constructedRoute' => route('bo.brands.json-paginate'),
|
||||
'fieldName' => 'name',
|
||||
'multiple' => false,
|
||||
'required' => true,
|
||||
'disabled' => false,
|
||||
'placeholder' => __('Rechercher une :model', [
|
||||
'model' => str(__('models.classes.brands'))->singular(),
|
||||
]),
|
||||
'helper' => __('Sélectionner une :model qui sera associée parmis la liste.', [
|
||||
'model' => str(__('models.classes.brands'))->singular(),
|
||||
]),
|
||||
])
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
{{-- LABEL --}}
|
||||
<div class="col-12 col-md-6 mb-3">
|
||||
<fieldset class="h-100 border p-3">
|
||||
<legend>{{ str(__('validation.custom.label'))->ucfirst() }}</legend>
|
||||
<div class="row">
|
||||
<div class="col-12 mb-3">
|
||||
@include('bo.partials.inputs.varchar', [
|
||||
'id' => 'claimSubjectLabel',
|
||||
'label' => __('Nom du :model', [
|
||||
'model' => str(__('models.classes.claimsubjects'))->singular(),
|
||||
]),
|
||||
'hasWordCounter' => true,
|
||||
'name' => 'label',
|
||||
'required' => true,
|
||||
'model' => $claimSubjectModel ?? null,
|
||||
'helper' => __('Doit décrire précisément le produit (3 caractères minimum, 255 maximum).'),
|
||||
])
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@push('scripts')
|
||||
<script @if (isset($nonce)) nonce="{{ $nonce }}" @endif>
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
// Submit button clone.
|
||||
const submit = document.getElementById('formSubmit')
|
||||
submitClone = document.getElementById('formSubmitClone');
|
||||
submitClone.addEventListener('click', (event) => {
|
||||
event.preventDefault();
|
||||
submit.click();
|
||||
})
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
61
resources/views/bo/pages/claim_subjects/index-list.blade.php
Normal file
61
resources/views/bo/pages/claim_subjects/index-list.blade.php
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
<table class="table table-hover table-fix-action m-0">
|
||||
<thead class="border-top-0 border-start-0 border-end-0 border border-2">
|
||||
@include('bo.modules.table-col-sorter', [
|
||||
'cols' => [
|
||||
'label' => str(__('validation.custom.label'))->ucfirst(),
|
||||
'brand_id' => str(__('models.classes.brands'))->singular()->ucfirst(),
|
||||
'updated_at' => str(__('validation.attributes.updated_at'))->ucfirst(),
|
||||
],
|
||||
])
|
||||
</thead>
|
||||
<tbody>
|
||||
@if ($claimSubjectModels->count())
|
||||
@foreach ($claimSubjectModels as $claimSubjectModel)
|
||||
<tr>
|
||||
<td class="text-center align-middle">{{ $claimSubjectModel->label }}</td>
|
||||
<td class="text-center align-middle">{{ $claimSubjectModel->brand->name }}</td>
|
||||
<td class="text-center align-middle">
|
||||
<span class="badge bg-warning text-bg-warning text-wrap">
|
||||
{{ $claimSubjectModel->updated_at }}
|
||||
</span>
|
||||
</td>
|
||||
<td class="text-end align-middle">
|
||||
<form class="btn-group" id="dataDelete"
|
||||
action="{{ route('bo.claim_subjects.destroy', $claimSubjectModel) }}" method="POST">
|
||||
@can('view', $claimSubjectModel)
|
||||
<a class="btn btn-sm btn-warning" data-bs-tooltip="tooltip"
|
||||
href="{{ route('bo.claim_subjects.show', $claimSubjectModel->getKey()) }}"
|
||||
title="{{ __('Voir ce :model', ['model' => str(__('models.classes.claimsubjects'))->singular()]) }}">
|
||||
<i class="fa-solid fa-eye"></i>
|
||||
</a>
|
||||
@endcan
|
||||
@can('update', $claimSubjectModel)
|
||||
<a class="btn btn-sm btn-primary" data-bs-tooltip="tooltip"
|
||||
href="{{ route('bo.claim_subjects.edit', $claimSubjectModel->getKey()) }}"
|
||||
title="{{ __('Modifier ce :model', ['model' => str(__('models.classes.claimsubjects'))->singular()]) }}">
|
||||
<i class="fa-solid fa-pencil"></i>
|
||||
</a>
|
||||
@endcan
|
||||
@can('delete', $claimSubjectModel)
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button class="btn btn-sm btn-danger" data-bs-tooltip="tooltip"
|
||||
title="{{ __('Supprimer ce :model', ['model' => str(__('models.classes.claimsubjects'))->singular()]) }}">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
</button>
|
||||
@endcan
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@else
|
||||
<tr>
|
||||
<td class="text-center" colspan="5">
|
||||
<span class="h3">
|
||||
{{ __('Aucun résultat pour les :models', ['models' => __('models.classes.claimsubjects')]) }}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
</tbody>
|
||||
</table>
|
||||
41
resources/views/bo/pages/claim_subjects/index.blade.php
Normal file
41
resources/views/bo/pages/claim_subjects/index.blade.php
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
@extends('bo.layout')
|
||||
|
||||
@section('title', sprintf('%s - %s', __('models.classes.claimsubjects'), str(__('liste'))->ucfirst()))
|
||||
@section('description', __('Listage de toutes les :model', ['model' => __('models.classes.claimsubjects')]))
|
||||
@section('metaIndex', 'noindex,nofollow')
|
||||
|
||||
@section('content')
|
||||
<div class="row w-100 mx-auto">
|
||||
<div class="col p-0">
|
||||
<div class="card rounded-0 border-0">
|
||||
<div class="card-header">
|
||||
<div class="row w-100 mx-auto">
|
||||
<div class="col p-0">
|
||||
@include('modules.breadcrumbs.breadcrumb-body')
|
||||
</div>
|
||||
@can('create', \App\Models\ClaimSubject::class)
|
||||
<div class="col-md-3 d-flex align-items-center p-0">
|
||||
<div class="input-group justify-content-end">
|
||||
<a class="btn btn-primary" data-bs-tooltip="tooltip"
|
||||
href="{{ route('bo.claim_subjects.create') }}"
|
||||
title="{{ __('Ajouter une :model', ['model' => str(__('models.classes.claimsubjects'))->singular()]) }}">
|
||||
<i class="fa-solid fa-plus"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@endcan
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@include('bo.modules.search-bar')
|
||||
<div class="row w-100 mx-auto mb-2">
|
||||
<div class="col table-responsive p-0">
|
||||
@include('bo.pages.claim_subjects.index-list')
|
||||
</div>
|
||||
</div>
|
||||
{!! $claimSubjectModels->links() !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
57
resources/views/bo/pages/claim_subjects/show.blade.php
Normal file
57
resources/views/bo/pages/claim_subjects/show.blade.php
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
@extends('bo.layout', ['brParam' => $claimSubjectModel])
|
||||
|
||||
@section('title', sprintf('%s - %s', __('models.classes.claimsubjects'), str(__('aperçu'))->ucfirst()))
|
||||
@section('description', __('Aperçu d\'un :model', ['model' => __('models.classes.claimsubjects')]))
|
||||
@section('metaIndex', 'noindex,nofollow')
|
||||
@section('breadcrumb', request()->route()->getName())
|
||||
|
||||
@section('content')
|
||||
<div class="card border-0">
|
||||
<div class="card-header">
|
||||
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap">
|
||||
<div class="d-flex align-items-start flex-row">
|
||||
@can('viewAny', \App\Models\ClaimSubject::class)
|
||||
<a class="btn btn-primary text-decoration-none me-2" data-bs-tooltip="tooltip" data-bs-placement="top"
|
||||
data-bs-tooltip="tooltip" href="{{ route('bo.claim_subjects.index') }}"
|
||||
title="{{ __('Retourner sur la liste des :model', ['model' => __('models.classes.claimsubjects')]) }}">
|
||||
<i class="fa-solid fa-arrow-left"></i>
|
||||
</a>
|
||||
@endcan
|
||||
@include('modules.breadcrumbs.breadcrumb-body', ['brParam' => $claimSubjectModel])
|
||||
</div>
|
||||
<form class="btn-group" id="dataDelete"
|
||||
action="{{ route('bo.claim_subjects.destroy', $claimSubjectModel) }}" method="POST">
|
||||
@can('update', $claimSubjectModel)
|
||||
<a class="btn btn-primary" data-bs-tooltip="tooltip"
|
||||
href="{{ route('bo.claim_subjects.edit', $claimSubjectModel->getKey()) }}"
|
||||
title="{{ __('Modifier ce :model', ['model' => str(__('models.classes.claimsubjects'))->singular()]) }}">
|
||||
<i class="fa-solid fa-pencil"></i>
|
||||
</a>
|
||||
@endcan
|
||||
@can('delete', $claimSubjectModel)
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button class="btn btn-danger" data-bs-tooltip="tooltip"
|
||||
title="{{ __('Supprimer ce :model', ['model' => str(__('models.classes.claimsubjects'))->singular()]) }}">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
</button>
|
||||
@endcan
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table-sm table-bordered table-striped table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="w-50"><b>{{ str(__('validation.custom.label'))->ucfirst() }}</b></td>
|
||||
<td class="w-50">{{ $claimSubjectModel->label }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="w-50"><b>{{ __('Marque') }}</b></td>
|
||||
<td class="w-50">{{ $claimSubjectModel->brand->name }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -143,3 +143,20 @@ Breadcrumbs::for('bo.claims.edit', function (Generator $trail) {
|
|||
$trail->parent('bo.claims.index');
|
||||
$trail->push(trans('Édition'));
|
||||
});
|
||||
|
||||
// * CLAIM SUBJECTS
|
||||
Breadcrumbs::for('bo.claim_subjects.index', function (Generator $trail) {
|
||||
$trail->push(trans('models.classes.claimsubjects'), route('bo.claim_subjects.index'));
|
||||
});
|
||||
Breadcrumbs::for('bo.claim_subjects.create', function (Generator $trail) {
|
||||
$trail->parent('bo.claim_subjects.index');
|
||||
$trail->push(trans('Création'), route('bo.claim_subjects.create'));
|
||||
});
|
||||
Breadcrumbs::for('bo.claim_subjects.edit', function (Generator $trail) {
|
||||
$trail->parent('bo.claim_subjects.index');
|
||||
$trail->push(trans('Édition'));
|
||||
});
|
||||
Breadcrumbs::for('bo.claim_subjects.show', function (Generator $trail) {
|
||||
$trail->parent('bo.claim_subjects.index');
|
||||
$trail->push(trans('Aperçu'));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ use App\Http\Controllers\Bo\AnswerController;
|
|||
use App\Http\Controllers\Bo\BrandController;
|
||||
use App\Http\Controllers\Bo\ClaimController;
|
||||
use App\Http\Controllers\Bo\ClaimMessageController;
|
||||
use App\Http\Controllers\Bo\ClaimSubjectController;
|
||||
use App\Http\Controllers\Bo\CustomerController;
|
||||
use App\Http\Controllers\Bo\DashboardController;
|
||||
use App\Http\Controllers\Bo\QuestionController;
|
||||
|
|
@ -103,6 +104,9 @@ Route::middleware(['throttle:web', 'admin-secure'])->prefix('bo')->name('bo.')->
|
|||
Route::get('/{brand}/claim_mail_templates/json/paginate', [ClaimController::class, 'jsonClaimPaginateModels'])
|
||||
->name('claim_mail_templates.json-paginate');
|
||||
|
||||
// * CLAIM SUBJECTS.
|
||||
Route::resource('claim_subjects', ClaimSubjectController::class);
|
||||
|
||||
// * OTHERS.
|
||||
Route::post('theme/set', [Controller::class, 'setTheme'])->name('theme.set');
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue