This commit is contained in:
Jake Kasper
2025-08-28 08:04:12 -05:00
parent 1ee3d2f572
commit e22cc10310
2 changed files with 42 additions and 5 deletions

View File

@@ -39,9 +39,11 @@ router.get('/product/:productId', validateParams(productIdParamSchema), async (r
const productId = req.params.productId;
const result = await pool.query(
`SELECT * FROM product_spreader_settings
WHERE product_id = $1
ORDER BY spreader_brand, spreader_model NULLS LAST, setting_value`,
`SELECT pss.*, ue.custom_name as equipment_name, ue.manufacturer, ue.model as equipment_model
FROM product_spreader_settings pss
LEFT JOIN user_equipment ue ON pss.equipment_id = ue.id
WHERE pss.product_id = $1
ORDER BY ue.custom_name NULLS LAST, pss.spreader_brand, pss.spreader_model NULLS LAST, pss.setting_value`,
[productId]
);
@@ -50,6 +52,11 @@ router.get('/product/:productId', validateParams(productIdParamSchema), async (r
data: {
settings: result.rows.map(row => ({
id: row.id,
equipmentId: row.equipment_id,
equipmentName: row.equipment_name,
equipmentManufacturer: row.manufacturer,
equipmentModel: row.equipment_model,
// Legacy fields
spreaderBrand: row.spreader_brand,
spreaderModel: row.spreader_model,
settingValue: row.setting_value,

View File

@@ -239,6 +239,8 @@ const ApplicationPlanModal = ({
? `/api/product-spreader-settings/product/${productApiId}`
: `/api/product-spreader-settings/user-product/${productApiId}`;
console.log('Checking spreader settings:', { product, equipmentId, endpoint });
const response = await fetch(endpoint, {
headers: {
'Authorization': `Bearer ${localStorage.getItem('authToken')}`
@@ -247,20 +249,33 @@ const ApplicationPlanModal = ({
if (response.ok) {
const data = await response.json();
console.log('Spreader settings response:', data);
const settings = data.data?.settings || [];
const equipmentSetting = settings.find(s => s.equipmentId === parseInt(equipmentId));
// For shared products, check if any setting has the matching equipmentId
// For user products, the query already filters by equipment
const equipmentSetting = settings.find(s => {
console.log('Comparing setting:', s, 'with equipmentId:', equipmentId);
return s.equipmentId === parseInt(equipmentId);
});
console.log('Found equipment setting:', equipmentSetting);
if (!equipmentSetting) {
// No spreader setting found, prompt user to add one
console.log('No setting found, showing form');
setCurrentProductForSettings(product);
setShowSpreaderSettingsForm(true);
} else {
// Store the spreader setting for calculations
console.log('Setting found, storing for calculations');
setSpreaderSettings(prev => ({
...prev,
[`${product.id}_${equipmentId}`]: equipmentSetting
}));
}
} else {
console.log('Response not ok:', response.status);
}
} catch (error) {
console.error('Failed to check spreader settings:', error);
@@ -300,7 +315,20 @@ const ApplicationPlanModal = ({
});
if (response.ok) {
const result = await response.json();
console.log('Spreader setting saved successfully:', result);
toast.success('Spreader setting added successfully');
// Store the new setting for calculations
if (result.data?.setting) {
setSpreaderSettings(prev => ({
...prev,
[`${currentProductForSettings.id}_${selectedEquipmentId}`]: result.data.setting
}));
}
// Close the form
setShowSpreaderSettingsForm(false);
setCurrentProductForSettings(null);
setSpreaderFormData({
@@ -309,7 +337,9 @@ const ApplicationPlanModal = ({
notes: ''
});
} else {
throw new Error('Failed to save spreader settings');
const errorData = await response.json();
console.error('Failed to save spreader settings:', errorData);
throw new Error(errorData.message || 'Failed to save spreader settings');
}
} catch (error) {
console.error('Failed to save spreader settings:', error);