Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 35
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
TotalFlyGrammarSpotlightAction
0.00% covered (danger)
0.00%
0 / 35
0.00% covered (danger)
0.00%
0 / 1
110
0.00% covered (danger)
0.00%
0 / 1
 execute
0.00% covered (danger)
0.00%
0 / 35
0.00% covered (danger)
0.00%
0 / 1
110
1<?php
2
3namespace App\Actions\AccountCenter\Reporting;
4
5use App\DTO\AccountCenter\Reporting\ReportingRequestDTO;
6use Carbon\Carbon;
7
8class TotalFlyGrammarSpotlightAction extends AccountCenterReporting
9{
10    public function execute(ReportingRequestDTO $filter)
11    {
12        $query = $this->getFilteredQuery($filter);
13
14        $flycut_usages = $query->get();
15
16        $firstDate = !empty($filter->fromDate) ? Carbon::parse($filter->fromDate)->startOfDay() : null;
17        $lastDate = !empty($filter->toDate) ? Carbon::parse($filter->toDate)->endOfDay() : null;
18
19        if (!$firstDate) {
20            $firstDate = $flycut_usages->min("created_at");
21        }
22
23        if (!$lastDate) {
24            $lastDate = $flycut_usages->max("created_at");
25        }
26
27        $months = $lastDate->diffInMonths($firstDate);
28        $chart = $this->buildLineChartData2($flycut_usages, $months);
29        $total = $flycut_usages->sum("fly_grammar_actions");
30        $total_accepted = $flycut_usages->sum("fly_grammar_accepted");
31        $total_autocorrect = $flycut_usages->sum("fly_grammar_autocorrect");
32        $total_autocomplete = $flycut_usages->sum("fly_grammar_autocomplete");
33        $paragraph_rewrite_count = $flycut_usages->sum("paragraph_rewrite_count");
34        $userIds = $query->distinct("user_id")->get();
35        $total_users = count($userIds);
36        $average = $total_users > 0 ? $total / $total_users : 0;
37        $average_accepted = $total_users > 0 ? $total_accepted / $total_users : 0;
38        $average_autocorrect = $total_users > 0 ? $total_autocorrect / $total_users : 0;
39        $average_autocomplete = $total_users > 0 ? $total_autocomplete / $total_users : 0;
40        $average_paragraph_rewrite = $total_users > 0 ? $paragraph_rewrite_count / $total_users : 0;
41
42        return [
43            "chart" => $chart,
44            "total_issues_fixed" => number_format($total, 0, ".", ","),
45            "average_issues_fixed" => round($average, 0),
46            "total_issues_accepted" => number_format($total_accepted, 0, ".", ","),
47            "average_issues_accepted" => round($average_accepted, 0),
48            "total_issues_autocorrect" => number_format($total_autocorrect, 0, ".", ","),
49            "average_issues_autocorrect" => round($average_autocorrect, 0),
50            "total_issues_autocomplete" => number_format($total_autocomplete, 0, ".", ","),
51            "average_issues_autocomplete" => round($average_autocomplete, 0),
52            "total_paragraph_rewrite_count" => number_format($paragraph_rewrite_count, 0, ".", ","),
53            "average_paragraph_rewrite_count" => round($average_paragraph_rewrite, 0),
54        ];
55    }
56}