-
-
Notifications
You must be signed in to change notification settings - Fork 641
Expand file tree
/
Copy pathGenerateFakeSubmissionController.php
More file actions
58 lines (47 loc) · 1.74 KB
/
Copy pathGenerateFakeSubmissionController.php
File metadata and controls
58 lines (47 loc) · 1.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
namespace Statamic\Http\Controllers\CP\Forms;
use Illuminate\Http\Request;
use Statamic\Events\FormSubmitted;
use Statamic\Facades\Site;
use Statamic\Forms\FakeSubmissionGenerator;
use Statamic\Forms\SendEmails;
use Statamic\Http\Controllers\CP\CpController;
use function Statamic\trans as __;
class GenerateFakeSubmissionController extends CpController
{
public function __invoke(Request $request, $form, FakeSubmissionGenerator $generator)
{
$this->authorize('generateFakeSubmissions', $form);
if (! $form->get('generate_fake_submissions', true)) {
return response([
'message' => __('statamic::messages.form_fake_submission_generation_disabled'),
], 403);
}
$validated = $request->validate([
'mode' => ['required', 'in:cp_only,full_pipeline'],
]);
$values = $generator->generate($form);
$fields = $form->blueprint()->fields()->addValues($values);
$submission = $form->makeSubmission();
$submission->data(
$fields->process()->values()->merge([
'_fake' => true,
])
);
if ($validated['mode'] === 'full_pipeline') {
if (FormSubmitted::dispatch($submission) === false) {
return response([
'message' => __('statamic::messages.form_fake_submission_cancelled'),
], 422);
}
}
$submission->save();
if ($validated['mode'] === 'full_pipeline') {
SendEmails::dispatch($submission, Site::default());
}
return response([
'id' => $submission->id(),
'message' => __('statamic::messages.form_fake_submission_generated'),
]);
}
}