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:
Julien Nahum 2024-03-25 11:30:00 +01:00 committed by GitHub
parent 659dc5086e
commit e517cba88a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 7 additions and 32 deletions

View File

@ -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

View File

@ -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();
}
}

View File

@ -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]);
});

View File

@ -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();
});
});