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 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 26
MailStateController
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
30
0.00% covered (danger)
0.00%
0 / 26
 getState
0.00% covered (danger)
0.00%
0 / 1
30
0.00% covered (danger)
0.00%
0 / 26
1<?php
2
3namespace Qmp\Laravel\ApiGateway\Controllers\Mails;
4
5use App\Http\Controllers\Controller;
6use Illuminate\Http\Response;
7use Illuminate\Support\Facades\Log;
8use Illuminate\Support\Facades\Redis;
9use Qmp\Laravel\Acls\Facades\RoleGroup;
10use Qmp\Laravel\Acls\Facades\Role;
11use Illuminate\Http\Request;
12use Qmp\Laravel\ApiGateway\Controllers\AbstractApiController;
13use Qmp\Laravel\ApiGateway\Controllers\TraitProxyApiController;
14
15class MailStateController extends AbstractApiController
16{
17    protected $serviceName = 'service_mail';
18
19    protected $resourceName = 'state';
20
21
22
23    public function getState(Request $request)
24    {
25        $result = [
26            'redis_state' => true,
27            'mail_service_state' => true,
28            'queued' => []
29        ];
30
31
32        try {
33            $response = $this->getResponseFromService(
34                $this->serviceName,
35                $this->resourceName
36            );
37
38            if ($response->code !== 200) {
39                Log::debug('queued mails error !' . var_export($response, true));
40                throw new \Exception('error on http mail service !');
41            }
42
43            $result['queued'] = $response->content;
44        } catch (\Exception $e) {
45            $result['mail_service_state'] = false;
46
47            try {
48                $queuedMails = Redis::connection('queue')->lrange('queues:emails', 0, -1);
49
50                if (!is_array($queuedMails)) {
51                    throw new \Exception('Error On redis');
52                }
53
54                $result['queued'] = array_map(function($item) {
55                    $item = json_decode($item, true);
56                    $item['data']['command'] = unserialize($item['data']['command']);
57
58                    return [
59                        'id' => $item['id'],
60                        'attempts' => $item['attempts'],
61                        'mail_type' => str_replace('Qmp\\Laravel\\Mail\\Mail\\', '', get_class($item['data']['command']->mailSender->get('content'))),
62                        'recipients' => $item['data']['command']->mailSender->get('to')
63
64                    ];
65                }, $queuedMails);
66
67
68            } catch (\Exception $e2) {
69                $result['redis_state'] = false;
70                Log::debug('queued mails failed' . var_export($queuedMails, true));
71            }
72            Log::debug('queued mails failed' . var_export($queuedMails, true));
73        }
74
75
76
77        return response()->json($result);
78    }
79
80}