Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
6 / 6
CRAP
100.00% covered (success)
100.00%
21 / 21
SponsorGroupController
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
6 / 6
10
100.00% covered (success)
100.00%
21 / 21
 __construct
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 index
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 store
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 show
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
6 / 6
 update
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 storeOrUpdate
100.00% covered (success)
100.00%
1 / 1
4
100.00% covered (success)
100.00%
10 / 10
1<?php
2
3namespace Qmp\Laravel\SiteGeneratorSponsors\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\MicroService\Controllers\AbstractMicroServiceController;
11use Qmp\Laravel\SiteGeneratorSponsors\Models\SponsorGroup;
12
13class SponsorGroupController extends AbstractMicroServiceController
14{
15    /** 
16     * 
17    */
18    public function __construct(Request $request)
19    {
20        parent::__construct($request);
21    }
22
23    /**
24     * Display a listing of the resource.
25     *
26     * @return \Illuminate\Http\Response
27     */
28    public function index()
29    {
30        return response()->json(SponsorGroup::orderBy('id', 'desc')->get());
31    }
32
33    /**
34     * Store a newly created resource in storage.
35     *
36     * @param  \Illuminate\Http\Request  $request
37     * @return \Illuminate\Http\Response
38     */
39    public function store(Request $request)
40    {
41        return $this->storeOrUpdate(['text' => 'required'], $request, new SponsorGroup());
42    }
43
44    /**
45     * Display the specified resource.
46     *
47     * @return \Illuminate\Http\Response
48     */
49    public function show($id)
50    {
51        $sponsorGroup = SponsorGroup::find($id);
52
53        if ($sponsorGroup) {
54            $response = [
55                'status' => 'ok',
56                'group' => $sponsorGroup
57            ];
58            return response()->json($response, Response::HTTP_OK);
59        }
60        return response()->json(["status" => "ko", "message" => 'Nothing found'], Response::HTTP_UNPROCESSABLE_ENTITY);
61    }
62
63    /**
64     * Update the specified resource in storage.
65     *
66     * @param  \Illuminate\Http\Request  $request
67     * @return \Illuminate\Http\Response
68     */
69    public function update(Request $request, SponsorGroup $sponsorGroup)
70    {
71        return $this->storeOrUpdate(['text' => 'required'], $request, $sponsorGroup);
72    }
73
74    /**
75     * 
76     * Store or update the record
77     * 
78     * @param  \Array  $validation
79     * @param  \Illuminate\Http\Request  $request
80     * @param  \Qmp\Laravel\SiteGeneratorSponsors\Models\SponsorGroup  $model
81     * @return \Illuminate\Http\Response 
82     */
83    private function storeOrUpdate(Array $validation, Request $request, SponsorGroup $model) {
84        try {
85            $httpResponse = $model->exists ? Response::HTTP_OK : Response::HTTP_CREATED;
86            $request->validate($validation);
87
88            $model->name = $request->text;
89            $model->sponsors = $request->sponsors !== null ? $request->sponsors : [];
90
91            $model->save();
92            Redis::publish('site-generator-config', json_encode(['action' => 'update-sponsors-groups', 'sponsorGrpId' => $model->id]));
93            return response()->json(["status" => "ok", "datas" => $model->toArray()], $httpResponse);
94        } catch (\Exception $e) {
95            Log::debug('Unable to store or update entity:' . var_export(['message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true));
96            return response()->json(["status" => "ko", "message" => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
97        }
98    }
99}