- 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.
226 lines
9.7 KiB
PHP
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();
|
|
}
|