Passed
Push — dev5 ( 5191cd...e66ef8 )
by Ron
06:18
created

CustomerDetailsController::create()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 0
dl 0
loc 6
ccs 4
cts 4
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace App\Http\Controllers\Customers;
4
5
use App\Customers;
6
use App\CustomerFavs;
7
use App\PhoneNumberType;
8
use App\CustomerFileTypes;
9
use Illuminate\Http\Request;
10
use App\Http\Traits\SystemsTrait;
11
use Illuminate\Support\Facades\Log;
12
use Illuminate\Support\Facades\Gate;
13
use Illuminate\Support\Facades\Auth;
14
use App\Http\Controllers\Controller;
15
use Illuminate\Support\Facades\Route;
16
17
use App\Http\Resources\Customers as CustomersResource;
18
use App\Http\Resources\CustomersCollection;
19
20
class CustomerDetailsController extends Controller
21
{
22
    use SystemsTrait;
1 ignored issue
show
introduced by
The trait App\Http\Traits\SystemsTrait requires some properties which are not provided by App\Http\Controllers\Cus...stomerDetailsController: $cat_name, $sys_id, $name
Loading history...
23
24 34
    public function __construct()
25
    {
26 34
        $this->middleware('auth');
27 34
    }
28
29
    //  New Customer Form
30 4
    public function create()
31
    {
32 4
        $this->authorize('hasAccess', 'add_customer');
33
34 2
        Log::debug('Route '.Route::currentRouteName().' visited by User ID-'.Auth::user()->user_id);
35 2
        return view('customer.newCustomer');
36
    }
37
38
    //  Submit the new customer form
39 6
    public function store(Request $request)
40
    {
41 6
        $this->authorize('hasAccess', 'add_customer');
42
43 4
        $request->validate([
44 4
            'cust_id'  => 'required|numeric|unique:customers,cust_id',
45
            'name'     => 'required', // |unique:customers,name',
46
            'dba_name' => 'nullable',
47
            'address'  => 'required',
48
            'city'     => 'required',
49
            'zip'      => 'required|numeric'
50
        ]);
51
52
        //  Remove any forward slash (/) from the Customer name field
53 2
        $request->merge(['name' => str_replace('/', '-', $request->name)]);
54
55 2
        Customers::create([
56 2
            'cust_id'  => $request->cust_id,
57 2
            'name'     => $request->name,
58 2
            'dba_name' => $request->dba_name,
59 2
            'address'  => $request->address,
60 2
            'city'     => $request->city,
61 2
            'state'    => $request->selectedState,
62 2
            'zip'      => $request->zip,
63
        ]);
64
65 2
        Log::debug('Route '.Route::currentRouteName().' visited by User ID-'.Auth::user()->user_id);
66 2
        Log::notice('New Customer ID-'.$request->custID.' created by User ID-'.Auth::user()->user_id);
67
68 2
        return response()->json(['success' => true ]);
69
    }
70
71
    //  Show the customer details
72 4
    public function details($id, $name)
73
    {
74 4
        $custDetails = Customers::find($id);
75
76 4
        if($custDetails === null)
77
        {
78 2
            Log::info('User - '.Auth::user()->user_id.' visited invalid customer ID - '.$id.' - '.$name);
79 2
            return view('err.customerNotFound');
80
        }
81
82 2
        $custFav = CustomerFavs::where('user_id', Auth::user()->user_id)->where('cust_id', $custDetails->cust_id)->first();
83
84
        // Log::debug('Customer Details', $custDetails->toArray());
85 2
        return view('customer.details', [
86 2
            'details' => $custDetails->toJson(),
87 2
            'isFav'   => empty($custFav) ? 'false' : 'true',
88 2
            'canDel'  => Gate::allows('hasAccess', 'deactivate_customer'),
89
        ]);
90
    }
91
92
    //  Update the customer details
93 6
    public function update(Request $request, $id)
94
    {
95 6
        $request->validate([
96 6
            'name'     => 'required',
97
            'dba_name' => 'nullable',
98
            'address'  => 'required',
99
            'city'     => 'required',
100
            'state'    => 'required',
101
            'zip'      => 'required|numeric'
102
        ]);
103
104 2
        Customers::find($id)->update([
105 2
            'name'     => $request->name,
106 2
            'dba_name' => $request->dba_name,
107 2
            'address'  => $request->address,
108 2
            'city'     => $request->city,
109 2
            'state'    => $request->state,
110 2
            'zip'      => $request->zip
111
        ]);
112
113 2
        Log::debug('Route '.Route::currentRouteName().' visited by User ID-'.Auth::user()->user_id);
114 2
        Log::notice('Customer Details Updated for Customer ID-'.$id.' by User ID-'.Auth::user()->user_id);
115 2
        Log::debug('Customer Details Submitted - ', $request->toArray());
116 2
        return response()->json([
117 2
            'success' => true
118
        ]);
119
    }
120
121
    //  Deactivate a customer - note this will not remove it from the database, but make it inaccessable
122 4
    public function destroy($id)
123
    {
124 4
        $this->authorize('hasAccess', 'deactivate_customer');
125 2
        Customers::destroy($id);
126
127 2
        Log::notice('User - '.Auth::user()->user_id.' has deactivated Customer ID '.$id);
128 2
    }
129
}
130