Test Failed
Push — master ( 24a1f5...1bb6c6 )
by Ron
01:55
created

app/Http/Controllers/CustomerFilesController.php (1 issue)

Labels
Severity
1
<?php
2
3
namespace App\Http\Controllers;
4
5
use Illuminate\Http\Request;
6
use Illuminate\Support\Facades\Auth;
7
use Illuminate\Support\Facades\Log;
8
use App\Customers;
9
use App\CustomerFiles;
10
use App\CustomerFileTypes;
11
use App\Files;
12
13
class CustomerFilesController extends Controller
14
{
15
    //  Only authorized users have access
16
    public function __construct()
17
    {
18
        $this->middleware('auth');
19
    }
20
21
    //  Load form to create a new file
22
    public function create()
23
    {
24
        $fileTypes = CustomerFileTypes::all();
25
        $fTypes = [];
26
        foreach($fileTypes as $type)
27
        {
28
            $fTypes[$type->file_type_id] = $type->description;
29
        }
30
        
31
        return view('customer.form.newFile', [
32
            'fileTypes' => $fTypes
33
        ]);
34
    }
35
36
    //  Store the new file
37
    public function store(Request $request)
38
    {
39
        $request->validate([
40
            'custID' => 'required|numeric',
41
            'name'   => 'required',
42
            'type'   => 'required',
43
            'file'   => 'required'
44
        ]);
45
        
46
        //  Set file locationi and clean filename for duplicates
47
        $filePath = config('filesystems.paths.customers').DIRECTORY_SEPARATOR.$request->custID;
48
        $fileName = Files::cleanFileName($filePath, $request->file->getClientOriginalName());
49
        
50
        //  Store the file
51
        $request->file->storeAs($filePath, $fileName);
52
        
53
        //  Put the file in the database
54
        $file = Files::create(
55
        [
56
            'file_name' => $fileName,
57
            'file_link' => $filePath.DIRECTORY_SEPARATOR
58
        ]);
59
        
60
        //  Get information for system files table
61
        $fileID = $file->file_id;
62
        
63
        //  Input the file into the customer files table
64
        CustomerFiles::create([
65
            'file_id'      => $fileID,
66
            'file_type_id' => $request->type,
67
            'cust_id'      => $request->custID,
68
            'user_id'      => Auth::user()->user_id,
69
            'name'         => $request->name
70
        ]);
71
        
72
        Log::info('File Added For Customer', ['cust_id' => $request->custID, 'file_id' => $fileID, 'user_id' => Auth::user()->user_id]);
73
    }
74
75
    //  Show customer files
76
    public function show($id)
77
    {
78
        $files = CustomerFiles::where('cust_id', $id)
79
            ->LeftJoin('customer_file_types', 'customer_files.file_type_id', '=', 'customer_file_types.file_type_id')
80
            ->LeftJoin('users', 'customer_files.user_id', '=', 'users.user_id')
81
            ->Join('files', 'customer_files.file_id', '=', 'files.file_id')
82
            ->orderBy('customer_files.file_type_id', 'asc')
83
            ->get();
84
        
85
        return view('customer.files', [
86
            'files' => $files
87
        ]);
88
    }
89
90
    //  Edit a customer file
91
    public function edit($id)
92
    {
93
        $custFile = CustomerFiles::find($id);
94
        $fileTypes = CustomerFileTypes::all();
95
        $fTypes = [];
96
        foreach($fileTypes as $type)
97
        {
98
            $fTypes[$type->file_type_id] = $type->description;
99
        }
100
        
101
        return view('customer.form.editFile', [
102
            'file'      => $custFile,
103
            'fileTypes' => $fTypes,
104
            'fileID'    => $id
105
        ]);
106
    }
107
108
    //  Update a customer file
109
    public function update(Request $request, $id)
110
    {
111
        $request->validate([
112
            'name'           => 'required',
113
            'file_type_id'   => 'required'
114
        ]);
115
        
116
        CustomerFiles::find($id)->update([
117
            'name'         => $request->name,
118
            'file_type_id' => $request->file_type_id
119
        ]);
120
        
121
        Log::info('File Updated For Customer', ['file_id' => $id, 'user_id' => Auth::user()->user_id]);
122
    }
123
124
    //  Remove a customer file
125
    public function destroy($id)
126
    {
127
        //  Remove the file from SystemFiles table
128
        $data = CustomerFiles::find($id);
129
        $fileID = $data->file_id;
130
        $data->delete();
131
        
132
        Log::info('File Deleted For Customer', ['cust_id' => $data->custID, 'file_id' => $id, 'user_id' => Auth::user()->user_id]);
1 ignored issue
show
The property custID does not seem to exist on App\CustomerFiles. Are you sure there is no database migration missing?

Checks if undeclared accessed properties appear in database migrations and if the creating migration is correct.

Loading history...
133
        
134
        //  Delete from system if no longer in use
135
        Files::deleteFile($fileID);
136
    }
137
}
138