feat: implement drop-off points & dumpsites edit/delete and status transition logic
This commit is contained in:
@@ -7,6 +7,7 @@ use App\Http\Requests\Dumpsite\StoreDumpsiteRequest;
|
||||
use App\Http\Requests\Dumpsite\UpdateDumpsiteRequest;
|
||||
use App\Http\Resources\DumpsiteResource;
|
||||
use App\Models\Dumpsite;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use MatanYadaev\EloquentSpatial\Objects\LineString;
|
||||
@@ -102,7 +103,25 @@ class AdminDumpsiteController extends ApiController
|
||||
}
|
||||
}
|
||||
|
||||
$dumpsite->update($payload);
|
||||
$oldStatus = $dumpsite->status;
|
||||
$newStatus = $payload['status'] ?? $oldStatus;
|
||||
|
||||
DB::transaction(function () use ($dumpsite, $payload, $oldStatus, $newStatus) {
|
||||
$dumpsite->update($payload);
|
||||
|
||||
if ($newStatus !== Dumpsite::STATUS_ACTIVE && $oldStatus === Dumpsite::STATUS_ACTIVE) {
|
||||
$trips = \App\Models\Trip::where('dumpsite_id', $dumpsite->id)
|
||||
->whereIn('status', [\App\Models\Trip::STATUS_SCHEDULED, \App\Models\Trip::STATUS_IN_PROGRESS, \App\Models\Trip::STATUS_AT_DUMPSITE])
|
||||
->get();
|
||||
|
||||
foreach ($trips as $trip) {
|
||||
$trip->update([
|
||||
'status' => \App\Models\Trip::STATUS_CANCELLED,
|
||||
'notes' => trim(($trip->notes ?? '') . "\nSystem: Trip cancelled because the dumpsite was moved to " . $newStatus . " status."),
|
||||
]);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return $this->ok(
|
||||
new DumpsiteResource($dumpsite->fresh()->load('cityMunicipality')),
|
||||
|
||||
Reference in New Issue
Block a user