@fleetbase/fleetops-engine 0.4.3 → 0.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/addon/components/contact-form-panel.hbs +1 -0
  2. package/addon/components/driver-panel.hbs +1 -0
  3. package/addon/components/edit-order-route-panel.hbs +183 -0
  4. package/addon/components/edit-order-route-panel.js +265 -0
  5. package/addon/components/fleet-form-panel.hbs +1 -0
  6. package/addon/components/fleet-panel.hbs +1 -0
  7. package/addon/components/fleet-panel.js +3 -3
  8. package/addon/components/fuel-report-form-panel.hbs +1 -0
  9. package/addon/components/fuel-report-panel.hbs +1 -0
  10. package/addon/components/issue-form-panel.hbs +1 -0
  11. package/addon/components/issue-panel.hbs +1 -0
  12. package/addon/components/map-container/toolbar.hbs +2 -2
  13. package/addon/components/modals/order-route-form.hbs +1 -1
  14. package/addon/components/place-form-panel.hbs +1 -0
  15. package/addon/components/place-panel.hbs +1 -0
  16. package/addon/components/vehicle-form-panel.hbs +1 -0
  17. package/addon/components/vehicle-panel.hbs +1 -0
  18. package/addon/components/vendor-form-panel.hbs +1 -0
  19. package/addon/components/vendor-panel.hbs +1 -0
  20. package/addon/components/widget/fleet-ops-key-metrics.hbs +19 -0
  21. package/addon/components/widget/fleet-ops-key-metrics.js +85 -0
  22. package/addon/controllers/operations/orders/index/new.js +66 -22
  23. package/addon/controllers/operations/orders/index/view.js +131 -126
  24. package/addon/controllers/operations/orders/index.js +1 -1
  25. package/addon/engine.js +18 -12
  26. package/addon/routes/operations/orders/index/view.js +1 -1
  27. package/addon/services/context-panel.js +6 -0
  28. package/addon/styles/fleetops-engine.css +7 -2
  29. package/addon/templates/operations/orders/index/new.hbs +390 -58
  30. package/addon/templates/operations/orders/index/view.hbs +135 -105
  31. package/addon/templates/operations/service-rates/index/new.hbs +3 -1
  32. package/app/components/widget/{issues.js → fleet-ops-key-metrics.js} +1 -1
  33. package/composer.json +6 -6
  34. package/extension.json +1 -1
  35. package/package.json +5 -6
  36. package/server/src/Casts/MultiPolygon.php +3 -3
  37. package/server/src/Casts/Point.php +2 -2
  38. package/server/src/Casts/Polygon.php +3 -3
  39. package/server/src/Console/Commands/DispatchAdhocOrders.php +1 -1
  40. package/server/src/Events/DriverSimulatedLocationChanged.php +1 -1
  41. package/server/src/Flow/Activity.php +12 -0
  42. package/server/src/Flow/Config.php +7 -0
  43. package/server/src/Flow/Logic.php +7 -0
  44. package/server/src/Http/Controllers/Api/v1/DriverController.php +61 -21
  45. package/server/src/Http/Controllers/Api/v1/OrderController.php +5 -3
  46. package/server/src/Http/Controllers/Api/v1/PlaceController.php +1 -1
  47. package/server/src/Http/Controllers/Api/v1/ServiceAreaController.php +1 -1
  48. package/server/src/Http/Controllers/Api/v1/TrackingStatusController.php +1 -1
  49. package/server/src/Http/Controllers/Api/v1/ZoneController.php +1 -1
  50. package/server/src/Http/Controllers/Internal/v1/DriverController.php +17 -4
  51. package/server/src/Http/Controllers/Internal/v1/GeocoderController.php +2 -2
  52. package/server/src/Http/Controllers/Internal/v1/MetricsController.php +6 -50
  53. package/server/src/Http/Controllers/Internal/v1/OrderController.php +13 -2
  54. package/server/src/Http/Controllers/Internal/v1/PlaceController.php +1 -1
  55. package/server/src/Http/Filter/PlaceFilter.php +1 -1
  56. package/server/src/Http/Resources/v1/Driver.php +1 -1
  57. package/server/src/Http/Resources/v1/FuelReport.php +1 -1
  58. package/server/src/Http/Resources/v1/Issue.php +1 -1
  59. package/server/src/Http/Resources/v1/Order.php +3 -0
  60. package/server/src/Http/Resources/v1/Payload.php +1 -0
  61. package/server/src/Http/Resources/v1/Place.php +1 -1
  62. package/server/src/Http/Resources/v1/PurchaseRate.php +2 -1
  63. package/server/src/Http/Resources/v1/ServiceQuote.php +1 -0
  64. package/server/src/Http/Resources/v1/ServiceQuoteItem.php +29 -0
  65. package/server/src/Http/Resources/v1/TrackingStatus.php +1 -1
  66. package/server/src/Http/Resources/v1/Vehicle.php +1 -1
  67. package/server/src/Http/Resources/v1/VehicleWithoutDriver.php +1 -1
  68. package/server/src/Http/Resources/v1/Waypoint.php +2 -4
  69. package/server/src/Integrations/Lalamove/LalamoveDeliveryStop.php +2 -2
  70. package/server/src/Jobs/SimulateWaypointReached.php +2 -2
  71. package/server/src/Models/Contact.php +6 -18
  72. package/server/src/Models/Driver.php +8 -20
  73. package/server/src/Models/Fleet.php +6 -25
  74. package/server/src/Models/FuelReport.php +1 -1
  75. package/server/src/Models/Issue.php +1 -1
  76. package/server/src/Models/Order.php +31 -19
  77. package/server/src/Models/Payload.php +7 -7
  78. package/server/src/Models/Place.php +16 -16
  79. package/server/src/Models/Position.php +1 -1
  80. package/server/src/Models/ServiceArea.php +14 -14
  81. package/server/src/Models/TrackingNumber.php +1 -1
  82. package/server/src/Models/TrackingStatus.php +1 -1
  83. package/server/src/Models/Vehicle.php +7 -19
  84. package/server/src/Models/VehicleDeviceEvent.php +1 -1
  85. package/server/src/Models/Vendor.php +8 -25
  86. package/server/src/Models/Waypoint.php +6 -6
  87. package/server/src/Models/Zone.php +8 -8
  88. package/server/src/Observers/DriverObserver.php +7 -2
  89. package/server/src/Observers/TrackingNumberObserver.php +1 -1
  90. package/server/src/Rules/ResolvablePoint.php +1 -1
  91. package/server/src/Support/Encoding/Polyline.php +1 -1
  92. package/server/src/Support/OSRM.php +1 -1
  93. package/server/src/Support/Utils.php +60 -60
  94. package/server/src/Traits/HasTrackingNumber.php +3 -3
  95. package/server/src/routes.php +2 -4
  96. package/translations/en-us.yaml +10 -2
  97. package/addon/components/widget/fleet-ops-quickstart.hbs +0 -40
  98. package/addon/components/widget/fleet-ops-quickstart.js +0 -59
  99. package/addon/components/widget/issues.hbs +0 -1
  100. package/addon/components/widget/key-metrics.hbs +0 -121
  101. package/addon/components/widget/key-metrics.js +0 -46
  102. package/addon/components/widget/live-order-map.hbs +0 -59
  103. package/addon/components/widget/live-order-map.js +0 -11
  104. package/addon/components/widget/recent-orders.hbs +0 -35
  105. package/addon/components/widget/recent-orders.js +0 -24
  106. package/addon/components/widget/transaction-earnings.hbs +0 -1
  107. package/addon/components/widget/transactions.hbs +0 -36
  108. package/addon/components/widget/transactions.js +0 -29
  109. package/addon/components/widget/weekly-orders.hbs +0 -1
  110. package/addon/components/widget/weekly-orders.js +0 -3
  111. package/app/components/widget/key-metrics.js +0 -1
  112. package/app/components/widget/live-order-map.js +0 -1
  113. package/app/components/widget/recent-orders.js +0 -1
  114. package/app/components/widget/transaction-earnings.js +0 -1
  115. package/app/components/widget/transactions.js +0 -1
  116. package/app/components/widget/weekly-orders.js +0 -1
