Test Failed
Push — dev5 ( c43caf...f1e67f )
by Ron
06:59
created

CustomerController   A

Complexity

Total Complexity 16

Size/Duplication

Total Lines 166
Duplicated Lines 0 %

Test Coverage

Coverage 26.67%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 49
dl 0
loc 166
ccs 12
cts 45
cp 0.2667
rs 10
c 1
b 0
f 0
wmc 16

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A toggleFav() 0 23 3
A checkID() 0 14 2
B search() 0 98 8
A index() 0 12 2
1
<?php
2
3
namespace App\Http\Controllers\Customers;
4
5
use App\Customers;
6
use App\SystemTypes;
7
use App\CustomerFavs;
8
use Illuminate\Http\Request;
9
use Illuminate\Support\Facades\Log;
10
use Illuminate\Support\Facades\Auth;
11
use App\Http\Controllers\Controller;
12
use Illuminate\Support\Facades\Route;
13
use App\Http\Resources\CustomersCollection;
14
15
class CustomerController extends Controller
16
{
17 6
    public function __construct()
18
    {
19 6
        $this->middleware('auth');
20 6
    }
21
22
    //  Landing page to search for customer
23
    public function index()
24
    {
25
        $sysTypes = SystemTypes::all();
26
27
        $sysArr = [];
28
        foreach($sysTypes as $sys)
29
        {
30
            $sysArr[] = $sys->name;
31
        }
32
33
        Log::debug('Route '.Route::currentRouteName().' visited by User ID-'.Auth::user()->user_id);
34
        return view('customer.index', [
35
            // 'sysTypes' => $sysArr
36
        ]);
37
    }
38
39
    //  Search for a customer
40
    public function search(Request $request)
41
    {
42
        // $customers = Customers::
43
        //         with('CustomerSystems.SystemTypes')
44
        //         ->get();
45
46
        // $custList = [];
47
        // foreach($customers as $cust)
48
        // {
49
        //     $sysArr = '';
50
        //     foreach($cust->CustomerSystems as $sys)
51
        //     {
52
        //         $sysArr .= $sys->SystemTypes->name.'<br />';
53
        //     }
54
55
        //     $custList[] = [
56
        //         'cust_id' => $cust->cust_id,
57
        //         'name' => $cust->name,
58
        //         'dba'  => $cust->dba_name,
59
        //         'city' => $cust->city.', '.$cust->state,
60
        //         'url'  => route('customer.details', [$cust->cust_id, urlencode($cust->name)]),
61
        //         'sys'  => $sysArr
62
        //     ];
63
64
65
        // }
66
67
        // Log::debug('Route '.Route::currentRouteName().' visited by User ID-'.Auth::user()->user_id);
68
        // Log::debug('Customer Data - ', $custList);
69
        // return response()->json($custList);
70 6
71
72
        // $searchResults = new CustomerCollection(
73
        //     Customers::where('cust_id', $request->search)
74
        //         ->orWhere('name', $request->search)
75
        //         ->orWhere('dba_name', $request->search)
76
        //         ->get()
77
        //     );
78
79
        // dd($request->search);
80
        $orderBy = $request->sortField ? $request->sortField : 'name';
81
        $orderUp = $request->sortType ? $request->sortType : 'ASC';
82
        $paginate = $request->perPage ? $request->perPage : 25;
83
84
        $name = $request->name ? $request->name : null;
0 ignored issues
show
Unused Code introduced by
The assignment to $name is dead and can be removed.
Loading history...
85
        $city = $request->city ? $request->city : null;
0 ignored issues
show
Unused Code introduced by
The assignment to $city is dead and can be removed.
Loading history...
86
87
        // $searchSys = $request->searchSys ? $request->searchSys : false;
88
89
        Log::debug('paramaters', $request->toArray());
90
91
        // if($request->search)
92
        // {
93
        //     $searchResults = new CustomerCollection(
94
        //     Customers::where('cust_id', 'like', '%'.$request->search.'%')
95
        //         ->orWhere('name', 'like', '%'.$request->search.'%')
96
        //         ->orWhere('dba_name', 'like', '%'.$request->search.'%')
97
        //         ->get()
98
        //     );
99
        // }
100
        // else
101
        // {
102
            // }
103
104
105
106
107
108
            // $searchResults = new CustomersCollection(Customers::orderBy($orderBy, $orderUp)->with('CustomerSystems')->paginate($paginate));
109 6
110
111 4
            if(isset($request->name) || isset($request->city))
112 4
            {
113 4
                // $name = $request->name ? $request->name : '';
114 4
                // $city = $request->city ? $request->city : '';
115 4
116
                $searchResults = new CustomersCollection(
117
                    Customers::orderBy($orderBy, $orderUp)
118
                        ->where('cust_id', 'like', '%'.$request->name.'%')
119
                        ->orWhere('name', 'like', '%'. $request->name.'%')
120 2
                        ->orWhere('dba_name', 'like', '%'. $request->name.'%')
121
                        // ->orWhere('city', 'like', '%'.$city.'%')
122
                        ->with('CustomerSystems.SystemTypes')
123 6
                        ->paginate($paginate));
124
                Log::debug('triggered');
125
            }
126
            else
127
            {
128
                $searchResults = new CustomersCollection(Customers::orderBy($orderBy, $orderUp)->with('CustomerSystems.SystemTypes')->paginate($paginate));
129
            }
130
131
132
133
134
135
136
137
            return $searchResults;
138
        }
139
140
        //  Check to see if a customer ID already exists
141
    public function checkID($id)
142
    {
143
        $cust = Customers::find($id);
144
145
        Log::debug('Route '.Route::currentRouteName().' visited by User ID-'.Auth::user()->user_id);
146
        if($cust === null)
147
        {
148
            Log::debug('Customer ID - '.$id.' is available to use');
149
            return response()->json(['dup' => false]);
150
        }
151
152
153
        Log::debug('Customer ID is in use by - '.$cust->name);
154
        return response()->json(['dup' => true, 'url' => route('customer.details', [$cust->cust_id, urlencode($cust->name)])]);
155
    }
156
157
    //  Toggle whether or not the customer is listed as a user favorite
158
    public function toggleFav($action, $id)
159
    {
160
        switch($action)
161
        {
162
            case 'add':
163
                CustomerFavs::create([
164
                    'user_id' => Auth::user()->user_id,
165
                    'cust_id' => $id
166
                ]);
167
                break;
168
            case 'remove':
169
                $custFav = CustomerFavs::where('user_id', Auth::user()->user_id)->where('cust_id', $id)->first();
170
                $custFav->delete();
171
                break;
172
        }
173
174
        Log::debug('Route '.Route::currentRouteName().' visited by User ID-'.Auth::user()->user_id);
175
        Log::debug('Customer Bookmark Updated.', [
176
            'user_id' => Auth::user()->user_id,
177
            'cust_id' => $id,
178
            'action'  => $action
179
        ]);
180
        return response()->json(['success' => true]);
181
    }
182
}
183