creat controller ,request and route about damage and fix model

This commit is contained in:
2025-02-17 13:55:02 +03:30
parent 8e2857f3c2
commit 469fc351f5
9 changed files with 254 additions and 5 deletions

View File

@@ -0,0 +1,97 @@
<?php
namespace App\Http\Controllers\V3;
use App\Facades\DataTable\DataTableFacade;
use App\Http\Controllers\Controller;
use App\Http\Requests\V3\Damage\DeleteRequest;
use App\Http\Requests\V3\Damage\StoreRequest;
use App\Http\Requests\V3\Damage\UpdateRequest;
use App\Http\Traits\ApiResponse;
use App\Models\Damage;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class DamageManagementController extends Controller
{
use ApiResponse;
/**
* Display a listing of the resource.
*/
public function index(Request $request): JsonResponse
{
$allowedFilters = ['*'];
$allowedSortings = ['*'];
$query = Damage::query();
$data = DataTableFacade::run(
$query,
$request,
allowedFilters: $allowedFilters,
allowedSortings: $allowedSortings);
return response()->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();
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Http\Requests\V3\Damage;
use Illuminate\Foundation\Http\FormRequest;
class DeleteRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'status' => 'required|in:0,1',
];
}
}

View File

@@ -0,0 +1,31 @@
<?php
namespace App\Http\Requests\V3\Damage;
use Illuminate\Foundation\Http\FormRequest;
class StoreRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|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',
];
}
}

View File

@@ -0,0 +1,31 @@
<?php
namespace App\Http\Requests\V3\Damage;
use Illuminate\Foundation\Http\FormRequest;
class UpdateRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'title' =>'required|string|unique:damages,title',
'unit' =>'required|string',
'base_price' =>'required|numeric',
'status' =>'required|integer',
];
}
}

View File

@@ -2,15 +2,18 @@
namespace App\Models; namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
class Damage extends Model class Damage extends Model
{ {
use HasFactory;
protected $fillable = [
'damage_id', public $timestamps = false;
];
public function accidents() protected $guarded = [];
public function accidents(): BelongsToMany
{ {
return $this->belongsToMany('App\Accident'); return $this->belongsToMany('App\Accident');
} }

View File

@@ -0,0 +1,26 @@
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Damage>
*/
class DamageFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
'title' => $this->faker->title(),
'unit' => $this->faker->word(),
'base_price' => $this->faker->numberBetween(1000, 10000),
'status' => 1
];
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Database\Seeders;
use App\Models\Damage;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class DamageSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
Damage::factory(10)->create();
}
}

View File

@@ -1,5 +1,7 @@
<?php <?php
namespace Database\Seeders;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;

View File

@@ -2,6 +2,7 @@
use App\Http\Controllers\V3\Auth\LogoutController; use App\Http\Controllers\V3\Auth\LogoutController;
use App\Http\Controllers\V3\CMMSMachinesController; use App\Http\Controllers\V3\CMMSMachinesController;
use App\Http\Controllers\V3\DamageManagementController;
use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshController; use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshController;
use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshSampleController; use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshSampleController;
use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshTypeController; use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshTypeController;
@@ -215,3 +216,15 @@ Route::prefix('road_patrol_reports')
Route::get('/activities_on_map', 'activitiesOnMap')->name('activitiesOnMap'); Route::get('/activities_on_map', 'activitiesOnMap')->name('activitiesOnMap');
Route::get('/show_on_map/{roadPatrol}', 'showOnMap')->name('showOnMap'); 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');
});