$reorder_point) { $answer['success'] = 0; $answer['message'] = "Min stock ({$min_stock}) must be less than or equal to reorder point ({$reorder_point})."; http_response_code(400); exit(json_encode($answer)); } try { /** 1. FILE HANDLING **/ $uploader = new FileUploader($include_url . 'uploads/product/'); if (!empty($_FILES['product_image']['name'])) { if ($id > 0) { $sql = "SELECT `product_image` FROM md_product WHERE company_id = :company_id AND id = :id"; $sth = $pdo2->prepare($sql); $sth->execute([':company_id' => $company_id, ':id' => $id]); $uploader->cleanup($sth->fetchColumn(), ''); } $errors = $uploader->upload('product_image'); if (!empty($errors)) { $answer['success'] = 0; $answer['message'] = $errors[0]; exit(json_encode($answer)); } $db_image_string = $uploader->getUploadedFiles()[0] ?? ''; } else { $db_image_string = $data['keep_files'] ?? ''; } /** 2. DATABASE **/ dbTransaction($pdo2, function($pdo) use ($data, $company_id, $logging, $db_image_string) { $product = new ProductManager($pdo, $company_id); $product->saveProduct($data, $logging, $db_image_string); }); $answer['success'] = 1; } catch (PDOException $e) { if (isset($uploader)) $uploader->rollbackUploads(); $answer['success'] = 0; $answer['message'] = 'Database error, please try again'; http_response_code(500); } catch (Exception $e) { if (isset($uploader)) $uploader->rollbackUploads(); $answer['success'] = 0; $answer['message'] = $e->getMessage(); http_response_code(400); } exit(json_encode($answer)); ?>