Completed
Push — dev5 ( 000e6d...8afe4d )
by Ron
09:55
created

CustomerDetailsController::create()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
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 Illuminate\Http\Request;
8
use Illuminate\Support\Facades\Log;
9
use Illuminate\Support\Facades\Auth;
10
use App\Http\Controllers\Controller;
11
12
class CustomerDetailsController extends Controller
13
{
14
    public function __construct()
15
    {
16
        $this->middleware('auth');
17
    }
18
    
19
    /**
20
     * Display a listing of the resource.
21
     *
22
     * @return \Illuminate\Http\Response
23
     */
24
    public function index()
25
    {
26
        //
27
    }
28
29
    //  New Customer Form
30
    public function create()
31
    {
32
        return view('customer.newCustomer');
33
    }
34
35
    //  Submit the new customer form
36
    public function store(Request $request)
37
    {
38
        $request->validate([
39
            'custID'   => 'required|numeric|unique:customers,cust_id',
40
            'custName' => 'required', // |unique:customers,name',
41
            'custDBA'  => 'nullable',
42
            'custAddr' => 'required',
43
            'custCity' => 'required',
44
            'custZip'  => 'required|numeric'
45
        ]);
46
        
47
        //  Remove any forward slash (/) from the Customer name field
48
        $request->merge(['custName' => str_replace('/', '-', $request->custName)]);
49
        
50
        Customers::create([
51
            'cust_id'  => $request->custID,
52
            'name'     => $request->custName,
53
            'dba_name' => $request->custDBA,
54
            'address'  => $request->custAddr,
55
            'city'     => $request->custCity,
56
            'state'    => $request->selectedState,
57
            'zip'      => $request->custZip,
58
            'active'   => 1
59
        ]);
60
        
61
        Log::info('New Customer ID-'.$request->custID.' created by User ID-'.Auth::user()->user_id);
62
        
63
        return response()->json([
64
            'success' => true, 
65
            'url' => route('customer.details', [$request->custID, urlencode($request->custName)])]);
66
    }
67
    
68
    //  Show the customer details
69
    public function details($id, $name)
70
    {
71
        $custDetails = Customers::find($id);
72
        
73
        if(empty($custDetails))
74
        {
75
            return view('err.customerNotFound');
76
        }
77
        
78
        $custFav = CustomerFavs::where('user_id', Auth::user()->user_id)->where('cust_id', $custDetails->cust_id)->first();
79
                
80
        return view('customer.details', [
81
            'details' => $custDetails,
82
            'isFav'   => empty($custFav) ? false : true
83
        ]);
84
    }
85
86
    //  Get the basic details of the customer
87
    public function show($id)
88
    {
89
        $details = Customers::find($id);
90
        
91
        if(empty($details))
92
        {
93
            return response()->json(['error' => 'Customer Not Found']);
94
        }
95
        
96
        return response()->json($details);
97
    }
98
99
    /**
100
     * Show the form for editing the specified resource.
101
     *
102
     * @param  int  $id
103
     * @return \Illuminate\Http\Response
104
     */
105
    public function edit($id)
106
    {
107
        //
108
    }
109
110
    //  Update the customer details
111
    public function update(Request $request, $id)
112
    {
113
        $request->validate([
114
            'name'     => 'required',
115
            'dba_name' => 'nullable',
116
            'address'  => 'required',
117
            'city'     => 'required',
118
            'state'    => 'required',
119
            'zip'      => 'required|numeric'
120
        ]);
121
        
122
        Customers::find($id)->update([
123
            'name'     => $request->name,
124
            'dba_name' => $request->dba_name,
125
            'address'  => $request->address,
126
            'city'     => $request->city,
127
            'state'    => $request->state,
128
            'zip'      => $request->zip
129
        ]);
130
        
131
        return response()->json([
132
            'success' => true
133
        ]);
134
    }
135
136
    /**
137
     * Remove the specified resource from storage.
138
     *
139
     * @param  int  $id
140
     * @return \Illuminate\Http\Response
141
     */
142
    public function destroy($id)
143
    {
144
        //
145
    }
146
}
147