Passed
Push — master ( 054b32...1c77af )
by Ron
07:39 queued 12s
created

CustomerNotesController::update()   A

Complexity

Conditions 4
Paths 2

Size

Total Lines 25
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 15
CRAP Score 4.0039

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 4
eloc 17
c 1
b 0
f 0
nc 2
nop 2
dl 0
loc 25
ccs 15
cts 16
cp 0.9375
crap 4.0039
rs 9.7
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 20
    public function __construct()
17
    {
18 20
        $this->middleware('auth');
19 20
    }
20
21
    //  Store a new customer note
22 4
    public function store(Request $request)
23
    {
24 4
        $request->validate([
25 4
            '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 2
        $details = Customers::find($request->cust_id);
32 2
        if ($details->parent_id && $request->shared == 'true') {
33
            $request->cust_id = $details->parent_id;
34
        }
35
36 2
        $noteID = CustomerNotes::create([
37 2
            'cust_id'     => $request->cust_id,
38 2
            'user_id'     => Auth::user()->user_id,
39 2
            'urgent'      => $request->urgent,
40 2
            'shared'      => $request->shared == 'true' ? 1 : 0,
41 2
            'subject'     => $request->title,
42 2
            'description' => $request->note
43
        ]);
44
45 2
        Log::debug('Route '.Route::currentRouteName().' visited by User ID-'.Auth::user()->user_id);
46 2
        Log::debug('Submitted Data - ', $request->toArray());
47 2
        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 2
        return response()->json(['success' => true]);
49
    }
50
51
    //  Get the customer notes
52 2
    public function show($id)
53
    {
54 2
        $notes = CustomerNotes::where('cust_id', $id)->orderBy('urgent', 'desc')->get();
55
56
        //  Determine if there is a parent site with shared contacts
57 2
        $parent = Customers::find($id)->parent_id;
58 2
        if ($parent) {
59
            $parentList = CustomerNotes::where('cust_id', $parent)->where('shared', 1)->orderBy('urgent', 'desc')->get();
60
61
            $notes = $notes->merge($parentList);
62
        }
63
64 2
        Log::debug('Route '.Route::currentRouteName().' visited by User ID-'.Auth::user()->user_id);
65 2
        Log::debug('Fetched Data - ', $notes->toArray());
66 2
        return $notes;
67
    }
68
69
    //  Update a customer note
70 4
    public function update(Request $request, $id)
71
    {
72 4
        $request->validate([
73 4
            'cust_id' => 'required',
74
            'title'   => 'required',
75
            'note'    => 'required'
76
        ]);
77
78 2
        $details = Customers::find($request->cust_id);
79 2
        if ($details->parent_id && $request->shared == 'true') {
80
            $request->cust_id = $details->parent_id;
81
        }
82
83 2
        CustomerNotes::find($id)->update([
84 2
            'cust_id'     => $request->cust_id,
85 2
            'shared'      => $request->shared == 'true' ? 1 : 0,
86 2
            'urgent'      => $request->urgent,
87 2
            'subject'     => $request->title,
88 2
            'description' => $request->note
89
        ]);
90
91 2
        Log::debug('Route '.Route::currentRouteName().' visited by User ID-'.Auth::user()->user_id);
92 2
        Log::debug('Submitted Data - ', $request->toArray());
93 2
        Log::info('Customer Note ID-'.$id.' updated by User ID-'.Auth::user()->user_id);
94 2
        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