isExecuted() && true !== $this->option('force')) { $this->friendlyInfo('This command has already been executed.'); return 0; } $this->upgradeWebhooks(); $this->markAsExecuted(); $this->friendlyPositive('Upgraded webhooks.'); return 0; } private function isExecuted(): bool { $configVar = app('fireflyconfig')->get(self::CONFIG_NAME, false); if (null !== $configVar) { return (bool)$configVar->data; } return false; } private function upgradeWebhooks(): void { $set = Webhook::where('delivery', '>', 1)->orWhere('trigger', '>', 1)->orWhere('response', '>', 1)->get(); /** @var Webhook $webhook */ foreach ($set as $webhook) { $this->upgradeWebhook($webhook); } } private function upgradeWebhook(Webhook $webhook): void { $delivery = WebhookDelivery::tryFrom((int)$webhook->delivery); $response = WebhookResponse::tryFrom((int)$webhook->response); $trigger = WebhookTrigger::tryFrom((int)$webhook->trigger); if (null === $delivery || null === $response || null === $trigger) { $this->friendlyError(sprintf('[a] Webhook #%d has an invalid delivery, response or trigger value. Will not upgrade.', $webhook->id)); return; } $deliveryModel = WebhookDeliveryModel::where('key', $delivery->value)->first(); $responseModel = WebhookResponseModel::where('key', $response->value)->first(); $triggerModel = WebhookTriggerModel::where('key', $trigger->value)->first(); if (null === $deliveryModel || null === $responseModel || null === $triggerModel) { $this->friendlyError(sprintf('[b] Webhook #%d has an invalid delivery, response or trigger model. Will not upgrade.', $webhook->id)); return; } $webhook->webhookDeliveries()->attach([$deliveryModel->id]); $webhook->webhookResponses()->attach([$responseModel->id]); $webhook->webhookTriggers()->attach([$triggerModel->id]); $webhook->delivery = 1; $webhook->response = 1; $webhook->trigger = 1; $webhook->save(); $this->friendlyPositive(sprintf('Webhook #%d upgraded.', $webhook->id)); } private function markAsExecuted(): void { app('fireflyconfig')->set(self::CONFIG_NAME, true); } }