Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
135 changes: 135 additions & 0 deletions server/src/Http/Controllers/Api/v1/IssueController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
<?php

namespace Fleetbase\FleetOps\Http\Controllers\Api\v1;

use Fleetbase\FleetOps\Http\Requests\CreateIssueRequest;
use Fleetbase\FleetOps\Http\Requests\UpdateIssueRequest;
use Fleetbase\FleetOps\Http\Resources\v1\Issue as IssueResource;
use Fleetbase\FleetOps\Http\Resources\v1\Issue as DeletedIssue;
use Fleetbase\FleetOps\Models\Driver;
use Fleetbase\FleetOps\Models\Issue;
use Fleetbase\Http\Controllers\Controller;
use Illuminate\Http\Request;

class IssueController extends Controller
{
/**
* Creates a new Fleetbase Issue resource.
*
* @param \Fleetbase\Http\Requests\CreateIssueRequest $request
*
* @return \Fleetbase\Http\Resources\Entity
*/
public function createRecord(CreateIssueRequest $request)
{
// get request input
$input = $request->only([
'driver',
'location',
'category',
'type',
'report',
'priority',
]);

// Find driver who is reporting
try {
$driver = Driver::findRecordOrFail($request->input('driver'));
} catch (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
return response()->json(
[
'error' => 'Driver reporting issue not found.',
],
404
);
}

// get the user uuid
$input['driver_uuid'] = $driver->uuid;
$input['reported_by_uuid'] = $driver->user_uuid;
$input['vehicle_uuid'] = $driver->vehicle_uuid;

// create the entity
$entity = Issue::create($input);

// response the driver resource
return new IssueResource($entity);
}

/**
* Updates new Fleetbase Issue resource.
*
* @param string $id
* @param \Fleetbase\Http\Requests\UpdateIssueRequest $request
*
* @return \Fleetbase\Http\Resources\Issue
*/
public function updateRecord($id, UpdateIssueRequest $request)
{
// find for the issue
try {
$issue = Issue::findRecordOrFail($id);
} catch (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
return response()->json(
[
'error' => 'Issue resource not found.',
],
404
);
}

$input = $request->only([
'category',
'type',
'report',
'priority',
]);


// update the issue
$issue->update($input);

// response the issue resource
return new IssueResource($issue);
}


/**
* Query for Fleetbase Issue resources.
*
* @return \Fleetbase\Http\Resources\FleetCollection
*/
public function queryRecord(Request $request)
{
$results = Issue::queryWithRequest($request);

return IssueResource::collection($results);
}


/**
* Deletes a Fleetbase Issue resources.
*
* @return \Fleetbase\Http\Resources\FleetCollection
*/
public function deleteRecord($id)
{
// find for the driver
try {
$issue = Issue::findRecordOrFail($id);
} catch (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
return response()->json(
[
'error' => 'Issue resource not found.',
],
404
);
}

// delete the issue
$issue->delete();

// response the issue resource
return new DeletedIssue($issue);
}
}
18 changes: 18 additions & 0 deletions server/src/Http/Requests/CreateIssueRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?php

namespace Fleetbase\FleetOps\Http\Requests;
use Fleetbase\Http\Requests\FleetbaseRequest;
class CreateIssueRequest extends FleetbaseRequest
{
public function rules()
{

return [
'driver' => ['required'],
'location' =>['required'],
'category' => ['nullable'],
'type' => ['nullable'],
'priority' => ['nullable'],
];
}
}
7 changes: 7 additions & 0 deletions server/src/Http/Requests/UpdateIssueRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?php

namespace Fleetbase\FleetOps\Http\Requests;

class UpdateIssueRequest extends CreateIssueRequest
{
}
3 changes: 3 additions & 0 deletions server/src/routes.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,9 @@ function ($router) {
$router->put('{id}', 'VendorController@update');
$router->delete('{id}', 'VendorController@delete');
});
$router->fleetbaseRoutes(
'issues'
);
// orders routes
$router->group(['prefix' => 'orders'], function () use ($router) {
$router->post('/', 'OrderController@create');
Expand Down