$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) { $product = new ProductManager($pdo2, $company_id); $uploader->cleanup($product->getProductImage($id), ''); } $errors = $uploader->upload('product_image'); if (!empty($errors)) { $answer['success'] = 0; http_response_code(400); $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)); ?>