Skip to content

Commit ccadc11

Browse files
committed
Product categories crud
1 parent b4ab5dd commit ccadc11

File tree

14 files changed

+547
-46
lines changed

14 files changed

+547
-46
lines changed

database/seeders/LaravelCrmTablesSeeder.php

Lines changed: 50 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -80,56 +80,61 @@ public function run()
8080

8181
app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions();
8282

83-
Permission::create(['name' => 'create crm leads', 'crm_permission' => 1]);
84-
Permission::create(['name' => 'view crm leads', 'crm_permission' => 1]);
85-
Permission::create(['name' => 'edit crm leads', 'crm_permission' => 1]);
86-
Permission::create(['name' => 'delete crm leads', 'crm_permission' => 1]);
87-
88-
Permission::create(['name' => 'create crm deals', 'crm_permission' => 1]);
89-
Permission::create(['name' => 'view crm deals', 'crm_permission' => 1]);
90-
Permission::create(['name' => 'edit crm deals', 'crm_permission' => 1]);
91-
Permission::create(['name' => 'delete crm deals', 'crm_permission' => 1]);
92-
93-
Permission::create(['name' => 'create crm people', 'crm_permission' => 1]);
94-
Permission::create(['name' => 'view crm people', 'crm_permission' => 1]);
95-
Permission::create(['name' => 'edit crm people', 'crm_permission' => 1]);
96-
Permission::create(['name' => 'delete crm people', 'crm_permission' => 1]);
97-
98-
Permission::create(['name' => 'create crm organisations', 'crm_permission' => 1]);
99-
Permission::create(['name' => 'view crm organisations', 'crm_permission' => 1]);
100-
Permission::create(['name' => 'edit crm organisations', 'crm_permission' => 1]);
101-
Permission::create(['name' => 'delete crm organisations', 'crm_permission' => 1]);
102-
103-
Permission::create(['name' => 'create crm users', 'crm_permission' => 1]);
104-
Permission::create(['name' => 'view crm users', 'crm_permission' => 1]);
105-
Permission::create(['name' => 'edit crm users', 'crm_permission' => 1]);
106-
Permission::create(['name' => 'delete crm users', 'crm_permission' => 1]);
107-
108-
Permission::create(['name' => 'create crm teams', 'crm_permission' => 1]);
109-
Permission::create(['name' => 'view crm teams', 'crm_permission' => 1]);
110-
Permission::create(['name' => 'edit crm teams', 'crm_permission' => 1]);
111-
Permission::create(['name' => 'delete crm teams', 'crm_permission' => 1]);
83+
Permission::firstOrCreate(['name' => 'create crm leads', 'crm_permission' => 1]);
84+
Permission::firstOrCreate(['name' => 'view crm leads', 'crm_permission' => 1]);
85+
Permission::firstOrCreate(['name' => 'edit crm leads', 'crm_permission' => 1]);
86+
Permission::firstOrCreate(['name' => 'delete crm leads', 'crm_permission' => 1]);
87+
88+
Permission::firstOrCreate(['name' => 'create crm deals', 'crm_permission' => 1]);
89+
Permission::firstOrCreate(['name' => 'view crm deals', 'crm_permission' => 1]);
90+
Permission::firstOrCreate(['name' => 'edit crm deals', 'crm_permission' => 1]);
91+
Permission::firstOrCreate(['name' => 'delete crm deals', 'crm_permission' => 1]);
92+
93+
Permission::firstOrCreate(['name' => 'create crm people', 'crm_permission' => 1]);
94+
Permission::firstOrCreate(['name' => 'view crm people', 'crm_permission' => 1]);
95+
Permission::firstOrCreate(['name' => 'edit crm people', 'crm_permission' => 1]);
96+
Permission::firstOrCreate(['name' => 'delete crm people', 'crm_permission' => 1]);
97+
98+
Permission::firstOrCreate(['name' => 'create crm organisations', 'crm_permission' => 1]);
99+
Permission::firstOrCreate(['name' => 'view crm organisations', 'crm_permission' => 1]);
100+
Permission::firstOrCreate(['name' => 'edit crm organisations', 'crm_permission' => 1]);
101+
Permission::firstOrCreate(['name' => 'delete crm organisations', 'crm_permission' => 1]);
102+
103+
Permission::firstOrCreate(['name' => 'create crm users', 'crm_permission' => 1]);
104+
Permission::firstOrCreate(['name' => 'view crm users', 'crm_permission' => 1]);
105+
Permission::firstOrCreate(['name' => 'edit crm users', 'crm_permission' => 1]);
106+
Permission::firstOrCreate(['name' => 'delete crm users', 'crm_permission' => 1]);
107+
108+
Permission::firstOrCreate(['name' => 'create crm teams', 'crm_permission' => 1]);
109+
Permission::firstOrCreate(['name' => 'view crm teams', 'crm_permission' => 1]);
110+
Permission::firstOrCreate(['name' => 'edit crm teams', 'crm_permission' => 1]);
111+
Permission::firstOrCreate(['name' => 'delete crm teams', 'crm_permission' => 1]);
112112

