Passed
Push — develop ( fcd18c...7888af )
by Septianata
11:22
created

CustomerController::destroyMultiple()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 5
c 0
b 0
f 0
dl 0
loc 8
ccs 0
cts 0
cp 0
rs 10
cc 1
nc 1
nop 1
crap 2
1
<?php
2
3
namespace App\Http\Controllers\Admin;
4
5
use App\Http\Controllers\Controller;
6
use App\Http\Requests\Customer\StoreRequest;
7
use App\Http\Requests\Customer\UpdateRequest;
8
use App\Http\Resources\DataTables\CustomerResource;
9
use App\Models\Customer;
10
use Illuminate\Http\Request;
11
use Illuminate\Support\Arr;
12
use Illuminate\Support\Facades\Storage;
13
use Yajra\DataTables\Facades\DataTables;
14
15
class CustomerController extends Controller
16
{
17
    /**
18
     * Display a listing of the resource.
19
     *
20
     * @return \Illuminate\Contracts\Support\Renderable
21
     */
22
    public function index()
23
    {
24
        return view('admin.customer.index');
25
    }
26
27
    /**
28
     * Return datatable server side response.
29
     *
30
     * @return \Illuminate\Http\JsonResponse
31
     */
32
    public function datatable()
33
    {
34
        return DataTables::eloquent(Customer::query())
35
            ->setTransformer(fn ($model) => CustomerResource::make($model)->resolve())
36
            ->toJson();
37
    }
38
39
    /**
40
     * Show the form for creating a new resource.
41
     *
42
     * @return \Illuminate\Contracts\Support\Renderable
43
     */
44
    public function create()
45
    {
46
        return view('admin.customer.create');
47
    }
48
49
    /**
50
     * Store a newly created resource in storage.
51
     *
52
     * @param  \App\Http\Requests\Customer\StoreRequest  $request
53
     * @return \Illuminate\Http\RedirectResponse
54
     */
55
    public function store(StoreRequest $request)
56
    {
57
        /** @var \App\Models\Customer $customer */
58
        $customer = Customer::make(Arr::except($request->all(), 'identitycard_image'));
59
60
        if ($filename = $request->storeImage()) {
61
            $customer->identitycard_image = $filename;
62
        }
63
64
        $customer->save();
65
66
        return redirect()->route('admin.customer.index')->with([
67
            'alert' => [
68
                'type' => 'alert-success',
69
                'message' => trans('The :resource was created!', ['resource' => trans('admin-lang.customer')]),
70
            ],
71
        ]);
72
    }
73
74
    /**
75
     * Show the form for editing the specified resource.
76
     *
77
     * @param  \App\Models\Customer  $customer
78
     * @return \Illuminate\Contracts\Support\Renderable
79
     */
80
    public function edit(Customer $customer)
81
    {
82
        return view('admin.customer.edit', compact('customer'));
83
    }
84
85
    /**
86
     * Update the specified resource in storage.
87
     *
88
     * @param  \App\Http\Requests\Customer\UpdateRequest  $request
89
     * @param  \App\Models\Customer  $customer
90
     * @return \Illuminate\Http\RedirectResponse
91
     */
92
    public function update(UpdateRequest $request, Customer $customer)
93
    {
94
        $customer->fill(Arr::except($request->all(), 'identitycard_image'));
95
96
        if ($filename = $request->updateImage()) {
97
            $customer->identitycard_image = $filename;
98
        }
99
100
        $customer->save();
101
102
        return redirect()->route('admin.customer.index')->with([
103
            'alert' => [
104
                'type' => 'alert-success',
105
                'message' => trans('The :resource was updated!', ['resource' => trans('admin-lang.customer')]),
106
            ],
107
        ]);
108
    }
109
110
    /**
111
     * Remove the specified resource from storage.
112
     *
113
     * @param  \App\Models\Customer  $customer
114
     * @return \Illuminate\Http\RedirectResponse
115
     */
116
    public function destroy(Customer $customer)
117
    {
118
        $customer->delete();
119
120
        return redirect()->route('admin.customer.index')->with([
121
            'alert' => [
122
                'type' => 'alert-success',
123
                'message' => trans('The :resource was deleted!', ['resource' => trans('admin-lang.customer')]),
124
            ],
125
        ]);
126
    }
127
128
    /**
129
     * Remove the specified list of resource from storage.
130
     *
131
     * @param  \Illuminate\Http\Request  $request
132
     * @return \Illuminate\Http\RedirectResponse
133
     */
134
    public function destroyMultiple(Request $request)
135
    {
136
        Customer::destroy($request->input('checkbox', []));
137
138
        return redirect()->route('admin.customer.index')->with([
139
            'alert' => [
140
                'type' => 'alert-success',
141
                'message' => trans('The :resource was deleted!', ['resource' => trans('admin-lang.customer')]),
142
            ],
143
        ]);
144
    }
145
146
    /**
147
     * Remove the image of specified resource from storage.
148
     *
149
     * @param  \App\Models\Customer  $customer
150
     * @return \Illuminate\Http\RedirectResponse
151
     */
152
    public function destroyIdentitycardImage(Customer $customer)
153
    {
154
        Storage::delete(Customer::IDENTITYCARD_IMAGE_PATH . '/' . $customer->getRawOriginal('identitycard_image'));
0 ignored issues
show
Bug introduced by
Are you sure $customer->getRawOriginal('identitycard_image') of type array|mixed can be used in concatenation? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

154
        Storage::delete(Customer::IDENTITYCARD_IMAGE_PATH . '/' . /** @scrutinizer ignore-type */ $customer->getRawOriginal('identitycard_image'));
Loading history...
155
156
        $customer->update(['identitycard_image' => null]);
157
158
        return redirect()->route('admin.customer.edit', $customer)->with([
159
            'alert' => [
160
                'type' => 'alert-success',
161
                'message' => trans('The :resource was deleted!', ['resource' => trans('This image')]),
162
            ],
163
        ]);
164
    }
165
}
166