tank mix 1
This commit is contained in:
@@ -89,44 +89,59 @@ router.get('/plans', async (req, res, next) => {
|
||||
queryParams
|
||||
);
|
||||
|
||||
// Get spreader settings for each plan
|
||||
// Get spreader settings and product details for each plan
|
||||
const plansWithSettings = await Promise.all(
|
||||
result.rows.map(async (plan) => {
|
||||
let spreaderSetting = null;
|
||||
let productDetails = [];
|
||||
|
||||
// Get all products for this plan
|
||||
const productsResult = await pool.query(
|
||||
`SELECT app.*,
|
||||
COALESCE(p.name, up.custom_name) as product_name,
|
||||
COALESCE(p.brand, up.custom_brand) as product_brand,
|
||||
COALESCE(p.product_type, up.custom_product_type) as product_type,
|
||||
p.name as shared_name,
|
||||
up.custom_name as user_name
|
||||
FROM application_plan_products app
|
||||
LEFT JOIN products p ON app.product_id = p.id
|
||||
LEFT JOIN user_products up ON app.user_product_id = up.id
|
||||
WHERE app.plan_id = $1`,
|
||||
[plan.id]
|
||||
);
|
||||
|
||||
productDetails = productsResult.rows.map(product => ({
|
||||
name: product.product_name,
|
||||
brand: product.product_brand,
|
||||
type: product.product_type,
|
||||
rateAmount: parseFloat(product.rate_amount || 0),
|
||||
rateUnit: product.rate_unit,
|
||||
calculatedAmount: parseFloat(product.calculated_product_amount || 0),
|
||||
isShared: !!product.shared_name
|
||||
}));
|
||||
|
||||
// Only get spreader settings for granular applications with equipment
|
||||
if (plan.equipment_name) {
|
||||
// Get the first product for this plan to determine if it's granular
|
||||
const productResult = await pool.query(
|
||||
`SELECT app.product_id, app.user_product_id, p.product_type as shared_type, up.custom_product_type as user_type
|
||||
FROM application_plan_products app
|
||||
LEFT JOIN products p ON app.product_id = p.id
|
||||
LEFT JOIN user_products up ON app.user_product_id = up.id
|
||||
WHERE app.plan_id = $1
|
||||
LIMIT 1`,
|
||||
[plan.id]
|
||||
);
|
||||
if (plan.equipment_name && productsResult.rows.length > 0) {
|
||||
const firstProduct = productsResult.rows[0];
|
||||
const productType = firstProduct.shared_name ?
|
||||
(await pool.query('SELECT product_type FROM products WHERE id = $1', [firstProduct.product_id])).rows[0]?.product_type :
|
||||
firstProduct.custom_product_type;
|
||||
|
||||
if (productResult.rows.length > 0) {
|
||||
const product = productResult.rows[0];
|
||||
const productType = product.shared_type || product.user_type;
|
||||
if (productType === 'granular') {
|
||||
// Get equipment ID
|
||||
const equipmentResult = await pool.query(
|
||||
'SELECT id FROM user_equipment WHERE custom_name = $1 AND user_id = $2',
|
||||
[plan.equipment_name, req.user.id]
|
||||
);
|
||||
|
||||
if (productType === 'granular') {
|
||||
// Get equipment ID
|
||||
const equipmentResult = await pool.query(
|
||||
'SELECT id FROM user_equipment WHERE custom_name = $1 AND user_id = $2',
|
||||
[plan.equipment_name, req.user.id]
|
||||
if (equipmentResult.rows.length > 0) {
|
||||
const equipmentId = equipmentResult.rows[0].id;
|
||||
spreaderSetting = await getSpreaderSettingsForEquipment(
|
||||
equipmentId,
|
||||
firstProduct.product_id,
|
||||
firstProduct.user_product_id,
|
||||
req.user.id
|
||||
);
|
||||
|
||||
if (equipmentResult.rows.length > 0) {
|
||||
const equipmentId = equipmentResult.rows[0].id;
|
||||
spreaderSetting = await getSpreaderSettingsForEquipment(
|
||||
equipmentId,
|
||||
product.product_id,
|
||||
product.user_product_id,
|
||||
req.user.id
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -146,6 +161,7 @@ router.get('/plans', async (req, res, next) => {
|
||||
totalWaterAmount: parseFloat(plan.total_water_amount || 0),
|
||||
avgSpeedMph: parseFloat(plan.avg_speed_mph || 0),
|
||||
spreaderSetting: spreaderSetting?.setting_value || null,
|
||||
productDetails: productDetails,
|
||||
createdAt: plan.created_at,
|
||||
updatedAt: plan.updated_at
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user