Fix issue with form analytics for submissions (#362)
* Password not working when Notion embed - Fixed (#360) * fix tests --------- Co-authored-by: formsdev <136701234+formsdev@users.noreply.github.com>
This commit is contained in:
parent
659dc5086e
commit
e517cba88a
|
|
@ -3,7 +3,6 @@
|
|||
namespace App\Console\Commands;
|
||||
|
||||
use App\Models\Forms\FormStatistic;
|
||||
use App\Models\Forms\FormSubmission;
|
||||
use App\Models\Forms\FormView;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
|
@ -61,29 +60,6 @@ class CleanDatabase extends Command
|
|||
];
|
||||
});
|
||||
|
||||
// Form Submissions
|
||||
$this->line('Aggregating form submissions...');
|
||||
FormSubmission::select('form_id', DB::raw('DATE(created_at) as date'), DB::raw('count(*) as submissions'))
|
||||
->whereDate('created_at', '<=', now()->startOfDay())
|
||||
->orderBy('date')
|
||||
->groupBy('form_id', 'date')
|
||||
->get()->each(function ($row) use (&$finalData) {
|
||||
$key = $row->form_id.'-'.$row->date;
|
||||
if (isset($finalData[$key])) {
|
||||
$finalData[$key]['data']['submissions'] = $row->submissions;
|
||||
} else {
|
||||
$finalData[$key] = [
|
||||
'form_id' => $row->form_id,
|
||||
'date' => $row->date,
|
||||
'data' => [
|
||||
'views' => 0,
|
||||
'submissions' => $row->submissions,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
if ($finalData) {
|
||||
$this->line('Storing aggregated data...');
|
||||
$created = 0;
|
||||
|
|
@ -94,7 +70,7 @@ class CleanDatabase extends Command
|
|||
if ($found !== null) { // If found update
|
||||
$newData = $found->data;
|
||||
$newData['views'] = $newData['views'] + $row['data']['views'];
|
||||
$newData['submissions'] = $newData['submissions'] + $row['data']['submissions'];
|
||||
$newData['submissions'] = 0;
|
||||
$found->update(['data' => $newData]);
|
||||
$updated++;
|
||||
} else { // Otherwise create new
|
||||
|
|
|
|||
|
|
@ -26,11 +26,10 @@ class FormStatsController extends Controller
|
|||
|
||||
$statisticData = $formStats->where('date', $dateObj->format('Y-m-d'))->first();
|
||||
$periodStats['views'][$date] = $statisticData->data['views'] ?? 0;
|
||||
$periodStats['submissions'][$date] = $statisticData->data['submissions'] ?? 0;
|
||||
$periodStats['submissions'][$date] = $form->submissions()->whereDate('created_at', $dateObj)->count();
|
||||
|
||||
if ($dateObj->toDateString() === now()->toDateString()) {
|
||||
$periodStats['views'][$date] += $form->views()->count();
|
||||
$periodStats['submissions'][$date] += $form->submissions()->whereDate('created_at', '>=', now()->startOfDay())->count();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ it('check form statistic for views & submissions counts', function () {
|
|||
expect($form->submissions()->count())->toBe(16);
|
||||
expect(count($statistics))->toBe(2); // 1 per day for 2 different dates
|
||||
expect($statistics[0]['date'])->toBe(now()->subDays(2)->toDateString());
|
||||
expect($statistics[0]['data'])->toBe(['views' => 1, 'submissions' => 1]);
|
||||
expect($statistics[0]['data'])->toBe(['views' => 1, 'submissions' => 0]);
|
||||
expect($statistics[1]['date'])->toBe(now()->subDay()->toDateString());
|
||||
expect($statistics[1]['data'])->toBe(['views' => 10, 'submissions' => 10]);
|
||||
expect($statistics[1]['data'])->toBe(['views' => 10, 'submissions' => 0]);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@ it('check formstat chart data', function () {
|
|||
return true;
|
||||
})
|
||||
->where('submissions', function ($values) use ($submissions) {
|
||||
ray($values, $submissions);
|
||||
foreach ($values as $date => $count) {
|
||||
if ((isset($submissions[$date]) && $submissions[$date] != $count) || (!isset($submissions[$date]) && $count != 0)) {
|
||||
return false;
|
||||
|
|
@ -64,5 +65,4 @@ it('check formstat chart data', function () {
|
|||
})
|
||||
->etc();
|
||||
});
|
||||
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue