public static function saveSentMessageToDB($messageData)
{
- /*$userMessage = new UsersTelegramMessage();
+ $userMessage = new UsersTelegramMessage();
$userMessage->chat_id = $messageData['chat_id'];
$userMessage->phone = $messageData['phone'];
$userMessage->message = $messageData['message'];
$userMessage->target_date = $messageData['target_date'];
$userMessage->type = $messageData['type'];
- return $userMessage->save();*/
-
- if (!extension_loaded('pdo_pgsql')) {
- Yii::error("PDO PostgreSQL driver is not loaded. Невозможно сохранить сообщение.", 'telegram');
- return false;
- }
-
- /** @var \yii\db\Connection $db */
- $db = Yii::$app->db;
-
- if (!$db->isActive) {
- try {
- $db->open();
- } catch (\Exception $e) {
- Yii::error("Не удалось открыть соединение с БД: " . $e->getMessage(), 'telegram');
- return false;
- }
- }
-
- // 3. Начинаем транзакцию
- $transaction = $db->beginTransaction();
- try {
- $userMessage = new UsersTelegramMessage();
- $userMessage->chat_id = $messageData['chat_id'];
- $userMessage->phone = $messageData['phone'];
- $userMessage->message = $messageData['message'];
- $userMessage->kogort_date = $messageData['kogort_date'];
- $userMessage->target_date = $messageData['target_date'];
- $userMessage->type = $messageData['type'];
-
- $saved = $userMessage->save();
- if (!$saved) {
- Yii::error("Ошибка сохранения сообщения: " . print_r($userMessage->getErrors(), true), 'telegram');
- $transaction->rollBack();
- return false;
- }
-
- $transaction->commit();
- return true;
-
- } catch (\Exception $e) {
- // Если произошла ошибка — откатываем изменения
- $transaction->rollBack();
- Yii::error("Ошибка при сохранении сообщения: " . $e->getMessage(), 'telegram');
- return false;
- } catch (\Throwable $t) {
- // PHP 7+ может пробрасывать Throwable (Error, TypeError и т.д.)
- $transaction->rollBack();
- Yii::error("Ошибка (Throwable) при сохранении сообщения: " . $t->getMessage(), 'telegram');
- return false;
- }
+ return $userMessage->save();
}
}
\ No newline at end of file