diff --git a/app/Http/Controllers/V3/Azmayesh/AzmayeshController.php b/app/Http/Controllers/V3/Azmayesh/AzmayeshController.php index a4e2a3a0..aea47c94 100644 --- a/app/Http/Controllers/V3/Azmayesh/AzmayeshController.php +++ b/app/Http/Controllers/V3/Azmayesh/AzmayeshController.php @@ -6,6 +6,8 @@ use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; use App\Http\Traits\ApiResponse; use App\Models\Azmayesh; +use App\Models\AzmayeshType; +use App\Models\Province; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -17,7 +19,17 @@ class AzmayeshController extends Controller */ public function index(Request $request): JsonResponse { - $columns = array('id', 'name'); + $columns = array( + 'id', + 'request_date', + 'report_date', + 'request_number', + 'employer', + 'contractor', + 'work_number', + 'consultant', + 'applicant', + ); $allowedFilters = $columns; $allowedSortings = $columns; @@ -30,15 +42,36 @@ class AzmayeshController extends Controller allowedFilters: $allowedFilters, allowedSortings: $allowedSortings); - return $this->successResponse($data); + return response()->json($data); } /** * Store a newly created resource in storage. */ - public function store(Request $request) + public function store(Request $request): JsonResponse { - // + $azmayeshType = AzmayeshType::query()->find($request->azmayesh_type_id); + $province = Province::query()->find($request->province_id); + + Azmayesh::query()->create([ + 'lat' => $request->lat, + 'lng' => $request->lng, + 'azmayesh_type_id' => $azmayeshType->id, + 'azmayesh_type_name' => $azmayeshType->name, + 'request_date' => $request->lat, + 'report_date' => $request->lat, + 'request_number' => $request->lat, + 'employer' => $request->lat, + 'contractor' => $request->lat, + 'work_number' => $request->lat, + 'project_name' => $request->lat, + 'consultant' => $request->lat, + 'applicant' => $request->lat, + 'province_id' => $province->id, + 'province_name' => $province->name, + ]); + + return $this->successResponse(); } /** @@ -52,9 +85,22 @@ class AzmayeshController extends Controller /** * Update the specified resource in storage. */ - public function update(Request $request, Azmayesh $azmayesh) + public function update(Request $request, Azmayesh $azmayesh): JsonResponse { - // + $province = Province::query()->find($request->province_id); + + $azmayesh->update([ + 'name' => $request->name, + 'username' => $request->username, + 'email' => $request->email, + 'phone_number' => $request->phone_number, + 'national_id' => $request->national_id, + 'position' => $request->position, + 'province_id' => $province->id, + 'province_name' => $province->name, + ]); + + return $this->successResponse(); } /** diff --git a/app/Http/Controllers/V3/Azmayesh/AzmayeshTypeController.php b/app/Http/Controllers/V3/Azmayesh/AzmayeshTypeController.php index d3dbe072..f9d1cf88 100644 --- a/app/Http/Controllers/V3/Azmayesh/AzmayeshTypeController.php +++ b/app/Http/Controllers/V3/Azmayesh/AzmayeshTypeController.php @@ -21,7 +21,7 @@ class AzmayeshTypeController extends Controller public function fields(AzmayeshType $azmayeshType): JsonResponse { - $fields = $azmayeshType->azmayeshFields(); + $fields = $azmayeshType->azmayeshFields; return $this->successResponse($fields); } diff --git a/app/Models/Azmayesh.php b/app/Models/Azmayesh.php index a790c42c..88adfa5e 100644 --- a/app/Models/Azmayesh.php +++ b/app/Models/Azmayesh.php @@ -16,4 +16,9 @@ class Azmayesh extends Model { return $this->hasMany(AzmayeshSample::class); } + + public function getRouteKeyName(): string + { + return 'id'; + } } diff --git a/app/Models/AzmayeshSample.php b/app/Models/AzmayeshSample.php index baa62a61..e79b544a 100644 --- a/app/Models/AzmayeshSample.php +++ b/app/Models/AzmayeshSample.php @@ -8,4 +8,6 @@ use Illuminate\Database\Eloquent\Model; class AzmayeshSample extends Model { use HasFactory; + + protected $guarded = []; } diff --git a/app/Models/AzmayeshType.php b/app/Models/AzmayeshType.php index 80a8c6aa..0a5db09d 100644 --- a/app/Models/AzmayeshType.php +++ b/app/Models/AzmayeshType.php @@ -20,6 +20,6 @@ class AzmayeshType extends Model public function azmayeshFields(): BelongsToMany { - return $this->belongsToMany(AzmayeshField::class); + return $this->belongsToMany(AzmayeshField::class,'azmayesh_field_azmayesh_type'); } } diff --git a/database/factories/AzmayeshFactory.php b/database/factories/AzmayeshFactory.php index 8b388147..78c19dae 100644 --- a/database/factories/AzmayeshFactory.php +++ b/database/factories/AzmayeshFactory.php @@ -2,6 +2,8 @@ namespace Database\Factories; +use App\Models\AzmayeshType; +use App\Models\Province; use Illuminate\Database\Eloquent\Factories\Factory; /** @@ -17,7 +19,14 @@ class AzmayeshFactory extends Factory public function definition(): array { return [ - // + 'azmayesh_type_id' => AzmayeshType::factory(), + 'azmayesh_type_name' => function (array $attributes) { + return AzmayeshType::query()->find($attributes['azmayesh_type_id'])->name; + }, + 'province_id' => Province::factory(), + 'province_name' => function (array $attributes) { + return Province::query()->find($attributes['province_id'])->name; + }, ]; } } diff --git a/database/factories/AzmayeshFieldFactory.php b/database/factories/AzmayeshFieldFactory.php index 01716b78..e0729e35 100644 --- a/database/factories/AzmayeshFieldFactory.php +++ b/database/factories/AzmayeshFieldFactory.php @@ -17,7 +17,9 @@ class AzmayeshFieldFactory extends Factory public function definition(): array { return [ - // + 'name' => $this->faker->name, + 'unit' => $this->faker->name, + 'type' => $this->faker->name, ]; } } diff --git a/database/factories/AzmayeshSampleFactory.php b/database/factories/AzmayeshSampleFactory.php index 73670225..f4b518a4 100644 --- a/database/factories/AzmayeshSampleFactory.php +++ b/database/factories/AzmayeshSampleFactory.php @@ -2,6 +2,7 @@ namespace Database\Factories; +use App\Models\Azmayesh; use Illuminate\Database\Eloquent\Factories\Factory; /** @@ -17,7 +18,11 @@ class AzmayeshSampleFactory extends Factory public function definition(): array { return [ - // + 'azmayesh_id' => Azmayesh::factory(), + 'azmayesh_name' => function (array $attributes) { + return Azmayesh::query()->find($attributes['azmayesh_id'])->name; + }, + 'data' => json_encode(['test']), ]; } } diff --git a/database/factories/AzmayeshTypeFactory.php b/database/factories/AzmayeshTypeFactory.php index 3a2bb0a2..0a0cf008 100644 --- a/database/factories/AzmayeshTypeFactory.php +++ b/database/factories/AzmayeshTypeFactory.php @@ -17,7 +17,7 @@ class AzmayeshTypeFactory extends Factory public function definition(): array { return [ - // + 'name' => $this->faker->name ]; } } diff --git a/database/migrations/2024_10_22_092800_create_azmayeshes_table.php b/database/migrations/2024_10_22_092800_create_azmayeshes_table.php index e36d00cb..f477cea9 100644 --- a/database/migrations/2024_10_22_092800_create_azmayeshes_table.php +++ b/database/migrations/2024_10_22_092800_create_azmayeshes_table.php @@ -17,8 +17,18 @@ return new class extends Migration $table->string('azmayesh_type_name'); $table->string('lat'); $table->string('lng'); - $table->foreignId('province_id')->constrained('provinces'); + $table->unsignedTinyInteger('province_id'); + $table->foreign('province_id')->references('id')->on('provinces'); $table->string('province_name'); + $table->date('request_date'); + $table->date('report_date'); + $table->integer('request_number'); + $table->string('employer'); + $table->string('contractor'); + $table->integer('work_number'); + $table->string('project_name'); + $table->string('consultant'); + $table->string('applicant'); $table->timestamps(); }); } diff --git a/database/seeders/AzmayeshSeeder.php b/database/seeders/AzmayeshSeeder.php index b0051ad9..65c04fea 100644 --- a/database/seeders/AzmayeshSeeder.php +++ b/database/seeders/AzmayeshSeeder.php @@ -16,13 +16,41 @@ class AzmayeshSeeder extends Seeder DB::table('azmayeshes')->insert([ [ 'id' => 1, - 'name' => '', + 'lat' => '13.45', + 'lng' => '11.85', + 'azmayesh_type_id' => 1, + 'azmayesh_type_name' => 'test', + 'province_id' => 11, + 'province_name' => 'test', + 'request_date' => '1403-07-04', + 'report_date' => '1403-07-05', + 'request_number' => 0, + 'employer' => 'test', + 'contractor' => 'test', + 'work_number' => 0, + 'project_name' => 'test', + 'consultant' => 'test', + 'applicant' => 'test', 'created_at' => now(), 'updated_at' => now() ], [ 'id' => 2, - 'name' => '', + 'lat' => '13.45', + 'lng' => '11.85', + 'azmayesh_type_id' => 1, + 'azmayesh_type_name' => 'test', + 'province_id' => 11, + 'province_name' => 'test', + 'request_date' => '1403-07-04', + 'report_date' => '1403-07-05', + 'request_number' => '0', + 'employer' => 'test', + 'contractor' => 'test', + 'work_number' => '0', + 'project_name' => 'test', + 'consultant' => 'test', + 'applicant' => 'test', 'created_at' => now(), 'updated_at' => now() ], diff --git a/routes/v3.php b/routes/v3.php index 193d6b0f..bf6e68a6 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -1,6 +1,7 @@ name('changePassword'); }); -Route::prefix('azmayesh') - ->name('azmayesh.') +Route::prefix('azmayesh_types') + ->name('azmayesh_types') + ->controller(AzmayeshTypeController::class) + ->group(function () { + Route::get('/', 'index')->name('index'); + Route::get('/fields/{azmayeshType}', 'fields')->name('fields'); + }); + +Route::prefix('azmayeshes') + ->name('azmayeshes.') ->controller(AzmayeshController::class) ->group(function () { Route::get('/', 'index')->name('index'); - Route::get('/fields', 'fields')->name('fields'); + Route::get('/{azmayesh}', 'show')->name('show'); + Route::post('/store', 'store')->name('store'); + Route::post('/update/{azmayesh}', 'update')->name('update'); + Route::post('/delete/{azmayesh}', 'delete')->name('delete'); });