Files
casadoc/public/userportal/api/owner-documents.php
2026-07-27 21:04:07 +03:00

59 lines
1.8 KiB
PHP

<?php
require __DIR__ . '/_bootstrap.php';
/**
* @OA\Get(
* path="/owner-documents.php",
* tags={"Documents"},
* summary="Owner personal documents with uploaded files",
* security={{"bearerAuth":{}}},
* @OA\Parameter(name="owner_id", in="query", required=true, @OA\Schema(type="integer")),
* @OA\Parameter(name="slug", in="query", @OA\Schema(type="string")),
* @OA\Response(response=200, description="OK", @OA\JsonContent(
* @OA\Property(property="data", type="array",
* @OA\Items(ref="#/components/schemas/DocumentRequirement"))
* )),
* @OA\Response(response=403, ref="#/components/responses/Forbidden")
* )
*/
require_method('GET');
$user = require_auth($pdo);
$ownerId = (int) query('owner_id', 0);
$slug = query('slug');
if ($ownerId <= 0) {
json_error(422, 'owner_id is required');
}
if (!user_owns_owner($pdo, $user, $ownerId)) {
json_error(403, 'No access to this owner');
}
$sql = 'SELECT d.*, s.section_name
FROM documents d
LEFT JOIN sections s ON s.idsections = d.idsections';
$params = [];
if ($slug !== null && $slug !== '') {
$sql .= ' JOIN pages p ON p.idpages = d.page_id WHERE p.slug = ?';
$params[] = $slug;
}
$sql .= ' ORDER BY s.section_name, d.document_name';
$docStmt = $pdo->prepare($sql);
$docStmt->execute($params);
$documents = $docStmt->fetchAll();
$filesStmt = $pdo->prepare('SELECT * FROM doc_storage WHERE owner_id = ?');
$filesStmt->execute([$ownerId]);
$filesByDoc = [];
foreach ($filesStmt->fetchAll() as $f) {
$filesByDoc[(int) $f['document_id']][] = present_file($f);
}
$result = array_map(function ($d) use ($filesByDoc) {
$tpl = present_document_template($d);
$tpl['files'] = $filesByDoc[(int) $d['document_id']] ?? [];
return $tpl;
}, $documents);
json_data($result);