Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 6
CRAP
0.00% covered (danger)
0.00%
0 / 56
HelpNeededController
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 6
132
0.00% covered (danger)
0.00%
0 / 56
 __construct
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
 index
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 5
 store
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 15
 show
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 5
 update
0.00% covered (danger)
0.00%
0 / 1
20
0.00% covered (danger)
0.00%
0 / 21
 destroy
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 8
1<?php
2
3namespace Qmp\Laravel\Help\Controllers;
4
5use App\Http\Controllers\Controller;
6use Illuminate\Http\Response;
7use Illuminate\Http\Request;
8use Illuminate\Support\Facades\Log;
9use Illuminate\Support\Facades\Redis;
10use Qmp\Laravel\Help\Models\HelpNeeded;
11use Qmp\Laravel\MicroService\Controllers\AbstractMicroServiceController;
12use Qmp\Laravel\Mail\Mail\MailHelpNeededCompleted;
13use Qmp\Laravel\Mail\MailSender;
14
15class HelpNeededController extends AbstractMicroServiceController
16{
17    public function __construct(Request $request)
18    {
19        parent::__construct($request);
20    }
21
22    /**
23     * Display a listing of the resource.
24     *
25     * @return \Illuminate\Http\Response
26     */
27    public function index()
28    {
29        $helps = HelpNeeded::select()
30            ->with('user')
31            ->with('completedBy')
32            ->simplePaginate(1000);
33        return response()->json($helps);
34    }
35
36    /**
37     * Store a newly created resource in storage.
38     *
39     * @param  \Illuminate\Http\Request  $request
40     * @return \Illuminate\Http\Response
41     */
42    public function store(Request $request)
43    {
44        $request->validate([
45            'subject' => 'required|max:255',
46            'description' => 'required|max:255',
47            'url' => 'required|max:255',
48            'screenshot' => 'required',
49            'logs' => 'required|array',
50        ]);
51
52        try {
53            $help = new HelpNeeded();
54            $help->user_id = $this->userId;
55            $help->subject = $request->subject;
56            $help->description = $request->description;
57            $help->url = $request->url;
58            $help->screenshot = $request->screenshot;
59            $help->logs = json_encode($request->logs);
60
61            $help->save();
62        } catch(\Exception $e) {
63            Log::debug('Unable to store entity:' . var_export(['message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true));
64            return response()->json(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
65        }
66
67        Redis::publish('help-needed', json_encode(['action' => 'update-helps']));
68
69        return response(['status' => 'ok', 'help' => $help->id], Response::HTTP_CREATED);
70    }
71
72    /**
73     * Display the specified resource.
74     *
75     * @return \Illuminate\Http\Response
76     */
77    public function show($id)
78    {
79        $help = HelpNeeded::where('id',$id)
80            ->with('user')
81            ->with('completedBy')
82            ->first();
83        return response()->json($help);
84    }
85
86    /**
87     * Update the specified resource in storage.
88     *
89     * @param  \Illuminate\Http\Request  $request
90     * @return \Illuminate\Http\Response
91     */
92    public function update(Request $request, $id)
93    {
94        $request->validate([
95            'status' => 'boolean',
96        ]);
97
98        $help = HelpNeeded::findOrFail($id);
99
100        try {
101
102            $help->status = $request->status;
103            $help->completed_by = $request->status ? $this->userId : null;
104            $help->save();
105
106            $help = HelpNeeded::where('id',$id)
107                ->with('user')
108                ->with('completedBy')
109                ->first();
110
111            if($request->status  === '1')
112            {
113                // Send mail help needed completed
114                MailSender::model(new MailHelpNeededCompleted($help))
115                    ->to($help->user->email)
116                    ->dispatch();
117            }
118
119        } catch (\Exception $e) {
120            Log::debug('Unable to update entity:' . var_export(['message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true));
121            return response()->json(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
122        }
123
124        Redis::publish('help-needed', json_encode([
125            'action' => 'update-help',
126            'help_id' => $id
127        ]));
128
129        return response(['status' => 'ok'], Response::HTTP_OK);
130    }
131
132    /**
133     * Remove the specified resource from storage.
134     *
135     * @return \Illuminate\Http\Response
136     */
137    public function destroy($id)
138    {
139        try {
140            HelpNeeded::destroy($id);
141        } catch (\Exception $e) {
142            Log::debug('Unable to destroy entity:' . var_export(['message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true));
143            return response()->json(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
144        }
145
146        Redis::publish('help-needed', json_encode([
147            'action' => 'destroy-help',
148            'help_id' => $id
149        ]));
150
151        return response(['status' => 'ok'], Response::HTTP_OK);
152    }
153}