@@ -17,6 +17,7 @@ use Fleetbase\FleetOps\Support\Utils;
17
17
  use Fleetbase\Http\Controllers\Controller;
18
18
  use Fleetbase\Http\Requests\SwitchOrganizationRequest;
19
19
  use Fleetbase\Http\Resources\Organization;
20
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
20
21
  use Fleetbase\Models\Company;
21
22
  use Fleetbase\Models\CompanyUser;
22
23
  use Fleetbase\Models\User;
@@ -24,7 +25,6 @@ use Fleetbase\Models\UserDevice;
24
25
  use Fleetbase\Models\VerificationCode;
25
26
  use Fleetbase\Support\Auth;
26
27
  use Geocoder\Laravel\Facades\Geocoder;
27
- use Grimzy\LaravelMysqlSpatial\Types\Point;
28
28
  use Illuminate\Http\Request;
29
29
  use Illuminate\Support\Arr;
30
30
  use Illuminate\Support\Carbon;
@@ -376,7 +376,7 @@ class DriverController extends Controller
376
376
  }
377
377
 
378
378
  // Get the user's company for this driver profile
379
- $company = $this->_getDriverCompanyFromUser($user);
379
+ $company = static::getDriverCompanyFromUser($user);
380
380
 
381
381
  // Get driver record
