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%
16 / 16
OfferGroupController
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
6 / 6
9
100.00% covered (success)
100.00%
16 / 16
 __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
1
100.00% covered (success)
100.00%
1 / 1
 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\SiteGeneratorOffers\Controllers;
4
5use Illuminate\Http\Response;
6use Illuminate\Support\Facades\Log;
7use Illuminate\Support\Facades\Redis;
8use Qmp\Laravel\SiteGeneratorOffers\Models\OfferGroup;
9use Illuminate\Http\Request;
10use Qmp\Laravel\MicroService\Controllers\AbstractMicroServiceController;
11
12class OfferGroupController extends AbstractMicroServiceController
13{
14    public function __construct(Request $request)
15    {
16        parent::__construct($request);
17    }
18
19    /**
20     * Display a listing of the resource.
21     *
22     * @return \Illuminate\Http\Response
23     */
24    public function index()
25    {
26        return response()->json(OfferGroup::orderBy('id', 'desc')->get());
27    }
28
29    /**
30     * Store a newly created resource in storage.
31     *
32     * @param  \Illuminate\Http\Request  $request
33     * @return \Illuminate\Http\Response
34     */
35    public function store(Request $request)
36    {
37        return $this->storeOrUpdate(['text' => 'required'], $request, new OfferGroup());
38    }
39
40    /**
41     * Display the specified resource.
42     *
43     * @return \Illuminate\Http\Response
44     */
45    public function show(OfferGroup $offerGroup)
46    {
47        return response()->json(['status' => 'Ok', 'group' => $offerGroup->toArray()], Response::HTTP_OK);
48    }
49
50    /**
51     * Update the specified resource in storage.
52     *
53     * @param  \Illuminate\Http\Request  $request
54     * @return \Illuminate\Http\Response
55     */
56    public function update(Request $request, OfferGroup $offerGroup)
57    {
58        return $this->storeOrUpdate(['text' => 'required'], $request, $offerGroup);
59    }
60
61    /**
62     *
63     */
64    private function storeOrUpdate(array $validation, Request $request, OfferGroup $model)
65    {
66        try {
67            $httpResponse = $model->exists ? Response::HTTP_OK : Response::HTTP_CREATED;
68            $request->validate($validation);
69
70            $model->name = $request->text;
71            $model->offers = $request->offers !== null ? $request->offers : [];
72
73            $model->save();
74
75            Redis::publish('site-generator-config', json_encode(['action' => 'update-offers-groups', 'offerGrpId' => $model->id]));
76            return response()->json(["status" => "ok", "datas" => $model->toArray()], $httpResponse);
77        } catch (\Exception $e) {
78            Log::debug('Unable to store or update entity:' . var_export(['message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true));
79            return response()->json(["status" => "ko", "message" => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
80        }
81    }
82}