Files
crm.clientright.ru/modules/ITS4YouMobileApp/components/Dashboard/index.php
Fedor ac7467f0b4 Major CRM updates: AI Assistant, Court Status API, S3 integration improvements, and extensive file storage system
- Added comprehensive AI Assistant system (aiassist/ directory):
  * Vector search and embedding capabilities
  * Typebot proxy integration
  * Elastic search functionality
  * Message classification and chat history
  * MCP proxy for external integrations

- Implemented Court Status API (GetCourtStatus.php):
  * Real-time court document status checking
  * Integration with external court systems
  * Comprehensive error handling and logging

- Enhanced S3 integration:
  * Improved file backup system with metadata
  * Batch processing capabilities
  * Enhanced error logging and recovery
  * Copy operations with URL fixing

- Added Telegram contact creation API
- Improved error logging across all modules
- Enhanced callback system for AI responses
- Extensive backup file storage with timestamps
- Updated documentation and README files

- File storage improvements:
  * Thousands of backup files with proper metadata
  * Fix operations for broken file references
  * Project-specific backup and recovery systems
  * Comprehensive file integrity checking

Total: 26,461+ files added/modified including AWS SDK, vendor dependencies, and extensive backup system.
2025-10-16 11:17:21 +03:00

226 lines
9.7 KiB
PHP

