use yii_app\helpers\ImageHelper;
use yii_app\records\Files;
use yii_app\records\Images;
+use yii_app\records\MarketplaceOrders;
use yii_app\records\MatrixErp;
use yii_app\records\MatrixErpProperty;
use yii_app\services\FileService;
}
$result = MarketplaceService::processOrders($orderData);
+ //TODO - отправка в 1С
return $this->asJson([
'success' => true,
'message' => "ORDER_CREATED событие обработано успешно",
'result' => $result
]);
+ case 'ORDER_STATUS_UPDATED':
+ $requiredFields = ['campaignId', 'orderId', 'status', 'substatus', 'updatedAt'];
+ foreach ($requiredFields as $field) {
+ if (!isset($data[$field])) {
+ Yii::$app->response->statusCode = 400;
+ return $this->asJson([
+ 'error' => [
+ 'type' => 'WRONG_EVENT_FORMAT',
+ 'message' => "Отсутствует обязательное поле: {$field}"
+ ]
+ ]);
+ }
+ }
+
+ $campaignId = $data['campaignId'];
+ $orderId = $data['orderId'];
+ $newStatusCode = $data['status'];
+ $newSubstatusCode = $data['substatus'];
+
+ $marketplaceOrder = MarketplaceOrders::find()
+ ->where(['marketplace_order_id' => (string)$orderId])
+ ->one();
+
+ if (!$marketplaceOrder) {
+ $orderData = MarketplaceService::fetchOrder($campaignId, $orderId);
+ if (empty($orderData)) {
+ Yii::$app->response->statusCode = 400;
+ return $this->asJson([
+ 'error' => [
+ 'type' => 'WRONG_EVENT_FORMAT',
+ 'message' => "Не удалось получить заказ с orderId: {$orderId} для кампании: {$campaignId}"
+ ]
+ ]);
+ }
+ $result = MarketplaceService::processOrders($orderData);
+ return $this->asJson([
+ 'success' => true,
+ 'message' => "ORDER_STATUS_UPDATED событие обработано успешно (заказ создан)",
+ 'result' => $result
+ ]);
+ } else {
+ //TODO - обработка отдельных статусов
+ $currentStatusCode = $marketplaceOrder->status ? $marketplaceOrder->status->code : null;
+ $currentSubstatusCode = $marketplaceOrder->substatus ? $marketplaceOrder->substatus->code : null;
+ if ($newStatusCode !== $currentStatusCode || $newSubstatusCode !== $currentSubstatusCode) {
+ $orderData = MarketplaceService::fetchOrder($campaignId, $orderId);
+ if (empty($orderData)) {
+ Yii::$app->response->statusCode = 400;
+ return $this->asJson([
+ 'error' => [
+ 'type' => 'WRONG_EVENT_FORMAT',
+ 'message' => "Не удалось получить заказ с orderId: {$orderId} для кампании: {$campaignId}"
+ ]
+ ]);
+ }
+ $result = MarketplaceService::processOrders($orderData);
+ return $this->asJson([
+ 'success' => true,
+ 'message' => "ORDER_STATUS_UPDATED событие обработано успешно",
+ 'result' => $result
+ ]);
+ } else {
+ return $this->asJson([
+ 'success' => true,
+ 'message' => 'Статус заказа не изменился, обновление не требуется'
+ ]);
+ }
+ }
+
default:
Yii::info("Неизвестный тип события: {$eventType}");
return $this->asJson([