382
382
  $driver = Driver::where(
@@ -414,7 +414,7 @@ class DriverController extends Controller
414
414
  }
415
415
 
416
416
  // Get the user's company for this driver profile
417
- $company = $this->_getDriverCompanyFromUser($user);
417
+ $company = static::getDriverCompanyFromUser($user);
418
418
 
419
419
  // generate verification token
420
420
  try {
@@ -425,6 +425,7 @@ class DriverController extends Controller
425
425
  if (app()->bound('sentry')) {
426
426
  app('sentry')->captureException($e);
427
427
  }
428
+
428
429
  return response()->apiError('Unable to send SMS Verification code.');
429
430
  }
430
431
 
@@ -464,7 +465,7 @@ class DriverController extends Controller
464
465
  }
465
466
 
466
467
  // Get the user's company for this driver profile
467
- $company = $this->_getDriverCompanyFromUser($user);
468
+ $company = static::getDriverCompanyFromUser($user);
468
469
 
469
470
  // get driver record
470
471
  $driver = Driver::where(
@@ -488,19 +489,33 @@ class DriverController extends Controller
488
489
  }
489
490
 
490
491
  /**
491
- * Patches phone number with international code.
492
+ * Gets the current organization/company for the driver
493
+ *
494
+ * @param string $id
495
+ * @param \Illuminate\Http\Request $request
496
+ * @return \Fleetbase\Http\Resources\Organization
492
497
  */
493
- public static function phone(string $phone = null): string
498
+ public function currentOrganization(string $id, Request $request)
494
499
  {
495
- if ($phone === null) {
496
- $phone = request()->input('phone');
500
+ try {
501
+ $driver = Driver::findRecordOrFail($id);
502
+ } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
503
+ return response()->apiError('Driver resource not found.', 404);
497
504
  }
498
505
 
499
- if (!Str::startsWith($phone, '+')) {
500
- $phone = '+' . $phone;
506
+ // Get the driver user account
507
+ $user = $driver->getUser();
508
+ if (!$user) {
509
+ return response()->apiError('Driver has not user account.');
501
510
  }
502
511
 
503
- return $phone;
512
+ // Get the user account company
513
+ $company = Flow::getCompanySessionForUser($user);
514
+ if (!$company) {
515
+ return response()->apiError('No company found for this driver.');
516
+ }
517
+
518
+ return new Organization($company);
504
519
  }
505
520
 
506
521
  /**
@@ -548,23 +563,26 @@ class DriverController extends Controller
548
563
  );
549
564
  }
550
565
 
551
- // get the next organization
566
+ // Get the next organization
552
567
  $company = Company::where('public_id', $nextOrganization)->first();
553
568
 
554
569
  if ($company->uuid === $driver->user->company_uuid) {
555
- return response()->json([
556
- 'error' => 'Driver is already on this organizations session',
557
- ]);
570
+ return response()->apiError('Driver is already on this organizations session.');
558
571
  }
559
572
 
560
573
  if (!CompanyUser::where(['user_uuid' => $driver->user_uuid, 'company_uuid' => $company->uuid])->exists()) {
561
- return response()->json([
562
- 'errors' => ['You do not belong to this organization'],
563
- ]);
574
+ return response()->apiError('You do not belong to this organization');
564
575
  }
565
576
 
566
- $driver->user->assignCompany($company);
567
- Auth::setSession($driver->user);
577
+ // Get the driver user account
578
+ $user = $driver->getUser();
579
+ if (!$user) {
580
+ return response()->apiError('Driver has not user account.');
581
+ }
582
+
583
+ // Assign user to company and update their session
584
+ $user->assignCompany($company);
585
+ Auth::setSession($user);
568
586
 
569
587
  return new Organization($company);
570
588
  }
@@ -700,7 +718,13 @@ class DriverController extends Controller
700
718
  return response()->json($route);
701
719
  }
702
720
 
703
- private function _getDriverCompanyFromUser(User $user): ?Company
721
+ /**
722
+ * Get the drivers current company using their user account.
723
+ *
724
+ * @param \Fleetbase\Models\User $user
725
+ * @return \Fleetbase\Models\Company|null
726
+ */
727
+ private static function getDriverCompanyFromUser(User $user): ?Company
704
728
  {
705
729
  // company defaults to null
706
730
  $company = null;
@@ -719,4 +743,20 @@ class DriverController extends Controller
719
743
 
720
744
  return $company;
721
745
  }
746
+
747
+ /**
748
+ * Patches phone number with international code.
749
+ */
750
+ private static function phone(string $phone = null): string
751
+ {
752
+ if ($phone === null) {
753
+ $phone = request()->input('phone');
754
+ }
755
+
756
+ if (!Str::startsWith($phone, '+')) {
757
+ $phone = '+' . $phone;
758
+ }
759
+
760
+ return $phone;
761
+ }
722
762
  }
