]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Callback
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 5 Mar 2025 06:59:37 +0000 (09:59 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 5 Mar 2025 06:59:37 +0000 (09:59 +0300)
erp24/media/controllers/WhatsappMessageStatus.php [deleted file]
erp24/media/controllers/WhatsappMessageStatusController.php [new file with mode: 0644]

diff --git a/erp24/media/controllers/WhatsappMessageStatus.php b/erp24/media/controllers/WhatsappMessageStatus.php
deleted file mode 100644 (file)
index b11f23c..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-
-namespace app\controllers;
-
-use Yii;
-use yii\rest\Controller;
-use yii\web\BadRequestHttpException;
-use yii\web\MethodNotAllowedHttpException;
-use yii\web\ServerErrorHttpException;
-use yii_app\records\UsersWhatsappMessage;
-use yii\web\Response;
-
-class WhatsappMessageStatus extends Controller
-{
-    /**
-     * Принимает callback-статус сообщения от API edna и сохраняет новый статус в БД.
-     *
-     * Пример тела запроса:
-     * {
-     *   "requestId": "test-00135",
-     *   "cascadeId": 11,
-     *   "cascadeStageUUID": "001-test001",
-     *   "subject": "test_subject",
-     *   "subjectId": 2,
-     *   "status": "READ",
-     *   "statusAt": "2023-10-31T11:07:56Z",
-     *   "error": null,
-     *   "comment": null,
-     *   "paymentData": {
-     *      "@type": "WhatsAppConversationPaymentData",
-     *      "conversationId": "test0001",
-     *      "conversationType": "marketing",
-     *      "chargeable": true,
-     *      "type": "WHATSAPP_CONVERSATION"
-     *   }
-     * }
-     *
-     * @return array Ответ в формате JSON.
-     *
-     * @throws BadRequestHttpException Если отсутствует обязательный параметр или неверный JSON.
-     * @throws MethodNotAllowedHttpException Если запрос не методом POST.
-     * @throws ServerErrorHttpException Если не удалось сохранить запись.
-     */
-    public function actionCallbackStatus()
-    {
-        Yii::$app->response->format = Response::FORMAT_JSON;
-        $request = Yii::$app->request;
-
-        if (!$request->isPost) {
-            throw new MethodNotAllowedHttpException("Метод не разрешён. Используйте POST.");
-        }
-
-        $rawBody = $request->getRawBody();
-        $data = json_decode($rawBody, true);
-
-        if (json_last_error() !== JSON_ERROR_NONE) {
-            Yii::error("Неверный JSON: " . $rawBody, __METHOD__);
-            throw new BadRequestHttpException("Неверный формат JSON.");
-        }
-
-        if (empty($data['requestId'])) {
-            throw new BadRequestHttpException("Отсутствует обязательный параметр: requestId.");
-        }
-
-        $requestId = $data['requestId'];
-
-        $model = UsersWhatsappMessage::findOne(['request_id' => $requestId]);
-        if (!$model) {
-            Yii::warning("Запись с request_id {$requestId} не найдена.", __METHOD__);
-            return ['message' => "Запись с request_id {$requestId} не найдена."];
-        }
-
-        if (isset($data['status'])) {
-            $model->status = $data['status'];
-        } else {
-            throw new BadRequestHttpException("Отсутствует обязательный параметр: status.");
-        }
-
-        if ($model->save()) {
-            Yii::info("Статус сообщения с request_id {$requestId} обновлён на {$model->status}.", __METHOD__);
-            return ['message' => "Статус сообщения обновлён."];
-        } else {
-            Yii::error("Не удалось сохранить обновлённый статус для request_id {$requestId}.", __METHOD__);
-            throw new ServerErrorHttpException("Не удалось сохранить обновлённый статус.");
-        }
-    }
-}
\ No newline at end of file
diff --git a/erp24/media/controllers/WhatsappMessageStatusController.php b/erp24/media/controllers/WhatsappMessageStatusController.php
new file mode 100644 (file)
index 0000000..ac52d3c
--- /dev/null
@@ -0,0 +1,87 @@
+<?php
+
+namespace app\controllers;
+
+use Yii;
+use yii\rest\Controller;
+use yii\web\BadRequestHttpException;
+use yii\web\MethodNotAllowedHttpException;
+use yii\web\ServerErrorHttpException;
+use yii_app\records\UsersWhatsappMessage;
+use yii\web\Response;
+
+class WhatsappMessageStatusController extends Controller
+{
+    /**
+     * Принимает callback-статус сообщения от API edna и сохраняет новый статус в БД.
+     *
+     * Пример тела запроса:
+     * {
+     *   "requestId": "test-00135",
+     *   "cascadeId": 11,
+     *   "cascadeStageUUID": "001-test001",
+     *   "subject": "test_subject",
+     *   "subjectId": 2,
+     *   "status": "READ",
+     *   "statusAt": "2023-10-31T11:07:56Z",
+     *   "error": null,
+     *   "comment": null,
+     *   "paymentData": {
+     *      "@type": "WhatsAppConversationPaymentData",
+     *      "conversationId": "test0001",
+     *      "conversationType": "marketing",
+     *      "chargeable": true,
+     *      "type": "WHATSAPP_CONVERSATION"
+     *   }
+     * }
+     *
+     * @return array Ответ в формате JSON.
+     *
+     * @throws BadRequestHttpException Если отсутствует обязательный параметр или неверный JSON.
+     * @throws MethodNotAllowedHttpException Если запрос не методом POST.
+     * @throws ServerErrorHttpException Если не удалось сохранить запись.
+     */
+    public function actionCallbackStatus()
+    {
+        Yii::$app->response->format = Response::FORMAT_JSON;
+        $request = Yii::$app->request;
+
+        if (!$request->isPost) {
+            throw new MethodNotAllowedHttpException("Метод не разрешён. Используйте POST.");
+        }
+
+        $rawBody = $request->getRawBody();
+        $data = json_decode($rawBody, true);
+
+        if (json_last_error() !== JSON_ERROR_NONE) {
+            Yii::error("Неверный JSON: " . $rawBody, __METHOD__);
+            throw new BadRequestHttpException("Неверный формат JSON.");
+        }
+
+        if (empty($data['requestId'])) {
+            throw new BadRequestHttpException("Отсутствует обязательный параметр: requestId.");
+        }
+
+        $requestId = $data['requestId'];
+
+        $model = UsersWhatsappMessage::findOne(['request_id' => $requestId]);
+        if (!$model) {
+            Yii::warning("Запись с request_id {$requestId} не найдена.", __METHOD__);
+            return ['message' => "Запись с request_id {$requestId} не найдена."];
+        }
+
+        if (isset($data['status'])) {
+            $model->status = $data['status'];
+        } else {
+            throw new BadRequestHttpException("Отсутствует обязательный параметр: status.");
+        }
+
+        if ($model->save()) {
+            Yii::info("Статус сообщения с request_id {$requestId} обновлён на {$model->status}.", __METHOD__);
+            return ['message' => "Статус сообщения обновлён."];
+        } else {
+            Yii::error("Не удалось сохранить обновлённый статус для request_id {$requestId}.", __METHOD__);
+            throw new ServerErrorHttpException("Не удалось сохранить обновлённый статус.");
+        }
+    }
+}
\ No newline at end of file