Passed
Push — dev5 ( 8481ee...a622eb )
by Ron
03:52 queued 01:34
created

CustomerAdminController   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 128
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 54
c 1
b 0
f 0
dl 0
loc 128
ccs 61
cts 61
cp 1
rs 10
wmc 11

10 Methods

Rating   Name   Duplication   Size   Complexity  
A delFileType() 0 15 2
A showDisabled() 0 11 1
A setFileTypes() 0 14 1
A __construct() 0 6 1
A modifyIdIndex() 0 4 1
A updateID() 0 15 1
A enableCustomer() 0 8 1
A getFileTypes() 0 8 1
A submitNewFileType() 0 13 1
A fileTypes() 0 4 1
1
<?php
2
3
namespace App\Http\Controllers\Admin;
4
5
use App\Customers;
6
use App\CustomerFileTypes;
7
use Illuminate\Http\Request;
8
use Illuminate\Support\Facades\Log;
9
use App\Http\Controllers\Controller;
10
use Illuminate\Support\Facades\Auth;
11
use Illuminate\Support\Facades\Route;
12
use App\Http\Resources\CustomerFileTypesCollection;
13
14
class CustomerAdminController extends Controller
15
{
16 78
    public function __construct()
17
    {
18 78
        $this->middleware('auth');
19
        $this->middleware(function($request, $next) {
20 60
            $this->authorize('hasAccess', 'Manage Customers');
21 42
            return $next($request);
22 78
        });
23 78
    }
24
25
    //  Form to change a Cusomter's ID
26 4
    public function modifyIdIndex()
27
    {
28 4
        Log::debug('Route '.Route::currentRouteName().' visited by '.Auth::user()->full_name);
29 4
        return view('admin.customerID');
30
    }
31
32
    //  Submit the form to update a customer's ID
33 4
    public function updateID(Request $request)
34
    {
35 4
        Log::debug('Route '.Route::currentRouteName().' visited by '.Auth::user()->full_name.'. Submitted Data - ', $request->toArray());
36
37 4
        $request->validate([
38 4
            'original_id' => 'required|numeric|exists:customers,cust_id',
39
            'cust_id'     => 'nullable|numeric|unique:customers,cust_id',
40
        ]);
41
42 4
        Customers::find($request->original_id)->update([
43 4
            'cust_id' => $request->cust_id,
44
        ]);
45
46
        // Log::notice('Customer ID Updated for '.$data->name.'. Old Customer ID - '.$request->original_id.' New Customer ID - '.$request->cust_id);
47 4
        return response()->json(['success' => true]);
48
    }
49
50
    //  Form to view what kind of file types can be assigned to customers
51 4
    public function fileTypes()
52
    {
53 4
        Log::debug('Route '.Route::currentRouteName().' visited by '.Auth::user()->full_name);
54 4
        return view('admin.customerFileTypes');
55
    }
56
57
    //  Get the types of files that can be assigned to a customer file
58 4
    public function getFileTypes()
59
    {
60 4
        Log::debug('Route '.Route::currentRouteName().' visited by '.Auth::user()->full_name);
61
62 4
        $types = new CustomerFileTypesCollection(CustomerFileTypes::all());
63
64 4
        Log::debug('Customer File Types gathered - ', array($types));
65 4
        return $types;
66
    }
67
68
    //  Submit a new file type name
69 6
    public function submitNewFileType(Request $request)
70
    {
71 6
        Log::debug('Route '.Route::currentRouteName().' visited by '.Auth::user()->full_name.'. Submitted Data - ', $request->toArray());
72 6
        $request->validate([
73 6
            'name' => 'required',
74
        ]);
75
76 4
        CustomerFileTypes::create([
77 4
            'description' => $request->name,
78
        ]);
79
80 4
        Log::notice('New Customer File Type '.$request->name.' created by '.Auth::user()->full_name);
81 4
        return response()->json(['success' => true]);
82
    }
83
84
    //  Update the name of a file type
85 6
    public function setFileTypes(Request $request)
86
    {
87 6
        Log::debug('Route '.Route::currentRouteName().' visited by '.Auth::user()->full_name.'. Submitted Data - ', $request->toArray());
88 6
        $request->validate([
89 6
            'name' => 'required',
90
            'id'   => 'required|exists:customer_file_types,file_type_id',
91
        ]);
92
93 4
        CustomerFileTypes::find($request->id)->update([
94 4
            'description' => $request->name,
95
        ]);
96
97 4
        Log::notice('Customer File Type ID '.$request->id.' name updated to '.$request->name.' by '.Auth::user()->full_name);
98 4
        return response()->json(['success' => true]);
99
    }
100
101
    //  Try to delete a file type
102 6
    public function delFileType($id)
103
    {
104 6
        Log::debug('Route '.Route::currentRouteName().' visited by '.Auth::user()->full_name);
105
106
        try {
107
            //  Try to delete file type from database - will throw error if foreign key is in use
108 6
            CustomerFileTypes::find($id)->delete();
109 2
        } catch(\Illuminate\Database\QueryException $e) {
110
            //  Unable to remove file type  from the database
111 2
            Log::warning('Attempt to delete file type ID '.$id.' by User '.Auth::user()->full_name.' failed.  Reason - '.$e);
112 2
            return response()->json(['success' => false, 'reason' => 'In Use']);
113
        }
114
115 4
        Log::notice('Customer File Type ID '.$id.' deleted by '.Auth::user()->full_name);
116 4
        return response()->json(['success' => true]);
117
    }
118
119
    //  Show all disabled customers
120 4
    public function showDisabled()
121
    {
122 4
        Log::debug('Route '.Route::currentRouteName().' visited by '.Auth::user()->full_name);
123
124 4
        $custList = Customers::select('cust_id', 'name', 'deleted_at')
125 4
            ->onlyTrashed()
126 4
            ->get()
127 4
            ->makeVisible('deleted_at');
128
129 4
        Log::debug('Deactivated Customer data gathered - ', array($custList));
130 4
        return view('admin.customerDisabledList', ['custList' => $custList]);
131
    }
132
133
    //  Re-enable a customer
134 4
    public function enableCustomer($id)
135
    {
136 4
        Log::debug('Route '.Route::currentRouteName().' visited by '.Auth::user()->full_name);
137
138 4
        Customers::withTrashed()->where('cust_id', $id)->restore();
139
140 4
        Log::notice('Customer ID '.$id.' re-enabled by '.Auth::user()->full_name);
141 4
        return response()->json(['success' => true]);
142
    }
143
}
144