Skip to content
Snippets Groups Projects
ResController.php 51.4 KiB
Newer Older
  • Learn to ignore specific revisions
  •         $keySve = array_search('sve_start_date', array_map('trim', $select));
            if ($keySve !== false) {
                unset($select[$keySve]);
                $sve_start_date = true;
            }
    
            if ($sve_start_date && empty($select)) {
                $select[] = 'res_id';
            }
    
            if (!PreparedClauseController::isRequestValid(['select' => $select, 'clause' => $data['clause'], 'orderBy' => $data['orderBy'], 'limit' => $data['limit'], 'userId' => $GLOBALS['userId']])) {
                return $response->withStatus(400)->withJson(['errors' => _INVALID_REQUEST]);
            }
    
            $where = [$data['clause']];
            if ($GLOBALS['userId'] != 'superadmin') {
                $groupsClause = GroupController::getGroupsClause(['userId' => $GLOBALS['userId']]);
                if (empty($groupsClause)) {
                    return $response->withStatus(400)->withJson(['errors' => 'User has no groups']);
                }
                $where[] = "({$groupsClause})";
            }
    
            if ($data['withFile'] === true) {
                $select[] = 'res_id';
            }
    
            $resources = ResModel::getOnView(['select' => $select, 'where' => $where, 'orderBy' => $data['orderBy'], 'limit' => $data['limit']]);
            if (!empty($resources) && $data['withFile'] === true) {
                foreach ($resources as $key => $res) {
                    $document = ResModel::getById(['resId' => $res['res_id'], 'select' => ['path', 'filename', 'docserver_id']]);
                    $docserver = DocserverModel::getByDocserverId(['docserverId' => $document['docserver_id'], 'select' => ['path_template', 'docserver_type_id']]);
                    if (empty($docserver['path_template']) || !file_exists($docserver['path_template'])) {
                        continue;
                    }
                    $pathToDocument = $docserver['path_template'] . str_replace('#', DIRECTORY_SEPARATOR, $document['path']) . $document['filename'];
                    if (!file_exists($pathToDocument)) {
                        continue;
                    }
                    $file = file_get_contents($pathToDocument);
                    $base64Content = base64_encode($file);
                    $resources[$key]['fileBase64Content'] = $base64Content;
                }
            }
            if (!empty($resources) && $sve_start_date) {
                $aResId = [];
                foreach ($resources as $res) {
                    $aResId[] = $res['res_id'];
                }
                $aSveStartDate = AcknowledgementReceiptModel::getByResIds([
                    'select'  => ['res_id', 'min(send_date) as send_date'],
                    'resIds'  => $aResId,
                    'where'   => ['send_date IS NOT NULL', 'send_date != \'\''],
                    'groupBy' => ['res_id']
                ]);
                foreach ($resources as $key => $res) {
                    $resources[$key]['sve_start_date'] = null;
                    foreach ($aSveStartDate as $valueSveStartDate) {
                        if ($res['res_id'] == $valueSveStartDate['res_id']) {
                            $resources[$key]['sve_start_date'] = $valueSveStartDate['send_date'];
                            break;
                        }
                    }
                }
            }
    
            return $response->withJson(['resources' => $resources, 'count' => count($resources)]);
        }
    
    
        public function getProcessingData(Request $request, Response $response, array $args)
        {
            if (!Validator::intVal()->validate($args['groupId'])) {
                return $response->withStatus(403)->withJson(['errors' => 'resId param is not an integer']);
            }
            if (!Validator::intVal()->validate($args['userId'])) {
                return $response->withStatus(403)->withJson(['errors' => 'userId param is not an integer']);
            }
            if (!Validator::intVal()->validate($args['basketId'])) {
                return $response->withStatus(403)->withJson(['errors' => 'basketId param is not an integer']);
            }
            if (!Validator::intVal()->validate($args['resId'])) {
                return $response->withStatus(403)->withJson(['errors' => 'resId param is not an integer']);
            }
    
            $control = ResourceListController::listControl(['groupId' => $args['groupId'], 'userId' => $args['userId'], 'basketId' => $args['basketId'], 'currentUserId' => $GLOBALS['id']]);
            if (!empty($control['errors'])) {
                return $response->withStatus($control['code'])->withJson(['errors' => $control['errors']]);
            }
    
            $basket = BasketModel::getById(['id' => $args['basketId'], 'select' => ['basket_id']]);
            $group = GroupModel::getById(['id' => $args['groupId'], 'select' => ['group_id']]);
    
            $groupBasket = GroupBasketModel::get(['select' => ['list_event_data'], 'where' => ['basket_id = ?', 'group_id = ?'], 'data' => [$basket['basket_id'], $group['group_id']]]);
    
            if (empty($groupBasket[0]['list_event_data'])) {
                return $response->withJson(['listEventData' => null]);
            }
    
            $listEventData = json_decode($groupBasket[0]['list_event_data'], true);
    
            $resource = ResModel::getById(['resId' => $args['resId'], 'select' => ['status']]);
            if (empty($resource['status'])) {
                return $response->withStatus(400)->withJson(['errors' => 'Resource does not exists']);
            }
            $status = StatusModel::getById(['id' => $resource['status'], 'select' => ['can_be_modified']]);
            if ($status['can_be_modified'] != 'Y') {
                $listEventData['canUpdate'] = false;
            }
    
            return $response->withJson(['listEventData' => $listEventData]);
        }