diff --git a/app/Http/Controllers/V3/DamageManagementController.php b/app/Http/Controllers/V3/DamageManagementController.php new file mode 100644 index 00000000..a00eac3c --- /dev/null +++ b/app/Http/Controllers/V3/DamageManagementController.php @@ -0,0 +1,97 @@ +json($data); + } + + public function list(): JsonResponse + { + $damages = Damage::query()->where('status', '=', 1)->get(); + return $this->successResponse($damages); + } + + + /** + * Store a newly created resource in storage. + */ + public function store(StoreRequest $request): JsonResponse + { + Damage::query()->create([ + 'title' => $request->title, + 'unit' => $request->unit, + 'base_price' => $request->base_price, + 'status' => $request->status, + ]); + + return $this->successResponse(); + } + + /** + * Display the specified resource. + */ + public function show(Damage $damage): JsonResponse + + { + return $this->successResponse($damage); + } + + /** + * Show the form for editing the specified resource. + */ + + public function update(UpdateRequest $request, Damage $damage): JsonResponse + + { + $damage->update([ + 'title' => $request->title, + 'unit' => $request->unit, + 'base_price' => $request->base_price, + 'status' => $request->status, + ]); + + return $this->successResponse(); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(DeleteRequest $request, Damage $damage): JsonResponse + { + $damage->update([ + 'status' => $request->status, + ]); + + return $this->successResponse(); + } +} diff --git a/app/Http/Requests/V3/Damage/DeleteRequest.php b/app/Http/Requests/V3/Damage/DeleteRequest.php new file mode 100644 index 00000000..aea281d6 --- /dev/null +++ b/app/Http/Requests/V3/Damage/DeleteRequest.php @@ -0,0 +1,28 @@ +|string> + */ + public function rules(): array + { + return [ + 'status' => 'required|in:0,1', + ]; + } +} diff --git a/app/Http/Requests/V3/Damage/StoreRequest.php b/app/Http/Requests/V3/Damage/StoreRequest.php new file mode 100644 index 00000000..2e3e88ef --- /dev/null +++ b/app/Http/Requests/V3/Damage/StoreRequest.php @@ -0,0 +1,31 @@ +|string> + */ + public function rules(): array + { + return [ + 'title' =>'required|string|max:255|unique:damages,title', + 'unit' =>'required|string|max:255', + 'base_price' =>'required|integer', + 'status' =>'required|in:0,1', + ]; + } +} diff --git a/app/Http/Requests/V3/Damage/UpdateRequest.php b/app/Http/Requests/V3/Damage/UpdateRequest.php new file mode 100644 index 00000000..d3d0e038 --- /dev/null +++ b/app/Http/Requests/V3/Damage/UpdateRequest.php @@ -0,0 +1,31 @@ +|string> + */ + public function rules(): array + { + return [ + 'title' =>'required|string|unique:damages,title', + 'unit' =>'required|string', + 'base_price' =>'required|numeric', + 'status' =>'required|integer', + ]; + } +} diff --git a/app/Models/Damage.php b/app/Models/Damage.php index 23e07551..7ae46d70 100644 --- a/app/Models/Damage.php +++ b/app/Models/Damage.php @@ -2,15 +2,18 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsToMany; class Damage extends Model { - - protected $fillable = [ - 'damage_id', - ]; - public function accidents() + use HasFactory; + + public $timestamps = false; + + protected $guarded = []; + public function accidents(): BelongsToMany { return $this->belongsToMany('App\Accident'); } diff --git a/database/factories/DamageFactory.php b/database/factories/DamageFactory.php new file mode 100644 index 00000000..efe62b9d --- /dev/null +++ b/database/factories/DamageFactory.php @@ -0,0 +1,26 @@ + + */ +class DamageFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'title' => $this->faker->title(), + 'unit' => $this->faker->word(), + 'base_price' => $this->faker->numberBetween(1000, 10000), + 'status' => 1 + ]; + } +} diff --git a/database/seeders/DamageSeeder.php b/database/seeders/DamageSeeder.php new file mode 100644 index 00000000..09078e9c --- /dev/null +++ b/database/seeders/DamageSeeder.php @@ -0,0 +1,18 @@ +create(); + } +} diff --git a/database/seeders/UsersTableSeeder.php b/database/seeders/UsersTableSeeder.php index 56d9496f..f40fd99b 100644 --- a/database/seeders/UsersTableSeeder.php +++ b/database/seeders/UsersTableSeeder.php @@ -1,5 +1,7 @@ name('activitiesOnMap'); Route::get('/show_on_map/{roadPatrol}', 'showOnMap')->name('showOnMap'); }); + +Route::prefix('damages') + ->name('damages.') + ->controller(DamageManagementController::class) + ->group(function () { + Route::get('/', 'index')->name('index'); + Route::get('/list', 'list')->name('list'); + Route::post('/', 'store')->name('store'); + Route::get('/{damage}', 'show')->name('show'); + Route::post('/{damage}', 'update')->name('update'); + Route::post('/delete/{damage}', 'destroy')->name('destroy'); + });