<?php
/* * *******************************************************************************
* Description: ITS4You Mobile App
* All Rights Reserved.
* Contributor: IT-Solutions4You s.r.o - www.its4you.sk
* ****************************************************************************** */
dispatch_post('dashboard', 'componentsDashboard');
function componentsDashboard()
{
global $current_user;
$response = new Vtiger_Response();
try {
include_once('modules/ITS4YouMobileApp/components/Dashboard/models/record.php');
if ($current_user) {
$moduleName = 'Home';
$moduleModel = Vtiger_Module_Model::getInstance($moduleName);
if ($moduleModel) {
$currentUserPrivilegesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel();
if ($currentUserPrivilegesModel->hasModulePermission($moduleModel->getId())) {
$body = @file_get_contents('php://input');
$bodyResult = [];
if (!empty($body)) {
$bodyResult = json_decode($body, true);
}
$ApiDashboardRecordModel = new ApiDashboardRecordModel();
$ApiDashboardRecordModel->setModuleName($moduleName);
if (!empty($bodyResult['userId']) && 'LBL_SELECT_OPTION' !== $bodyResult['userId']) {
$ApiDashboardRecordModel->setUserId($bodyResult['userId']);
}
switch ($bodyResult['method']) {
case 'addWidget':
$ApiDashboardRecordModel->setLinkId($bodyResult['linkId']);
$ApiDashboardRecordModel->addWidget();
$response->setResult([
'addWidget' => true,
]);
break;
case 'getHistory':
$ApiDashboardRecordModel->loadUsers();
$ApiDashboardRecordModel->loadHistory();
$response->setResult([
'history' => $ApiDashboardRecordModel->getHistory(),
'users' => $ApiDashboardRecordModel->getUsers(),
]);
break;
case 'getKeyMetrics':
$ApiDashboardRecordModel->loadKeyMetrics();
$response->setResult([
'keyMetrics' => $ApiDashboardRecordModel->getKeyMetrics(),
]);
break;
case 'getLeadsByIndustry':
$ApiDashboardRecordModel->loadLeadsByIndustry();
$response->setResult([
'leadsByIndustry' => $ApiDashboardRecordModel->getLeads(),
]);
break;
case 'getLeadsBySource':
$ApiDashboardRecordModel->loadLeadsBySource();
$response->setResult([
'leadsBySource' => $ApiDashboardRecordModel->getLeads(),
]);
break;
case 'getLeadsByStatus':
$ApiDashboardRecordModel->loadLeadsByStatus();
$response->setResult([
'leadsByStatus' => $ApiDashboardRecordModel->getLeads(),
]);
break;
case 'getModules':
$ApiDashboardRecordModel->loadModules();
$response->setResult(array(
'modules' => $ApiDashboardRecordModel->getModules(),
'quickCreateModules' => $ApiDashboardRecordModel->getQuickCreateModules(),
));
break;
case 'getOpenTickets':
$ApiDashboardRecordModel->loadOpenTickets();
$response->setResult([
'openTickets' => $ApiDashboardRecordModel->getOpenTickets(),
]);
break;
case 'getOverdueActivities':
$ApiDashboardRecordModel->loadUsers();
$ApiDashboardRecordModel->loadOverdueActivities();
$response->setResult([
'overdueActivities' => $ApiDashboardRecordModel->getOverdueActivities(),
'users' => $ApiDashboardRecordModel->getUsers(),
]);
break;
case 'getPotentialsBySalesPerson':
$ApiDashboardRecordModel->loadPotentialsBySalesPerson();
$response->setResult([
'potentials' => $ApiDashboardRecordModel->getPotentials(),
]);
break;
case 'getPotentialsBySalesStage':
$ApiDashboardRecordModel->loadUsers();
$ApiDashboardRecordModel->loadPotentialsBySalesStage();
$response->setResult([
'potentials' => $ApiDashboardRecordModel->getPotentials(),
'users' => $ApiDashboardRecordModel->getUsers(),
]);
break;
case 'getPotentialsCountBySalesPerson':
$ApiDashboardRecordModel->getPotentialsCountBySalesPerson();
$response->setResult([
'potentials' => $ApiDashboardRecordModel->getPotentials(),
]);
break;
case 'getRevenuePerSalesPerson':
$ApiDashboardRecordModel->loadRevenuePerSalesPerson();
$response->setResult([
'revenuePerSalesPerson' => $ApiDashboardRecordModel->getRevenuePerSalesPerson(),
]);
break;
case 'getTicketsByStatus':
$ApiDashboardRecordModel->loadTicketsByStatus();
$response->setResult([
'ticketsByStatus' => $ApiDashboardRecordModel->getTicketsByStatus(),
]);
break;
case 'getTopOpportunities':
$ApiDashboardRecordModel->loadTopOpportunities();
$response->setResult([
'topOpportunities' => $ApiDashboardRecordModel->getTopOpportunities(),
]);
break;
case 'getTotalAmountBySalesStage':
$ApiDashboardRecordModel->loadTotalAmountBySalesStage();
$response->setResult([
'totalAmountBySalesStage' => $ApiDashboardRecordModel->getTotalAmountBySalesStage(),
]);
break;
case 'getUpcomingActivities':
$ApiDashboardRecordModel->loadUsers();
$ApiDashboardRecordModel->loadUpcomingActivities();
$response->setResult([
'upcomingActivities' => $ApiDashboardRecordModel->getUpcomingActivities(),
'users' => $ApiDashboardRecordModel->getUsers(),
]);
break;
case 'getWidgets':
$ApiDashboardRecordModel->loadWidgets();
$response->setResult([
'activeWidgets' => $ApiDashboardRecordModel->getActiveWidgets(),
'widgets' => $ApiDashboardRecordModel->getWidgets(),
]);
break;
case 'removeWidget':
$ApiDashboardRecordModel->setLinkId($bodyResult['linkId']);
$ApiDashboardRecordModel->removeWidget();
$response->setResult([
'removeWidget' => true,
]);
break;
}
} else {
$response->setHeader('HTTP/1.0 401 Permission denied');
$response->setError('1584695252', vtranslate($moduleName) . ' ' . vtranslate('LBL_NOT_ACCESSIBLE'));
}
} else {
$response->setHeader('HTTP/1.0 400 Bad Request');
$response->setError('1584695253', 'Module doesn\'t exist');
}
} else {
$response->setHeader('HTTP/1.0 401 Permission denied');
$response->setError('1584695251', 'Permission denied');
}
} catch (Exception $e) {
$response->setError($e->getCode(), $e->getMessage());
}
$response->emit();
}