113-
Permission::create(['name' => 'view crm settings', 'crm_permission' => 1]);
114-
Permission::create(['name' => 'edit crm settings', 'crm_permission' => 1]);
115-
116-
Permission::create(['name' => 'create crm roles', 'crm_permission' => 1]);
117-
Permission::create(['name' => 'view crm roles', 'crm_permission' => 1]);
118-
Permission::create(['name' => 'edit crm roles', 'crm_permission' => 1]);
119-
Permission::create(['name' => 'delete crm roles', 'crm_permission' => 1]);
120-
121-
Permission::create(['name' => 'create crm products', 'crm_permission' => 1]);
122-
Permission::create(['name' => 'view crm products', 'crm_permission' => 1]);
123-
Permission::create(['name' => 'edit crm products', 'crm_permission' => 1]);
124-
Permission::create(['name' => 'delete crm products', 'crm_permission' => 1]);
113+
Permission::firstOrCreate(['name' => 'view crm settings', 'crm_permission' => 1]);
114+
Permission::firstOrCreate(['name' => 'edit crm settings', 'crm_permission' => 1]);
115+
116+
Permission::firstOrCreate(['name' => 'create crm roles', 'crm_permission' => 1]);
117+
Permission::firstOrCreate(['name' => 'view crm roles', 'crm_permission' => 1]);
118+
Permission::firstOrCreate(['name' => 'edit crm roles', 'crm_permission' => 1]);
119+
Permission::firstOrCreate(['name' => 'delete crm roles', 'crm_permission' => 1]);
120+
121+
Permission::firstOrCreate(['name' => 'create crm products', 'crm_permission' => 1]);
122+
Permission::firstOrCreate(['name' => 'view crm products', 'crm_permission' => 1]);
123+
Permission::firstOrCreate(['name' => 'edit crm products', 'crm_permission' => 1]);
124+
Permission::firstOrCreate(['name' => 'delete crm products', 'crm_permission' => 1]);
125+
126+
Permission::firstOrCreate(['name' => 'create crm product categories', 'crm_permission' => 1]);
127+
Permission::firstOrCreate(['name' => 'view crm product categories', 'crm_permission' => 1]);
128+
Permission::firstOrCreate(['name' => 'edit crm product categories', 'crm_permission' => 1]);
129+
Permission::firstOrCreate(['name' => 'delete crm product categories', 'crm_permission' => 1]);
125130

126-
$role = Role::create(['name' => 'Owner', 'crm_role' => 1])
131+
$role = Role::firstOrCreate(['name' => 'Owner', 'crm_role' => 1])
127132
->givePermissionTo(Permission::all());
128133

129-
$role = Role::create(['name' => 'Admin', 'crm_role' => 1])
134+
$role = Role::firstOrCreate(['name' => 'Admin', 'crm_role' => 1])
130135
->givePermissionTo(Permission::all());
131136

132-
$role = Role::create(['name' => 'Manager', 'crm_role' => 1])
137+
$role = Role::firstOrCreate(['name' => 'Manager', 'crm_role' => 1])
133138
->givePermissionTo([
134139
'create crm leads',
135140
'view crm leads',
@@ -149,7 +154,7 @@ public function run()
149154
'delete crm organisations',
150155
]);
151156