@@ -422,6 +422,8 @@ class OrderController extends Controller
422
422
  public function query(Request $request)
423
423
  {
424
424
  $results = Order::queryWithRequest($request, function (&$query, $request) {
425
+ $query->where('company_uuid', session('company'));
426
+
425
427
  if ($request->has('payload')) {
426
428
  $query->whereHas('payload', function ($q) use ($request) {
427
429
  $q->where('public_id', $request->input('payload'));
@@ -806,7 +808,7 @@ class OrderController extends Controller
806
808
  $driver->current_job_uuid = $order->uuid;
807
809
  $driver->save();
808
810
 
809
- /** @var \Grimzy\LaravelMysqlSpatial\Types\Point */
811
+ /** @var \Fleetbase\LaravelMysqlSpatial\Types\Point */
810
812
  $location = $order->getLastLocation();
811
813
 
812
814
  // set first destination for payload
@@ -888,7 +890,7 @@ class OrderController extends Controller
888
890
  return new OrderResource($order);
889
891
  }
890
892
 
891
- /** @var \Grimzy\LaravelMysqlSpatial\Types\Point */
893
+ /** @var \Fleetbase\LaravelMysqlSpatial\Types\Point */
892
894
  $location = $order->getLastLocation();
893
895
 
894
896
  // if is multi drop order and no current destination set it
@@ -1021,7 +1023,7 @@ class OrderController extends Controller
1021
1023
 
1022
1024
  $order->notifyCompleted();
1023
1025
 
1024
- /** @var \Grimzy\LaravelMysqlSpatial\Types\Point */
1026
+ /** @var \Fleetbase\LaravelMysqlSpatial\Types\Point */
1025
1027
  $location = $order->getLastLocation();
1026
1028
 
1027
1029
  $order->setStatus($activity['code']);
@@ -9,10 +9,10 @@ use Fleetbase\FleetOps\Http\Resources\v1\Place as PlaceResource;
9
9
  use Fleetbase\FleetOps\Models\Place;
10
10
  use Fleetbase\FleetOps\Support\Utils;
11
11
  use Fleetbase\Http\Controllers\Controller;
12
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
12
13
  use Geocoder\Laravel\Facades\Geocoder;
13
14
  use Geocoder\Provider\GoogleMapsPlaces\GoogleMapsPlaces;
14
15
  use Geocoder\Query\GeocodeQuery;
15
- use Grimzy\LaravelMysqlSpatial\Types\Point;
16
16
  use Http\Adapter\Guzzle7\Client;
17
17
  use Illuminate\Http\Request;
18
18
  use Illuminate\Support\Facades\DB;
@@ -9,7 +9,7 @@ use Fleetbase\FleetOps\Http\Resources\v1\ServiceArea as ServiceAreaResource;
9
9
  use Fleetbase\FleetOps\Models\ServiceArea;
10
10
  use Fleetbase\FleetOps\Support\Utils;
11
11
  use Fleetbase\Http\Controllers\Controller;
12
- use Grimzy\LaravelMysqlSpatial\Types\Point;
12
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
13
13
  use Illuminate\Http\Request;
14
14
 
15
15
  class ServiceAreaController extends Controller
@@ -10,7 +10,7 @@ use Fleetbase\FleetOps\Models\Order;
10
10
  use Fleetbase\FleetOps\Models\TrackingStatus;
11
11
  use Fleetbase\FleetOps\Support\Utils;
12
12
  use Fleetbase\Http\Controllers\Controller;
13
- use Grimzy\LaravelMysqlSpatial\Types\Point;
13
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
14
14
  use Illuminate\Http\Request;
15
15
 
16
16
  class TrackingStatusController extends Controller
@@ -9,7 +9,7 @@ use Fleetbase\FleetOps\Http\Resources\v1\Zone as ZoneResource;
9
9
  use Fleetbase\FleetOps\Models\Zone;
10
10
  use Fleetbase\FleetOps\Support\Utils;
11
11
  use Fleetbase\Http\Controllers\Controller;
12
- use Grimzy\LaravelMysqlSpatial\Types\Point;
12
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
13
13
  use Illuminate\Http\Request;
14
14
 
15
15
  class ZoneController extends Controller
@@ -13,13 +13,13 @@ use Fleetbase\FleetOps\Models\Driver;
13
13
  use Fleetbase\FleetOps\Models\Order;
14
14
  use Fleetbase\FleetOps\Support\Utils;
15
15
  use Fleetbase\Http\Requests\ExportRequest;
16
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
16
17
  use Fleetbase\Models\CompanyUser;
17
18
  use Fleetbase\Models\Invite;
18
19
  use Fleetbase\Models\User;
19
20
  use Fleetbase\Models\VerificationCode;
20
21
  use Fleetbase\Notifications\UserInvited;
21
22
  use Fleetbase\Support\Auth;
22
- use Grimzy\LaravelMysqlSpatial\Types\Point;
23
23
  use Illuminate\Http\Request;
24
24
  use Illuminate\Support\Facades\DB;
25
25
  use Illuminate\Support\Facades\Validator;
@@ -94,8 +94,9 @@ class DriverController extends FleetOpsController
94
94
  ->filter()
95
95
  ->toArray();
96
96
 
97
- // set the user
98
- $input['company_uuid'] = session('company');
97
+ // Get current session company
98
+ $company = Auth::getCompany();
99
+ $input['company_uuid'] = session('company', $company->uuid);
99
100
  $input['user_uuid'] = $existingUser->uuid;
100
101
  $input['slug'] = $existingUser->slug;
101
102
 
@@ -107,6 +108,18 @@ class DriverController extends FleetOpsController
107
108
  // create the profile
108
109
  $driverProfile = Driver::create($input);
109
110
 
111
+ // Assign user to company
112
+ if ($company) {
113
+ $existingUser->assignCompany($company);
114
+
115
+ // create company user
116
+ CompanyUser::create([
117
+ 'user_uuid' => $existingUser->uuid,
118
+ 'company_uuid' => $company->uuid,
119
+ 'status' => $isOrganizationMember ? 'active' : 'pending'
120
+ ]);
121
+ }
122
+
110
123
  if (!$isOrganizationMember) {
111
124
  // send invitation to user
112
125
  $invitation = Invite::create([
@@ -159,7 +172,7 @@ class DriverController extends FleetOpsController
159
172
 
160
173
  // Get current session company
161
174
  $company = Auth::getCompany();
162
- $userInput['company_uuid'] = $company ? $company->uuid : session('company');
175
+ $userInput['company_uuid'] = session('company', $company->uuid);
163
176
 
164
177
  // Create user account
165
178
  $user = User::create($userInput);
@@ -22,11 +22,11 @@ class GeocoderController extends Controller
22
22
  $query = $request->or(['coordinates', 'query']);
23
23
  $single = $request->boolean('single');
24
24
 
25
- /** @var \Grimzy\LaravelMysqlSpatial\Types\Point $coordinates */
25
+ /** @var \Fleetbase\LaravelMysqlSpatial\Types\Point $coordinates */
26
26
  $coordinates = Utils::getPointFromCoordinates($query);
27
27
 
28
28
  // if not a valid point error
29
- if (!$coordinates instanceof \Grimzy\LaravelMysqlSpatial\Types\Point) {
29
+ if (!$coordinates instanceof \Fleetbase\LaravelMysqlSpatial\Types\Point) {
30
30
  return response()->error('Invalid coordinates provided.');
31
31
  }
32
32
 
@@ -8,6 +8,12 @@ use Illuminate\Http\Request;
8
8
 
9
9
  class MetricsController extends Controller
10
10
  {
11
+ /**
12
+ * Gets all key metrics for the current session.
13
+ *
14
+ * @param \Illuminate\Http\Request $request
15
+ * @return \Illuminate\Http\Response
16
+ */
11
17
  public function all(Request $request)
12
18
  {
13
19
  $start = $request->date('start');
@@ -22,54 +28,4 @@ class MetricsController extends Controller
22
28
 
23
29
  return response()->json($data);
24
30
  }
25
-
26
- public function dashboard(Request $request)
27
- {
28
- $start = $request->date('start');
29
- $end = $request->date('end');
30
- $discover = $request->array('discover', []);
31
- $metrics = [];
32
-
33
- try {
34
- $metrics = Metrics::forCompany($request->user()->company, $start, $end)->with($discover)->get();
35
- } catch (\Exception $e) {
36
- return response()->error($e->getMessage());
37
- }
38
-
39
- // metrics format map
40
- $metricsFormats = [
41
- 'earnings' => 'money',
42
- 'fuel_costs' => 'money',
43
- 'total_distance_traveled' => 'meters',
44
- ];
45
-
46
- // dashboard config
47
- $dashboardConfig = [
48
- [
49
- 'size' => 12,
50
- 'title' => 'Fleet-Ops Metrics',
51
- 'classList' => [],
52
- 'component' => null,
53
- 'queryParams' => [
54
- 'start' => ['component' => 'date-picker'],
55
- 'end' => ['component' => 'date-picker'],
56
- ],
57
- 'widgets' => collect($metrics)
58
- ->map(function ($value, $key) use ($metricsFormats) {
59
- return [
60
- 'component' => 'count',
61
- 'options' => [
62
- 'format' => $metricsFormats[$key] ?? null,
63
- 'title' => str_replace('_', ' ', \Illuminate\Support\Str::title($key)),
64
- 'value' => $value,
65
- ],
66
- ];
67
- })
68
- ->values()
69
- ->toArray(),
70
- ],
71
- ];
72
-
73
- return response()->json(array_values($dashboardConfig));
74
- }
75
31
  }
@@ -82,6 +82,7 @@ class OrderController extends FleetOpsController
82
82
  $payload = Utils::get($input, 'payload');
83
83
  $waypoints = Utils::get($input, 'payload.waypoints');
84
84
  $entities = Utils::get($input, 'payload.entities');
85
+ $uploads = Utils::get($input, 'files', []);
85
86
 
86
87
  // save order route & payload with request input
87
88
  $order
@@ -91,6 +92,16 @@ class OrderController extends FleetOpsController
91
92
  ->insertWaypoints($waypoints)
92
93
  ->insertEntities($entities);
93
94
 
95
+ // If order creation includes files assosciate each to this order
96
+ if ($uploads) {
97
+ $ids = collect($uploads)->pluck('uuid');
98
+ $files = File::whereIn('uuid', $ids)->get();
99
+
100
+ foreach ($files as $file) {
101
+ $file->setKey($order);
102
+ }
103
+ }
104
+
94
105
  // if it's integrated vendor order apply to meta
95
106
  if ($isIntegratedVendorOrder) {
96
107
  $order->updateMeta(
@@ -370,7 +381,7 @@ class OrderController extends FleetOpsController
370
381
  $flow = $activity = Flow::getNextActivity($order);
371
382
 
372
383
  /**
373
- * @var \Grimzy\LaravelMysqlSpatial\Types\Point
384
+ * @var \Fleetbase\LaravelMysqlSpatial\Types\Point
374
385
  */
375
386
  $location = $order->getLastLocation();
376
387
 
@@ -442,7 +453,7 @@ class OrderController extends FleetOpsController
442
453
  }
443
454
 
444
455
  /**
445
- * @var \Grimzy\LaravelMysqlSpatial\Types\Point
456
+ * @var \Fleetbase\LaravelMysqlSpatial\Types\Point
446
457
  */
447
458
  $location = $order->getLastLocation();
448
459
 
@@ -8,7 +8,7 @@ use Fleetbase\FleetOps\Models\Place;
8
8
  use Fleetbase\FleetOps\Support\Geocoding;
9
9
  use Fleetbase\Http\Requests\ExportRequest;
10
10
  use Fleetbase\Http\Requests\Internal\BulkDeleteRequest;
11
- use Grimzy\LaravelMysqlSpatial\Types\Point;
11
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
12
12
  use Illuminate\Http\Request;
13
13
  use Illuminate\Support\Str;
14
14
  use Maatwebsite\Excel\Facades\Excel;
@@ -6,7 +6,7 @@ use Fleetbase\FleetOps\Models\ServiceArea;
6
6
  use Fleetbase\FleetOps\Models\Zone;
7
7
  use Fleetbase\FleetOps\Support\Utils;
8
8
  use Fleetbase\Http\Filter\Filter;
9
- use Grimzy\LaravelMysqlSpatial\Types\Geometry;
9
+ use Fleetbase\LaravelMysqlSpatial\Types\Geometry;
10
10
 
11
11
  class PlaceFilter extends Filter
12
12
  {
@@ -4,8 +4,8 @@ namespace Fleetbase\FleetOps\Http\Resources\v1;
4
4
 
5
5
  use Fleetbase\FleetOps\Support\Utils;
6
6
  use Fleetbase\Http\Resources\FleetbaseResource;
7
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
7
8
  use Fleetbase\Support\Http;
8
- use Grimzy\LaravelMysqlSpatial\Types\Point;
9
9
 
10
10
  class Driver extends FleetbaseResource
11
11
  {
@@ -3,8 +3,8 @@
3
3
  namespace Fleetbase\FleetOps\Http\Resources\v1;
4
4
 
5
5
  use Fleetbase\Http\Resources\FleetbaseResource;
6
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
6
7
  use Fleetbase\Support\Http;
7
- use Grimzy\LaravelMysqlSpatial\Types\Point;
8
8
 
9
9
  class FuelReport extends FleetbaseResource
10
10
  {
@@ -3,8 +3,8 @@
3
3
  namespace Fleetbase\FleetOps\Http\Resources\v1;
4
4
 
5
5
  use Fleetbase\Http\Resources\FleetbaseResource;
6
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
6
7
  use Fleetbase\Support\Http;
7
- use Grimzy\LaravelMysqlSpatial\Types\Point;
8
8
 
9
9
  class Issue extends FleetbaseResource
10
10
  {
@@ -4,6 +4,7 @@ namespace Fleetbase\FleetOps\Http\Resources\v1;
4
4
 
5
5
  use Fleetbase\FleetOps\Support\Utils;
6
6
  use Fleetbase\Http\Resources\FleetbaseResource;
7
+ use Fleetbase\Http\Resources\Comment;
7
8
  use Fleetbase\Support\Http;
8
9
  use Fleetbase\Support\Resolve;
9
10
 
@@ -43,6 +44,8 @@ class Order extends FleetbaseResource
43
44
  'driver_assigned' => new Driver($this->driverAssigned()->without(['jobs', 'currentJob'])->first()),
44
45
  'tracking_number' => new TrackingNumber($this->trackingNumber),
45
46
  'tracking_statuses' => $this->whenLoaded('trackingStatuses', TrackingStatus::collection($this->trackingStatuses)),
47
+ 'comments' => $this->when(Http::isInternalRequest(), Comment::collection($this->comments)),
48
+ 'files' => $this->when(Http::isInternalRequest(), $this->files),
46
49
  'purchase_rate' => new PurchaseRate($this->purchaseRate),
47
50
  'notes' => $this->notes,
48
51
  'type' => $this->type,
@@ -43,6 +43,7 @@ class Payload extends FleetbaseResource
43
43
  {
44
44
  return $this->waypoints->map(function ($waypoint) {
45
45
  $waypoint->payload_uuid = $this->uuid;
46
+
46
47
  return $waypoint;
47
48
  });
48
49
  }
@@ -3,9 +3,9 @@
3
3
  namespace Fleetbase\FleetOps\Http\Resources\v1;
4
4
 
5
5
  use Fleetbase\Http\Resources\FleetbaseResource;
6
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
6
7
  use Fleetbase\Support\Http;
7
8
  use Fleetbase\Support\Resolve;
8
- use Grimzy\LaravelMysqlSpatial\Types\Point;
9
9
 
10
10
  class Place extends FleetbaseResource
11
11
  {
@@ -21,13 +21,14 @@ class PurchaseRate extends FleetbaseResource
21
21
  'id' => $this->when(Http::isInternalRequest(), $this->id, $this->public_id),
22
22
  'uuid' => $this->when(Http::isInternalRequest(), $this->uuid),
23
23
  'public_id' => $this->when(Http::isInternalRequest(), $this->public_id),
24
- 'service_quote' => $this->service_quote_id,
24
+ 'service_quote' => $this->when(Http::isInternalRequest(), $this->serviceQuote(), $this->service_quote_id),
25
25
  'order' => $this->order_id,
26
26
  'customer' => $this->customer_id,
27
27
  'transaction' => $this->transaction_id,
28
28
  'amount' => $this->amount,
29
29
  'currency' => $this->currency,
30
30
  'status' => $this->status,
31
+ // 'type' => $this->when(Http::isInternalRequest(), 'service-rate'),
31
32
  'updated_at' => $this->updated_at,
32
33
  'created_at' => $this->created_at,
33
34
  ];
@@ -25,6 +25,7 @@ class ServiceQuote extends FleetbaseResource
25
25
  'service_rate_name' => $this->when(Http::isInternalRequest(), data_get($this, 'serviceRate.name')),
26
26
  'service_rate' => $this->when(Http::isPublicRequest(), data_get($this, 'serviceRate.public_id')),
27
27
  'facilitator' => $this->when(Http::isPublicRequest(), data_get($this, 'integratedVendor.public_id')),
28
+ 'items' => ServiceQuoteItem::collection($this->items),
28
29
  'request_id' => $this->request_id,
29
30
  'amount' => $this->amount,
30
31
  'currency' => $this->currency,
@@ -0,0 +1,29 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Http\Resources\v1;
4
+
5
+ use Fleetbase\Http\Resources\FleetbaseResource;
6
+ use Fleetbase\Support\Http;
7
+
8
+ class ServiceQuoteItem extends FleetbaseResource
9
+ {
10
+ /**
11
+ * Transform the resource into an array.
12
+ *
13
+ * @param \Illuminate\Http\Request $request
14
+ *
15
+ * @return array
16
+ */
17
+ public function toArray($request)
18
+ {
19
+ return [
20
+ 'id' => $this->when(Http::isInternalRequest(), $this->id, $this->public_id),
21
+ 'uuid' => $this->when(Http::isInternalRequest(), $this->uuid),
22
+ 'service_quote_uuid' => $this->when(Http::isInternalRequest(), $this->service_quote_uuid),
23
+ 'amount' => $this->amount,
24
+ 'currency' => $this->currency,
25
+ 'details' => $this->details,
26
+ 'code' => $this->code,
27
+ ];
28
+ }
29
+ }
@@ -4,8 +4,8 @@ namespace Fleetbase\FleetOps\Http\Resources\v1;
4
4
 
5
5
  use Fleetbase\FleetOps\Support\Utils;
6
6
  use Fleetbase\Http\Resources\FleetbaseResource;
7
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
7
8
  use Fleetbase\Support\Http;
8
- use Grimzy\LaravelMysqlSpatial\Types\Point;
9
9
 
10
10
  class TrackingStatus extends FleetbaseResource
11
11
  {
@@ -3,8 +3,8 @@
3
3
  namespace Fleetbase\FleetOps\Http\Resources\v1;
4
4
 
5
5
  use Fleetbase\Http\Resources\FleetbaseResource;
6
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
6
7
  use Fleetbase\Support\Http;
7
- use Grimzy\LaravelMysqlSpatial\Types\Point;
8
8
 
9
9
  class Vehicle extends FleetbaseResource
10
10
  {
@@ -3,8 +3,8 @@
3
3
  namespace Fleetbase\FleetOps\Http\Resources\v1;
4
4
 
5
5
  use Fleetbase\Http\Resources\FleetbaseResource;
6
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
6
7
  use Fleetbase\Support\Http;
7
- use Grimzy\LaravelMysqlSpatial\Types\Point;
8
8
 
9
9
  class VehicleWithoutDriver extends FleetbaseResource
10
10
  {
@@ -4,9 +4,9 @@ namespace Fleetbase\FleetOps\Http\Resources\v1;
4
4
 
5
5
  use Fleetbase\FleetOps\Models\Waypoint as WaypointModel;
6
6
  use Fleetbase\Http\Resources\FleetbaseResource;
7
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
7
8
  use Fleetbase\Support\Http;
8
9
  use Fleetbase\Support\Resolve;
9
- use Grimzy\LaravelMysqlSpatial\Types\Point;
10
10
 
11
11
  class Waypoint extends FleetbaseResource
12
12
  {
@@ -56,9 +56,7 @@ class Waypoint extends FleetbaseResource
56
56
  }
57
57
 
58
58
  /**
59
- * Finds the waypoint got a payload and place
60
- *
61
- * @return WaypointModel|null
59
+ * Finds the waypoint got a payload and place.
62
60
  */
63
61
  private function getWaypoint(): ?WaypointModel
64
62
  {
@@ -3,8 +3,8 @@
3
3
  namespace Fleetbase\FleetOps\Integrations\Lalamove;
4
4
 
5
5
  use Fleetbase\FleetOps\Models\Place;
6
- use Grimzy\LaravelMysqlSpatial\Eloquent\SpatialExpression;
7
- use Grimzy\LaravelMysqlSpatial\Types\Point;
6
+ use Fleetbase\LaravelMysqlSpatial\Eloquent\SpatialExpression;
7
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
8
8
  use Illuminate\Support\Str;
9
9
 
10
10
  class LalamoveDeliveryStop
@@ -4,7 +4,7 @@ namespace Fleetbase\FleetOps\Jobs;
4
4
 
5
5
  use Fleetbase\FleetOps\Events\DriverSimulatedLocationChanged;
6
6
  use Fleetbase\FleetOps\Models\Driver;
7
- use Grimzy\LaravelMysqlSpatial\Types\Point;
7
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
8
8
  use Illuminate\Bus\Queueable;
9
9
  use Illuminate\Contracts\Queue\ShouldQueue;
10
10
  use Illuminate\Foundation\Bus\Dispatchable;
@@ -28,7 +28,7 @@ class SimulateWaypointReached implements ShouldQueue
28
28
  public Driver $driver;
29
29
 
30
30
  /**
31
- * @var \Grimzy\LaravelMysqlSpatial\Types\Point the waypoint that the driver is simulated to have reached
31
+ * @var \Fleetbase\LaravelMysqlSpatial\Types\Point the waypoint that the driver is simulated to have reached
32
32
  */
33
33
  public Point $waypoint;
34
34