Skip to content

Commit b155c98

Browse files
committed
improve migration command
1 parent 38d3476 commit b155c98

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

api/app/Console/Commands/EmailNotificationMigration.php

+16-8
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,20 @@ public function handle()
3535
return 0;
3636
}
3737
}
38-
$query = FormIntegration::whereIn('integration_id', ['email', 'submission_confirmation']);
38+
$query = FormIntegration::whereIn('integration_id', ['email', 'submission_confirmation'])
39+
->whereHas('form');
3940
$totalCount = $query->count();
4041
$progressBar = $this->output->createProgressBar($totalCount);
4142
$progressBar->start();
4243

43-
$query->chunk(100, function ($integrations) use ($progressBar) {
44+
$query->with('form')->chunk(100, function ($integrations) use ($progressBar) {
4445
foreach ($integrations as $integration) {
45-
$this->updateIntegration($integration);
46+
try {
47+
$this->updateIntegration($integration);
48+
} catch (\Exception $e) {
49+
$this->error('Error updating integration ' . $integration->id . '. Error: ' . $e->getMessage());
50+
ray($e);
51+
}
4652
$progressBar->advance();
4753
}
4854
});
@@ -55,6 +61,9 @@ public function handle()
5561

5662
public function updateIntegration(FormIntegration $integration)
5763
{
64+
if (!$integration->form) {
65+
return;
66+
}
5867
$existingData = $integration->data;
5968
if ($integration->integration_id === 'email') {
6069
$integration->data = [
@@ -69,7 +78,7 @@ public function updateIntegration(FormIntegration $integration)
6978
} elseif ($integration->integration_id === 'submission_confirmation') {
7079
$integration->integration_id = 'email';
7180
$integration->data = [
72-
'send_to' => $this->getMentionHtml($integration->form_id),
81+
'send_to' => $this->getMentionHtml($integration->form),
7382
'sender_name' => $existingData->notification_sender,
7483
'subject' => $existingData->notification_subject,
7584
'email_content' => $existingData->notification_body,
@@ -81,15 +90,14 @@ public function updateIntegration(FormIntegration $integration)
8190
return $integration->save();
8291
}
8392

84-
private function getMentionHtml($formId)
93+
private function getMentionHtml(Form $form)
8594
{
86-
$emailField = $this->getRespondentEmail($formId);
95+
$emailField = $this->getRespondentEmail($form);
8796
return $emailField ? '<span mention-field-id="' . $emailField['id'] . '" mention-field-name="' . $emailField['name'] . '" mention-fallback="" contenteditable="false" mention="true">' . $emailField['name'] . '</span>' : '';
8897
}
8998

90-
private function getRespondentEmail($formId)
99+
private function getRespondentEmail(Form $form)
91100
{
92-
$form = Form::find($formId);
93101
$emailFields = collect($form->properties)->filter(function ($field) {
94102
$hidden = $field['hidden'] ?? false;
95103
return !$hidden && $field['type'] == 'email';

0 commit comments

Comments
 (0)