152-
$role = Role::create(['name' => 'Employee', 'crm_role' => 1])
157+
$role = Role::firstOrCreate(['name' => 'Employee', 'crm_role' => 1])
153158
->givePermissionTo([
154159
'create crm leads',
155160
'view crm leads',

resources/views/layouts/partials/nav-settings.blade.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
<li class="nav-item">
33
<a class="nav-link {{ (strpos(Route::currentRouteName(), 'laravel-crm.settings') === 0) ? 'active' : '' }}" href="{{ url(route('laravel-crm.settings.edit')) }}" role="tab" aria-controls="settings" aria-selected="true">General Settings</a>
44
</li>
5+
<li class="nav-item">
6+
<a class="nav-link {{ (strpos(Route::currentRouteName(), 'laravel-crm.product-categories') === 0) ? 'active' : '' }}" href="{{ url(route('laravel-crm.product-categories.index')) }}" role="tab" aria-controls="product-categories" aria-selected="false">Product Categories</a>
7+
</li>
58
<li class="nav-item">
69
<a class="nav-link {{ (strpos(Route::currentRouteName(), 'laravel-crm.roles') === 0) ? 'active' : '' }}" href="{{ url(route('laravel-crm.roles.index')) }}" role="tab" aria-controls="roles" aria-selected="false">Roles & Permissions</a>
710
</li>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
@extends('laravel-crm::layouts.app')
2+
3+
@section('content')
4+
5+
<form method="POST" action="{{ url(route('laravel-crm.product-categories.store')) }}">
6+
@csrf
7+
<div class="card">
8+
<div class="card-header">
9+
@include('laravel-crm::layouts.partials.nav-settings')
10+
</div>
11+
<div class="card-body">
12+
<h3 class="mb-3">Create product category <span class="float-right"><a type="button" class="btn btn-outline-secondary btn-sm" href="{{ url(route('laravel-crm.product-categories.index')) }}"><span class="fa fa-angle-double-left"></span> Back to product categories</a></span></h3>
13+
@include('laravel-crm::product-categories.partials.fields')
14+
</div>
15+
@component('laravel-crm::components.card-footer')
16+
<a href="{{ url(route('laravel-crm.product-categories.index')) }}" class="btn btn-outline-secondary">Cancel</a>
17+
<button type="submit" class="btn btn-primary">Save</button>
18+
@endcomponent
19+
</div>
20+
</form>
21+
22+
@endsection
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
@extends('laravel-crm::layouts.app')
2+
3+
@section('content')
4+
5+
<form method="POST" action="{{ url(route('laravel-crm.product-categories.update', $productCategory)) }}">
6+
@csrf
7+
@method('PUT')
8+
<div class="card">
9+
<div class="card-header">
10+
@include('laravel-crm::layouts.partials.nav-settings')
11+
</div>
12+
<div class="card-body">
13+
<h3 class="mb-3"> Edit product category <span class="float-right"><a type="button" class="btn btn-outline-secondary btn-sm" href="{{ url(route('laravel-crm.product-categories.index')) }}"><span class="fa fa-angle-double-left"></span> Back to product categories</a></span></h3>
14+
@include('laravel-crm::product-categories.partials.fields')
15+
</div>
16+
@component('laravel-crm::components.card-footer')
17+
<a href="{{ url(route('laravel-crm.product-categories.index')) }}" class="btn btn-outline-secondary">Cancel</a>
18+
<button type="submit" class="btn btn-primary">Save Changes</button>
19+
@endcomponent
20+
</div>
21+
</form>
22+
23+
@endsection
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
@extends('laravel-crm::layouts.app')
2+
3+
@section('content')
4+
5+
<div class="card">
6+
<div class="card-header">
7+
@include('laravel-crm::layouts.partials.nav-settings')
8+
</div>
9+
<div class="card-body">
10+
<div class="tab-content">
11+
<div class="tab-pane active" id="roles" role="tabpanel">
12+
<h3 class="mb-3"> Product categories <span class="float-right"><a type="button" class="btn btn-primary btn-sm" href="{{ url(route('laravel-crm.product-categories.create')) }}"><span class="fa fa-plus"></span> Add product category</a></span></h3>
13+
<div class="table-responsive">
14+
<table class="table mb-0 card-table table-hover">
15+
<thead>
16+
<tr>
17+
<th scope="col">Name</th>
18+
<th scope="col">Created</th>
19+
<th scope="col">Updated</th>
20+
<th scope="col">Products</th>
21+
<th scope="col"></th>
22+
</tr>
23+
</thead>
24+
<tbody>
25+
@foreach($productCategories as $productCategory)
26+
<tr class="has-link" data-url="{{ url(route('laravel-crm.product-categories.show',$productCategory)) }}">
27+
<td>{{ $productCategory->name }}</td>
28+
<td>{{ $productCategory->created_at->toFormattedDateString() }}</td>
29+
<td>{{ $productCategory->updated_at->toFormattedDateString() }}</td>
30+
<td>{{ $productCategory->products->count() }}</td>
31+
<td class="disable-link text-right">
32+
<a href="{{ route('laravel-crm.product-categories.show',$productCategory) }}" class="btn btn-outline-secondary btn-sm"><span class="fa fa-eye" aria-hidden="true"></span></a>
33+
<a href="{{ route('laravel-crm.product-categories.edit',$productCategory) }}" class="btn btn-outline-secondary btn-sm"><span class="fa fa-edit" aria-hidden="true"></span></a>
34+
<form action="{{ route('laravel-crm.product-categories.destroy',$productCategory) }}" method="POST" class="form-check-inline mr-0 form-delete-button">
35+
{{ method_field('DELETE') }}
36+
{{ csrf_field() }}
37+
<button class="btn btn-danger btn-sm" type="submit" data-model="productCategory"><span class="fa fa-trash-o" aria-hidden="true"></span></button>
38+
</form>
39+
</td>
40+
</tr>
41+
@endforeach
42+
</tbody>
43+
</table>
44+
</div>
45+
</div>
46+
</div>
47+
</div>
48+
@if($productCategories instanceof \Illuminate\Pagination\LengthAwarePaginator )
49+
@component('laravel-crm::components.card-footer')
50+
{{ $productCategories->links() }}
51+
@endcomponent
52+
@endif
53+
</div>
54+
55+
@endsection
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<div class="row">
2+
<div class="col">
3+
@include('laravel-crm::partials.form.text',[
4+
'name' => 'name',
5+
'label' => 'Name',
6+
'value' => old('name', $productCategory->name ?? null)
7+
])
8+
9+
@include('laravel-crm::partials.form.textarea',[
10+
'name' => 'description',
11+
'label' => 'Description',
12+
'rows' => 5,
13+
'value' => old('name', $productCategory->description ?? null)
14+
])
15+
</div>
16+
</div>
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
@extends('laravel-crm::layouts.app')
2+
3+
@section('content')
4+
5+
<div class="card">
6+
<div class="card-header">
7+
@include('laravel-crm::layouts.partials.nav-settings')
8+
</div>
9+
<div class="card-body">
10+
<h3 class="mb-3"> {{ $productCategory->name }} <span class="float-right">
11+
<a type="button" class="btn btn-outline-secondary btn-sm" href="{{ url(route('laravel-crm.product-categories.index')) }}"><span class="fa fa-angle-double-left"></span> Back to product categories</a> |
12+
<a href="{{ url(route('laravel-crm.product-categories.edit', $productCategory)) }}" type="button" class="btn btn-outline-secondary btn-sm">Edit</a>
13+
<form action="{{ route('laravel-crm.product-categories.destroy',$productCategory) }}" method="POST" class="form-check-inline mr-0 form-delete-button">
14+
{{ method_field('DELETE') }}
15+
{{ csrf_field() }}
16+
<button class="btn btn-danger btn-sm" type="submit" data-model="productCategory"><span class="fa fa-trash-o" aria-hidden="true"></span></button>
17+
</form>
18+
</span></h3>
19+
20+
<div class="row">
21+
<div class="col-sm-6 border-right">
22+
<h6 class="text-uppercase">Details</h6>
23+
<hr />
24+
<dl class="row">
25+
<dt class="col-sm-3 text-right">Description</dt>
26+
<dd class="col-sm-9">{{ $productCategory->description }}</dd>
27+
</dl>
28+
29+
</div>
30+
<div class="col-sm-6">
31+
<h6 class="text-uppercase section-h6-title-table"><span>Products ({{ $productCategory->products->count() }})</span></h6>
32+
<table class="table table-hover">
33+
<thead>
34+
<tr>
35+
<th scope="col">Item</th>
36+
<th scope="col" width="120">Price ({{ \VentureDrake\LaravelCrm\Models\Setting::currency()->value ?? 'USD' }})</th>
37+
<th scope="col" width="80">Tax %</th>
38+
<th scope="col" width="80">Active</th>
39+
</tr>
40+
</thead>
41+
<tbody>
42+
@foreach($productCategory->products as $product)
43+
<tr>
44+
<td>{{ $product->name }}</td>
45+
<td>{{ (isset($product->getDefaultPrice()->unit_price)) ? money($product->getDefaultPrice()->unit_price ?? null, $product->getDefaultPrice()->currency) : null }}</td>
46+
<td>{{ $product->tax_rate }}</td>
47+
<td>{{ ($product->active == 1) ? 'YES' : 'NO' }}</td>
48+
</tr>
49+
@endforeach
50+
</tbody>
51+
</table>
52+
</div>
53+
</div>
54+
</div>
55+
@component('laravel-crm::components.card-footer')
56+
<a href="{{ url(route('laravel-crm.product-categories.index')) }}" class="btn btn-outline-secondary">Cancel</a>
57+
<button type="submit" class="btn btn-primary">Save Changes</button>
58+
@endcomponent
59+
</div>
60+
@endsection

resources/views/teams/partials/card-show.blade.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<form action="{{ route('laravel-crm.teams.destroy',$team) }}" method="POST" class="form-check-inline mr-0 form-delete-button">
1414
{{ method_field('DELETE') }}
1515
{{ csrf_field() }}
16-
<button class="btn btn-danger btn-sm" type="submit" data-model="person"><span class="fa fa-trash-o" aria-hidden="true"></span></button>
16+
<button class="btn btn-danger btn-sm" type="submit" data-model="team"><span class="fa fa-trash-o" aria-hidden="true"></span></button>
1717
</form>
1818
</span>
1919
@endslot

0 commit comments

Comments
 (0)