Add failure-path diagnostics for OPD scan upload/list
This commit is contained in:
parent
a1a06c5dee
commit
3036b2189f
|
|
@ -6104,6 +6104,7 @@ class Opd extends BaseController
|
||||||
{
|
{
|
||||||
$opdRow = $this->db->table('opd_master')->where('opd_id', $opdid)->get(1)->getRowArray();
|
$opdRow = $this->db->table('opd_master')->where('opd_id', $opdid)->get(1)->getRowArray();
|
||||||
if (empty($opdRow)) {
|
if (empty($opdRow)) {
|
||||||
|
log_message('warning', 'OPD scan upload failed: OPD not found (opd_id={opd_id})', ['opd_id' => $opdid]);
|
||||||
return $this->response->setStatusCode(404)->setJSON(['update' => 0, 'error_text' => 'OPD not found']);
|
return $this->response->setStatusCode(404)->setJSON(['update' => 0, 'error_text' => 'OPD not found']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -6111,6 +6112,14 @@ class Opd extends BaseController
|
||||||
if (!is_dir($uploadsDir)) {
|
if (!is_dir($uploadsDir)) {
|
||||||
@mkdir($uploadsDir, 0777, true);
|
@mkdir($uploadsDir, 0777, true);
|
||||||
}
|
}
|
||||||
|
if (!is_dir($uploadsDir) || !is_writable($uploadsDir)) {
|
||||||
|
log_message('error', 'OPD scan upload dir issue (opd_id={opd_id}, dir={dir}, exists={exists}, writable={writable})', [
|
||||||
|
'opd_id' => $opdid,
|
||||||
|
'dir' => $uploadsDir,
|
||||||
|
'exists' => is_dir($uploadsDir) ? 'yes' : 'no',
|
||||||
|
'writable' => is_writable($uploadsDir) ? 'yes' : 'no',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
$baseFilename = 'OPD-' . $opdid . '-' . time();
|
$baseFilename = 'OPD-' . $opdid . '-' . time();
|
||||||
$filename = $baseFilename . '.jpg';
|
$filename = $baseFilename . '.jpg';
|
||||||
|
|
@ -6130,11 +6139,19 @@ class Opd extends BaseController
|
||||||
}
|
}
|
||||||
$filename = $baseFilename . '.' . $ext;
|
$filename = $baseFilename . '.' . $ext;
|
||||||
$fullPath = $uploadsDir . '/' . $filename;
|
$fullPath = $uploadsDir . '/' . $filename;
|
||||||
$uploadedFile->move($uploadsDir, $filename);
|
try {
|
||||||
$saved = is_file($fullPath);
|
$uploadedFile->move($uploadsDir, $filename);
|
||||||
$detectedMimeType = (string) ($uploadedFile->getClientMimeType() ?: 'image/jpeg');
|
$saved = is_file($fullPath);
|
||||||
$isImageFile = 1;
|
$detectedMimeType = (string) ($uploadedFile->getClientMimeType() ?: 'image/jpeg');
|
||||||
$detectedExt = '.' . $ext;
|
$isImageFile = 1;
|
||||||
|
$detectedExt = '.' . $ext;
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
log_message('error', 'OPD webcam upload move failed (opd_id={opd_id}, dir={dir}, error={error})', [
|
||||||
|
'opd_id' => $opdid,
|
||||||
|
'dir' => $uploadsDir,
|
||||||
|
'error' => $e->getMessage(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Source 2: manual file upload (PDF/image).
|
// Source 2: manual file upload (PDF/image).
|
||||||
|
|
@ -6152,11 +6169,20 @@ class Opd extends BaseController
|
||||||
}
|
}
|
||||||
$filename = $baseFilename . '.' . $ext;
|
$filename = $baseFilename . '.' . $ext;
|
||||||
$fullPath = $uploadsDir . '/' . $filename;
|
$fullPath = $uploadsDir . '/' . $filename;
|
||||||
$uploadedFile->move($uploadsDir, $filename);
|
try {
|
||||||
$saved = is_file($fullPath);
|
$uploadedFile->move($uploadsDir, $filename);
|
||||||
$detectedMimeType = (string) ($uploadedFile->getClientMimeType() ?: ($ext === 'pdf' ? 'application/pdf' : 'image/jpeg'));
|
$saved = is_file($fullPath);
|
||||||
$isImageFile = $ext === 'pdf' ? 0 : 1;
|
$detectedMimeType = (string) ($uploadedFile->getClientMimeType() ?: ($ext === 'pdf' ? 'application/pdf' : 'image/jpeg'));
|
||||||
$detectedExt = '.' . $ext;
|
$isImageFile = $ext === 'pdf' ? 0 : 1;
|
||||||
|
$detectedExt = '.' . $ext;
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
log_message('error', 'OPD userfile upload move failed (opd_id={opd_id}, ext={ext}, dir={dir}, error={error})', [
|
||||||
|
'opd_id' => $opdid,
|
||||||
|
'ext' => $ext,
|
||||||
|
'dir' => $uploadsDir,
|
||||||
|
'error' => $e->getMessage(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -6176,16 +6202,32 @@ class Opd extends BaseController
|
||||||
$fullPath = $uploadsDir . '/' . $filename;
|
$fullPath = $uploadsDir . '/' . $filename;
|
||||||
$raw = base64_decode((string) preg_replace('#^data:image/\w+;base64,#i', '', $dataUri));
|
$raw = base64_decode((string) preg_replace('#^data:image/\w+;base64,#i', '', $dataUri));
|
||||||
if ($raw !== false && $raw !== '') {
|
if ($raw !== false && $raw !== '') {
|
||||||
file_put_contents($fullPath, $raw);
|
try {
|
||||||
$saved = is_file($fullPath);
|
file_put_contents($fullPath, $raw);
|
||||||
$detectedMimeType = 'image/' . ($imgExt === 'jpg' ? 'jpeg' : $imgExt);
|
$saved = is_file($fullPath);
|
||||||
$isImageFile = 1;
|
$detectedMimeType = 'image/' . ($imgExt === 'jpg' ? 'jpeg' : $imgExt);
|
||||||
$detectedExt = '.' . $imgExt;
|
$isImageFile = 1;
|
||||||
|
$detectedExt = '.' . $imgExt;
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
log_message('error', 'OPD base64 upload save failed (opd_id={opd_id}, ext={ext}, file={file}, error={error})', [
|
||||||
|
'opd_id' => $opdid,
|
||||||
|
'ext' => $imgExt,
|
||||||
|
'file' => $fullPath,
|
||||||
|
'error' => $e->getMessage(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$saved) {
|
if (!$saved) {
|
||||||
|
log_message('error', 'OPD scan save failed: no source persisted (opd_id={opd_id}, dir={dir}, has_webcam={has_webcam}, has_userfile={has_userfile}, has_data_uri={has_data_uri})', [
|
||||||
|
'opd_id' => $opdid,
|
||||||
|
'dir' => $uploadsDir,
|
||||||
|
'has_webcam' => ($this->request->getFile('webcam') !== null) ? 1 : 0,
|
||||||
|
'has_userfile' => ($this->request->getFile('userfile') !== null) ? 1 : 0,
|
||||||
|
'has_data_uri' => ((string) ($this->request->getPost('webcam_data') ?? $this->request->getPost('image') ?? '') !== '') ? 1 : 0,
|
||||||
|
]);
|
||||||
return $this->response->setJSON([
|
return $this->response->setJSON([
|
||||||
'update' => 0,
|
'update' => 0,
|
||||||
'error_text' => 'Unable to capture image. Please allow camera and retry.',
|
'error_text' => 'Unable to capture image. Please allow camera and retry.',
|
||||||
|
|
@ -6211,6 +6253,13 @@ class Opd extends BaseController
|
||||||
$isImageFile,
|
$isImageFile,
|
||||||
$detectedExt
|
$detectedExt
|
||||||
);
|
);
|
||||||
|
if ($insertId <= 0) {
|
||||||
|
log_message('error', 'OPD scan upload saved but DB insert failed (opd_id={opd_id}, file={file}, public_path={public_path})', [
|
||||||
|
'opd_id' => $opdid,
|
||||||
|
'file' => $fullPath,
|
||||||
|
'public_path' => $publicPath,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
$scanType = $this->detectScanType((string) $filename);
|
$scanType = $this->detectScanType((string) $filename);
|
||||||
|
|
||||||
|
|
@ -6278,6 +6327,7 @@ class Opd extends BaseController
|
||||||
public function opd_file_last_list(int $opdid = 0)
|
public function opd_file_last_list(int $opdid = 0)
|
||||||
{
|
{
|
||||||
if (!$this->db->tableExists('file_upload_data')) {
|
if (!$this->db->tableExists('file_upload_data')) {
|
||||||
|
log_message('error', 'OPD scan list failed: file_upload_data table missing (opd_id={opd_id})', ['opd_id' => $opdid]);
|
||||||
return $this->response->setBody('<div class="text-muted">No scan table found.</div>');
|
return $this->response->setBody('<div class="text-muted">No scan table found.</div>');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -6320,6 +6370,9 @@ class Opd extends BaseController
|
||||||
}
|
}
|
||||||
|
|
||||||
$rows = $builder->get()->getResultArray();
|
$rows = $builder->get()->getResultArray();
|
||||||
|
if ($opdid > 0 && empty($rows)) {
|
||||||
|
log_message('warning', 'OPD scan list returned no rows (opd_id={opd_id})', ['opd_id' => $opdid]);
|
||||||
|
}
|
||||||
$list = [];
|
$list = [];
|
||||||
foreach ($rows as $row) {
|
foreach ($rows as $row) {
|
||||||
$raw = str_replace('\\', '/', (string) ($row['full_path'] ?? ''));
|
$raw = str_replace('\\', '/', (string) ($row['full_path'] ?? ''));
|
||||||
|
|
@ -6373,6 +6426,7 @@ class Opd extends BaseController
|
||||||
public function opd_file_list(int $opdid)
|
public function opd_file_list(int $opdid)
|
||||||
{
|
{
|
||||||
if (! $this->db->tableExists('file_upload_data')) {
|
if (! $this->db->tableExists('file_upload_data')) {
|
||||||
|
log_message('error', 'OPD scan carousel failed: file_upload_data table missing (opd_id={opd_id})', ['opd_id' => $opdid]);
|
||||||
return $this->response->setBody('<div class="text-muted">No scan table found.</div>');
|
return $this->response->setBody('<div class="text-muted">No scan table found.</div>');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -6396,6 +6450,9 @@ class Opd extends BaseController
|
||||||
}
|
}
|
||||||
|
|
||||||
$rows = $builder->get()->getResultArray();
|
$rows = $builder->get()->getResultArray();
|
||||||
|
if (empty($rows)) {
|
||||||
|
log_message('warning', 'OPD scan carousel returned no rows (opd_id={opd_id})', ['opd_id' => $opdid]);
|
||||||
|
}
|
||||||
|
|
||||||
$slides = [];
|
$slides = [];
|
||||||
foreach ($rows as $row) {
|
foreach ($rows as $row) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user