fix CRM contacts
This commit is contained in:
@@ -494,6 +494,59 @@ class DealsController extends BaseController
|
||||
return redirect()->to('/crm/deals/stages')->with('success', 'Этап удалён');
|
||||
}
|
||||
|
||||
/**
|
||||
* API: Изменить порядок этапов (drag-n-drop)
|
||||
* POST /crm/deals/stages/reorder
|
||||
*/
|
||||
public function reorderStages()
|
||||
{
|
||||
$organizationId = $this->requireActiveOrg();
|
||||
|
||||
// Получаем массив stages[] из form-urlencoded
|
||||
$stageOrders = $this->request->getPost('stages');
|
||||
|
||||
if (empty($stageOrders) || !is_array($stageOrders)) {
|
||||
return $this->response
|
||||
->setHeader('X-CSRF-TOKEN', csrf_hash())
|
||||
->setHeader('X-CSRF-HASH', csrf_token())
|
||||
->setJSON([
|
||||
'success' => false,
|
||||
'message' => 'Не передан список этапов',
|
||||
])->setStatusCode(422);
|
||||
}
|
||||
|
||||
// Приводим к int (приходят как строки из form-urlencoded)
|
||||
$stageOrders = array_map('intval', $stageOrders);
|
||||
|
||||
// Проверяем что все этапы принадлежат организации
|
||||
foreach ($stageOrders as $stageId) {
|
||||
$stage = $this->stageService->getStage($stageId);
|
||||
// Все поля из БД возвращаются как строки, поэтому сравниваем через intval
|
||||
if (!$stage || intval($stage['organization_id'] ?? 0) !== intval($organizationId)) {
|
||||
return $this->response
|
||||
->setJSON([
|
||||
'success' => false,
|
||||
'message' => 'Этап не найден или принадлежит другой организации',
|
||||
'debug' => [
|
||||
'stageId' => $stageId,
|
||||
'stage' => $stage,
|
||||
'organizationId' => $organizationId,
|
||||
],
|
||||
])->setStatusCode(422);
|
||||
}
|
||||
}
|
||||
|
||||
$this->stageService->reorderStages($organizationId, $stageOrders);
|
||||
|
||||
return $this->response
|
||||
->setJSON([
|
||||
'success' => true,
|
||||
'message' => 'Порядок этапов обновлён',
|
||||
'csrf_token' => csrf_hash(),
|
||||
'csrf_hash' => csrf_token(),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* API: получить контакты клиента
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user