Skip to content

feat: Add resource count tracking to import responses#205

Merged
roncodes merged 1 commit intodev-v0.6.36from
feat/import-resource-counts
Feb 12, 2026
Merged

feat: Add resource count tracking to import responses#205
roncodes merged 1 commit intodev-v0.6.36from
feat/import-resource-counts

Conversation

@roncodes
Copy link
Member

🎯 Feature Enhancement

Adds resource count tracking to all import operations, enabling accurate analytics event tracking in PostHog and providing better user feedback.

📋 Problem

The frontend events.trackResourceImported() method expects an imported count in the response:

const importCount = response?.imported?.length || response?.count || files.length;
this.events.trackResourceImported(modelName, importCount);

However, backend import endpoints were returning generic responses without any count data:

{
  "status": "ok",
  "message": "Import completed"
}

This forced the frontend to fall back to files.length, which is inaccurate since:

  • Files may contain multiple rows
  • Some rows may fail validation
  • Multiple files can be imported at once

✅ Solution

Implemented count tracking at both the import class and controller levels:

Import Classes (8 files)

  • Added public int $imported = 0 property
  • Increment counter for each successfully processed row
  • Files: ContactImport, DriverImport, FleetImport, FuelReportImport, IssueImport, PlaceImport, VehicleImport, VendorImport

Controllers (8 files)

  • Added $importedCount variable to accumulate across multiple files
  • Instantiate import class to access the counter
  • Return count in JSON response
  • Files: ContactController, DriverController, FleetController, FuelReportController, IssueController, PlaceController, VehicleController, VendorController

🔧 Implementation Example

Before:

Excel::import(new DriverImport(), $file->path, $disk);
return response()->json(['status' => 'ok', 'message' => 'Import completed']);

After:

$import = new DriverImport();
Excel::import($import, $file->path, $disk);
$importedCount += $import->imported;
return response()->json([
    'status' => 'ok',
    'message' => 'Import completed',
    'imported' => $importedCount
]);

📊 Response Format

{
  "status": "ok",
  "message": "Import completed",
  "imported": 47
}

✅ Benefits

Benefit Description
Accurate Analytics PostHog receives exact import counts for better insights
Better UX Users see how many records were actually imported
Consistent API Aligns with OrderController.importFromFiles() pattern
Easy Debugging Developers can verify import success rates

📁 Files Changed

Import Classes (8):

  • server/src/Imports/ContactImport.php
  • server/src/Imports/DriverImport.php
  • server/src/Imports/FleetImport.php
  • server/src/Imports/FuelReportImport.php
  • server/src/Imports/IssueImport.php
  • server/src/Imports/PlaceImport.php
  • server/src/Imports/VehicleImport.php
  • server/src/Imports/VendorImport.php

Controllers (8):

  • server/src/Http/Controllers/Internal/v1/ContactController.php
  • server/src/Http/Controllers/Internal/v1/DriverController.php
  • server/src/Http/Controllers/Internal/v1/FleetController.php
  • server/src/Http/Controllers/Internal/v1/FuelReportController.php
  • server/src/Http/Controllers/Internal/v1/IssueController.php
  • server/src/Http/Controllers/Internal/v1/PlaceController.php
  • server/src/Http/Controllers/Internal/v1/VehicleController.php
  • server/src/Http/Controllers/Internal/v1/VendorController.php

Total: 16 files modified

🔗 Related

  • Complements ember-core events service implementation
  • Supports PostHog analytics integration in internals
  • Part of the broader analytics tracking initiative

Implements import count tracking across all import operations to enable
accurate analytics event tracking in PostHog.

Changes:

Import Classes (8 files):
- Added public $imported counter property to track successfully imported rows
- Incremented counter for each processed row in collection() method
- Files: ContactImport, DriverImport, FleetImport, FuelReportImport,
  IssueImport, PlaceImport, VehicleImport, VendorImport

Controllers (8 files):
- Added $importedCount variable to accumulate counts across multiple files
- Instantiate import class to access the counter
- Return 'imported' field in JSON response with total count
- Files: ContactController, DriverController, FleetController,
  FuelReportController, IssueController, PlaceController,
  VehicleController, VendorController

Response Format:
{
  "status": "ok",
  "message": "Import completed",
  "imported": 47
}

Benefits:
- Frontend can now track exact import counts in PostHog analytics
- Better UX - users see how many records were imported
- Consistent with existing patterns (OrderController.importFromFiles)
- Enables accurate resource.imported event tracking

Related:
- Complements ember-core events service implementation
- Supports PostHog analytics integration in internals
@roncodes roncodes changed the base branch from main to dev-v0.6.36 February 12, 2026 06:52
@roncodes roncodes merged commit 8fd5c97 into dev-v0.6.36 Feb 12, 2026
7 checks passed
@roncodes roncodes deleted the feat/import-resource-counts branch February 12, 2026 06:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants