From 777af1ed705d7331a0d85bb3f5c0bc9586a76cad Mon Sep 17 00:00:00 2001 From: Satyam Rastogi Date: Fri, 29 May 2026 19:59:58 +0530 Subject: [PATCH] feat(data): reconcile subcontractor<->project linkage (subcontractorIds + teamMembers from tasks) --- src/data/mockStore.jsx | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/data/mockStore.jsx b/src/data/mockStore.jsx index 1f01a28..37e418c 100644 --- a/src/data/mockStore.jsx +++ b/src/data/mockStore.jsx @@ -2129,7 +2129,7 @@ const MOCK_PROJECTS = [ propertyId: 'P-2602', address: '2604 Dunwick Dr, Plano, TX 75023', contractorId: 'con_001', - subcontractorIds: ['sub_001'], + subcontractorIds: ['sub_001', 'sub_002'], projectType: 'Roof Replacement', status: 'active', phase: 'Structural', @@ -2200,6 +2200,7 @@ const MOCK_PROJECTS = [ { id: 'jtm_001_1', userId: 'p1', name: 'Jesus Gonzales', email: 'jesus@lynkeduppro.com', orgRole: 'W2_EMPLOYEE', jobRole: 'Sales Rep', status: 'active', commissionEnabled: true, jobCommission: { type: 'percent_gross', rate: 12 } }, { id: 'jtm_001_2', userId: 'con_001', name: 'Mike Brennan', email: 'mike@texasbuilders.com', orgRole: 'CONTRACTOR', jobRole: 'Lead Installer', status: 'active', commissionEnabled: false, jobCommission: null }, { id: 'jtm_001_3', userId: 'sub_001', name: 'Carlos Mendoza', email: 'carlos@electricpro.com', orgRole: 'SUBCONTRACTOR', jobRole: 'Subcontractor', status: 'active', commissionEnabled: false, jobCommission: null }, + { id: 'jtm_001_sub_002', userId: 'sub_002', name: 'Maya Patel', email: 'maya@skylineroof.com', orgRole: 'SUBCONTRACTOR', jobRole: 'Subcontractor', status: 'active', commissionEnabled: false, jobCommission: null }, { id: 'jtm_001_4', userId: 'e1', name: 'Cody Tatum', email: 'agent1@plano.com', orgRole: 'FIELD_AGENT', jobRole: 'Canvasser', status: 'active', commissionEnabled: true, jobCommission: null }, { id: 'jtm_001_5', userId: 'p2', name: 'Sarah Calloway', email: 'sarah@lynkeduppro.com', orgRole: '1099_SALES_REP', jobRole: 'Estimator', status: 'pending', commissionEnabled: true, jobCommission: null } ], @@ -2389,7 +2390,7 @@ const MOCK_PROJECTS = [ propertyId: 'P-2600', address: '2612 Dunwick Dr, Plano, TX 75023', contractorId: 'con_001', - subcontractorIds: ['sub_001'], + subcontractorIds: ['sub_001', 'sub_002'], projectType: 'Interior Renovation', status: 'active', phase: 'Finishing', @@ -2468,7 +2469,9 @@ const MOCK_PROJECTS = [ teamMembers: [ { id: 'jtm_004_1', userId: 'p1', name: 'Jesus Gonzales', email: 'jesus@lynkeduppro.com', orgRole: 'W2_EMPLOYEE', jobRole: 'Project Manager', status: 'active', commissionEnabled: true, jobCommission: { type: 'percent_net', rate: 8 } }, { id: 'jtm_004_2', userId: 'con_001', name: 'Mike Brennan', email: 'mike@texasbuilders.com', orgRole: 'CONTRACTOR', jobRole: 'Lead Installer', status: 'active', commissionEnabled: false, jobCommission: null }, - { id: 'jtm_004_3', userId: 'e2', name: 'Hannah Reyes', email: 'agent2@plano.com', orgRole: 'FIELD_AGENT', jobRole: 'Inspector', status: 'active', commissionEnabled: false, jobCommission: null } + { id: 'jtm_004_3', userId: 'e2', name: 'Hannah Reyes', email: 'agent2@plano.com', orgRole: 'FIELD_AGENT', jobRole: 'Inspector', status: 'active', commissionEnabled: false, jobCommission: null }, + { id: 'jtm_004_sub_001', userId: 'sub_001', name: 'Carlos Mendoza', email: 'carlos@electricpro.com', orgRole: 'SUBCONTRACTOR', jobRole: 'Subcontractor', status: 'active', commissionEnabled: false, jobCommission: null }, + { id: 'jtm_004_sub_002', userId: 'sub_002', name: 'Maya Patel', email: 'maya@skylineroof.com', orgRole: 'SUBCONTRACTOR', jobRole: 'Subcontractor', status: 'active', commissionEnabled: false, jobCommission: null } ], lifecycleStage: 'Work Complete — Awaiting Inspection', completionPercentage: 80, @@ -2571,7 +2574,7 @@ const MOCK_PROJECTS = [ propertyId: 'P-2625', address: '3913 Arizona Pl, Plano, TX 75023', contractorId: 'con_001', - subcontractorIds: ['sub_001'], + subcontractorIds: ['sub_001', 'sub_003'], projectType: 'Electrical Upgrade', status: 'active', phase: 'MEP', @@ -2617,7 +2620,8 @@ const MOCK_PROJECTS = [ ], teamMembers: [ { id: 'jtm_006_1', userId: 'p1', name: 'Jesus Gonzales', email: 'jesus@lynkeduppro.com', orgRole: 'W2_EMPLOYEE', jobRole: 'Sales Rep', status: 'active', commissionEnabled: true, jobCommission: null }, - { id: 'jtm_006_2', userId: 'sub_001', name: 'Carlos Mendoza', email: 'carlos@electricpro.com', orgRole: 'SUBCONTRACTOR', jobRole: 'Lead Installer', status: 'active', commissionEnabled: false, jobCommission: null } + { id: 'jtm_006_2', userId: 'sub_001', name: 'Carlos Mendoza', email: 'carlos@electricpro.com', orgRole: 'SUBCONTRACTOR', jobRole: 'Lead Installer', status: 'active', commissionEnabled: false, jobCommission: null }, + { id: 'jtm_006_sub_003', userId: 'sub_003', name: 'Dwayne Boudreaux', email: 'dwayne@hollandpaint.com', orgRole: 'SUBCONTRACTOR', jobRole: 'Subcontractor', status: 'active', commissionEnabled: false, jobCommission: null } ], lifecycleStage: 'Contract Signed', completionPercentage: 22, @@ -2640,7 +2644,7 @@ const MOCK_PROJECTS = [ propertyId: 'P-2640', address: '6909 Custer Rd, Plano, TX 75023', contractorId: 'con_001', - subcontractorIds: ['sub_001'], + subcontractorIds: ['sub_001', 'sub_002'], projectType: 'Commercial Roof Replacement', status: 'active', demoScenario: 7, @@ -2729,7 +2733,8 @@ const MOCK_PROJECTS = [ { id: 'jtm_007_1', userId: 'p1', name: 'Jesus Gonzales', email: 'jesus@lynkeduppro.com', orgRole: 'W2_EMPLOYEE', jobRole: 'Project Manager', status: 'active', commissionEnabled: true, jobCommission: { type: 'percent_gross', rate: 5 } }, { id: 'jtm_007_2', userId: 'con_001', name: 'Mike Brennan', email: 'mike@texasbuilders.com', orgRole: 'CONTRACTOR', jobRole: 'Lead Installer', status: 'active', commissionEnabled: false, jobCommission: null }, { id: 'jtm_007_3', userId: 'sub_001', name: 'Carlos Mendoza', email: 'carlos@electricpro.com', orgRole: 'SUBCONTRACTOR', jobRole: 'Subcontractor', status: 'active', commissionEnabled: false, jobCommission: null }, - { id: 'jtm_007_4', userId: 'e4', name: 'Shelby Greer', email: 'agent4@plano.com', orgRole: 'FIELD_AGENT', jobRole: 'Canvasser', status: 'active', commissionEnabled: true, jobCommission: null } + { id: 'jtm_007_4', userId: 'e4', name: 'Shelby Greer', email: 'agent4@plano.com', orgRole: 'FIELD_AGENT', jobRole: 'Canvasser', status: 'active', commissionEnabled: true, jobCommission: null }, + { id: 'jtm_007_sub_002', userId: 'sub_002', name: 'Maya Patel', email: 'maya@skylineroof.com', orgRole: 'SUBCONTRACTOR', jobRole: 'Subcontractor', status: 'active', commissionEnabled: false, jobCommission: null } ], lifecycleStage: 'Work In Progress', completionPercentage: 32, @@ -2841,7 +2846,7 @@ const MOCK_PROJECTS = [ propertyId: 'P-2642', address: '7224 Independence Pkwy, Plano, TX 75025', contractorId: 'con_001', - subcontractorIds: ['sub_001'], + subcontractorIds: ['sub_001', 'sub_002'], projectType: 'Window Replacement', status: 'active', budget: 42000, @@ -2890,7 +2895,9 @@ const MOCK_PROJECTS = [ ], teamMembers: [ { id: 'jtm_009_1', userId: 'p1', name: 'Jesus Gonzales', email: 'jesus@lynkeduppro.com', orgRole: 'W2_EMPLOYEE', jobRole: 'Sales Rep', status: 'active', commissionEnabled: true, jobCommission: null }, - { id: 'jtm_009_2', userId: 'e2', name: 'Hannah Reyes', email: 'agent2@plano.com', orgRole: 'FIELD_AGENT', jobRole: 'Inspector', status: 'active', commissionEnabled: false, jobCommission: null } + { id: 'jtm_009_2', userId: 'e2', name: 'Hannah Reyes', email: 'agent2@plano.com', orgRole: 'FIELD_AGENT', jobRole: 'Inspector', status: 'active', commissionEnabled: false, jobCommission: null }, + { id: 'jtm_009_sub_001', userId: 'sub_001', name: 'Carlos Mendoza', email: 'carlos@electricpro.com', orgRole: 'SUBCONTRACTOR', jobRole: 'Subcontractor', status: 'active', commissionEnabled: false, jobCommission: null }, + { id: 'jtm_009_sub_002', userId: 'sub_002', name: 'Maya Patel', email: 'maya@skylineroof.com', orgRole: 'SUBCONTRACTOR', jobRole: 'Subcontractor', status: 'active', commissionEnabled: false, jobCommission: null } ], lifecycleStage: 'Work In Progress', stageHistory: [