Passed
Push — dev5 ( 0d97ef...978ab8 )
by Ron
08:29
created

CustomerNotesController::show()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 15
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 8
nc 2
nop 1
dl 0
loc 15
ccs 9
cts 9
cp 1
crap 2
rs 10
c 1
b 0
f 0
1
<?php
2
3
namespace App\Http\Controllers\Customers;
4
5
use App\Customers;
6
use App\CustomerNotes;
7
use Illuminate\Http\Request;
8
use Illuminate\Support\Facades\Log;
9
use Illuminate\Support\Facades\Auth;
10
use App\Http\Controllers\Controller;
11
use Illuminate\Support\Facades\Route;
12
13
class CustomerNotesController extends Controller
14
{
15
16 26
    public function __construct()
17
    {
18 26
        $this->middleware('auth');
19 26
    }
20
21
    //  Store a new customer note
22 6
    public function store(Request $request)
23
    {
24 6
        $request->validate([
25 6
            'cust_id' => 'required|numeric',
26
            'title'   => 'required',
27
            'note'    => 'required'
28
        ]);
29
30
        //  Determine if the note should go to the customer, or its parent
31 4
        $details = Customers::find($request->cust_id);
32 4
        if ($details->parent_id && $request->shared == 'true') {
33 2
            $request->cust_id = $details->parent_id;
34
        }
35
36 4
        $noteID = CustomerNotes::create([
37 4
            'cust_id'     => $request->cust_id,
38 4
            'user_id'     => Auth::user()->user_id,
39 4
            'urgent'      => $request->urgent,
40 4
            'shared'      => $request->shared == 'true' ? 1 : 0,
41 4
            'subject'     => $request->title,
42 4
            'description' => $request->note
43
        ]);
44
45 4
        Log::debug('Route '.Route::currentRouteName().' visited by User ID-'.Auth::user()->user_id);
46 4
        Log::debug('Submitted Data - ', $request->toArray());
47 4
        Log::info('New Customer Note Created for Customer ID-'.$request->custID.' by User ID-'.Auth::user()->user_id.'.  New Note ID-'.$noteID->note_id);
48 4
        return response()->json(['success' => true]);
49
    }
50
51
    //  Get the customer notes
52 4
    public function show($id)
53
    {
54 4
        $notes = CustomerNotes::where('cust_id', $id)->orderBy('urgent', 'desc')->get();
55
56
        //  Determine if there is a parent site with shared notes
57 4
        $parent = Customers::find($id)->parent_id;
58 4
        if ($parent) {
59 2
            $parentList = CustomerNotes::where('cust_id', $parent)->where('shared', 1)->orderBy('urgent', 'desc')->get();
60
61 2
            $notes = $notes->merge($parentList);
62
        }
63
64 4
        Log::debug('Route '.Route::currentRouteName().' visited by User ID-'.Auth::user()->user_id);
65 4
        Log::debug('Fetched Data - ', $notes->toArray());
66 4
        return $notes;
67
    }
68
69
    //  Update a customer note
70 6
    public function update(Request $request, $id)
71
    {
72 6
        $request->validate([
73 6
            'cust_id' => 'required',
74
            'title'   => 'required',
75
            'note'    => 'required'
76
        ]);
77
78 4
        $details = Customers::find($request->cust_id);
79 4
        if ($details->parent_id && $request->shared == 'true') {
80 2
            $request->cust_id = $details->parent_id;
81
        }
82
83 4
        CustomerNotes::find($id)->update([
84 4
            'cust_id'     => $request->cust_id,
85 4
            'shared'      => $request->shared == 'true' ? 1 : 0,
86 4
            'urgent'      => $request->urgent,
87 4
            'subject'     => $request->title,
88 4
            'description' => $request->note
89
        ]);
90
91 4
        Log::debug('Route '.Route::currentRouteName().' visited by User ID-'.Auth::user()->user_id);
92 4
        Log::debug('Submitted Data - ', $request->toArray());
93 4
        Log::info('Customer Note ID-'.$id.' updated by User ID-'.Auth::user()->user_id);
94 4
        return response()->json(['success' => true]);
95
    }
96
97
    //  Delete a customer note
98 2
    public function destroy($id)
99
    {
100 2
        CustomerNotes::find($id)->delete();
101
102 2
        Log::debug('Route '.Route::currentRouteName().' visited by User ID-'.Auth::user()->user_id);
103 2
        Log::notice('Customer Note ID-'.$id.' deleted by User ID-'.Auth::user()->user_id);
104 2
        return response()->json(['success' => true]);
105
    }
106
}
107