diff --git a/app/Enums/HarimStates.php b/app/Enums/HarimStates.php new file mode 100644 index 00000000..b8e2c54b --- /dev/null +++ b/app/Enums/HarimStates.php @@ -0,0 +1,25 @@ + "بررسی ادارات شهرستان", + 2 => "بررسی ایمنی راه توسط ادارات حریم", + 3 => "بررسی ایمنی راه توسط معاون ", + 4 => "بررسی ایمنی راه توسط مدیر کل", + 5 => "رد درخواست به دلیل ایمنی راه", + ]; + + return $mapArray[$state]; + } +} \ No newline at end of file diff --git a/app/Models/Harim.php b/app/Models/Harim.php new file mode 100644 index 00000000..55ba6aee --- /dev/null +++ b/app/Models/Harim.php @@ -0,0 +1,13 @@ + + */ +class HarimActionFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => $this->faker->name(), + ]; + } +} diff --git a/database/factories/HarimFactory.php b/database/factories/HarimFactory.php new file mode 100644 index 00000000..4748c539 --- /dev/null +++ b/database/factories/HarimFactory.php @@ -0,0 +1,55 @@ + + */ +class HarimFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'state_id' => $this->faker->numberBetween(1,5), + 'state_name' => function (array $attributes) { + return HarimState::query()->find($attributes['state_id'])->name; + }, + 'first_name' => $this->faker->firstName(), + 'last_name' => $this->faker->lastName(), + 'phone_number' => $this->faker->numerify('09#########'), + 'request_number' => $this->faker->numerify(), + 'request_date' => $this->faker->date(), + 'province_id' => Province::factory(), + 'province_name' => function (array $attributes) { + return Province::query()->find($attributes['province_id'])->name; + }, + 'city_id' => City::factory(), + 'city_name' => function (array $attributes) { + return City::query()->find($attributes['city_id'])->name; + }, + 'edareh_shahri_id' => EdarateShahri::factory(), + 'county' => $this->faker->citySuffix, + 'division' => $this->faker->word, + 'village' => $this->faker->name, + 'grand_area' => $this->faker->numberBetween(1,100), + 'plan_area' => $this->faker->numberBetween(1,100), + 'requested_organization' => $this->faker->name, + 'plan_group' => $this->faker->name, + 'plan_title' => $this->faker->title, + 'address' => $this->faker->address, + 'file' => $this->faker->file, + 'polygon' => $this->faker->numerify(), + ]; + } +} diff --git a/database/factories/HarimHistoryFactory.php b/database/factories/HarimHistoryFactory.php new file mode 100644 index 00000000..51a87c10 --- /dev/null +++ b/database/factories/HarimHistoryFactory.php @@ -0,0 +1,41 @@ + + */ +class HarimHistoryFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'previous_state_id' => HarimState::factory(), + 'previous_state_name' => function (array $attributes) { + return HarimStates::query()->find($attributes['state_id'])->name; + }, + 'current_state_id' => HarimState::factory(), + 'current_state_name' => function (array $attributes) { + return HarimState::query()->find($attributes['state_id'])->name; + }, + 'action_id' => HarimAction::factory(), + 'action_name' => function (array $attributes) { + return HarimAction::query()->find($attributes['state_id'])->name; + }, + 'expert_id' => User::factory(), + 'expert_description' => $this->fake()->text, + 'previous_data' => json_encode(['fake']), + ]; + } +} diff --git a/database/factories/HarimStateFactory.php b/database/factories/HarimStateFactory.php new file mode 100644 index 00000000..82d8e5ad --- /dev/null +++ b/database/factories/HarimStateFactory.php @@ -0,0 +1,23 @@ + + */ +class HarimStateFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => $this->faker->name(), + ]; + } +} diff --git a/database/migrations/2025_07_29_153245_create_harim_states_table.php b/database/migrations/2025_07_29_153245_create_harim_states_table.php new file mode 100644 index 00000000..a947bd8f --- /dev/null +++ b/database/migrations/2025_07_29_153245_create_harim_states_table.php @@ -0,0 +1,28 @@ +id(); + $table->string('name'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('harim_states'); + } +}; diff --git a/database/migrations/2025_07_30_153041_create_harims_table.php b/database/migrations/2025_07_30_153041_create_harims_table.php new file mode 100644 index 00000000..556bc2a5 --- /dev/null +++ b/database/migrations/2025_07_30_153041_create_harims_table.php @@ -0,0 +1,53 @@ +id(); + $table->foreignId('state_id')->constrained('harim_states'); + $table->string('state_name'); + $table->string('first_name'); + $table->string('last_name'); + $table->string('phone_number'); + $table->string('request_number'); + $table->date('request_date'); + $table->unsignedTinyInteger('province_id'); + $table->foreign('province_id')->references('id')->on('provinces'); + $table->string('province_name'); + $table->unsignedSmallInteger('city_id'); + $table->foreign('city_id')->references('id')->on('cities'); + $table->string('city_name'); + $table->unsignedBigInteger('edareh_shahri_id'); + $table->foreign('edareh_shahri_id')->references('id')->on('edarate_shahri'); + $table->string('county'); + $table->string('division'); + $table->string('village'); + $table->integer('grand_area'); + $table->integer('plan_area'); + $table->string('requested_organization'); + $table->string('plan_group'); + $table->string('plan_title'); + $table->string('address'); + $table->string('file'); + $table->polygon('polygon'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('harims'); + } +}; diff --git a/database/migrations/2025_07_30_153133_create_harim_actions_table.php b/database/migrations/2025_07_30_153133_create_harim_actions_table.php new file mode 100644 index 00000000..32a8ddad --- /dev/null +++ b/database/migrations/2025_07_30_153133_create_harim_actions_table.php @@ -0,0 +1,28 @@ +id(); + $table->string('name'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('harim_actions'); + } +}; diff --git a/database/migrations/2025_07_30_153216_create_harim_histories_table.php b/database/migrations/2025_07_30_153216_create_harim_histories_table.php new file mode 100644 index 00000000..74b7a907 --- /dev/null +++ b/database/migrations/2025_07_30_153216_create_harim_histories_table.php @@ -0,0 +1,37 @@ +id(); + $table->foreignId('previous_state_id')->constrained('harim_states'); + $table->string('previous_state_name'); + $table->foreignId('current_state_id')->constrained('harim_states'); + $table->string('current_state_name'); + $table->foreignId('action_id')->constrained('harim_actions'); + $table->string('action_name'); + $table->unsignedInteger('expert_id'); + $table->foreign('expert_id')->references('id')->on('users'); + $table->string('expert_description'); + $table->json('previous_data'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('harim_histories'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 271c1f02..86225dd5 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -12,12 +12,12 @@ class DatabaseSeeder extends Seeder public function run(): void { $this->call([ - ProvinceSeeder::class; - CitySeeder::class; - EdarateShahriSeeder::class; - InfoItemSeeder::class; - LogListSeeder::class; - PermissionSeeder::class; + ProvinceSeeder::class, + CitySeeder::class, + EdarateShahriSeeder::class, + InfoItemSeeder::class, + LogListSeeder::class, + PermissionSeeder::class, ]); } } diff --git a/database/seeders/HarimActionSeeder.php b/database/seeders/HarimActionSeeder.php new file mode 100644 index 00000000..46ea538a --- /dev/null +++ b/database/seeders/HarimActionSeeder.php @@ -0,0 +1,24 @@ +insert([ + ['id' => 1, 'name' => 'feedback', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 1, 'name' => 'yes', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 2, 'name' => 'no', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 3, 'name' => 'confirm', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 4, 'name' => 'refer', 'created_at' => now(), 'updated_at' => now(),], + ]); + } +} diff --git a/database/seeders/HarimHistorySeeder.php b/database/seeders/HarimHistorySeeder.php new file mode 100644 index 00000000..4a838e20 --- /dev/null +++ b/database/seeders/HarimHistorySeeder.php @@ -0,0 +1,20 @@ +count(5) + ->create(); + } +} diff --git a/database/seeders/HarimSeeder.php b/database/seeders/HarimSeeder.php new file mode 100644 index 00000000..577e542c --- /dev/null +++ b/database/seeders/HarimSeeder.php @@ -0,0 +1,21 @@ +count(5) + ->create(); + + } +} diff --git a/database/seeders/HarimStateSeeder.php b/database/seeders/HarimStateSeeder.php new file mode 100644 index 00000000..96c414a2 --- /dev/null +++ b/database/seeders/HarimStateSeeder.php @@ -0,0 +1,24 @@ +insert([ + ['id' => 1, 'name' => 'در انتظار بررسی اداره شهرستان', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 2, 'name' => 'در انتظار بررسی ایمنی راه توسط دفتر حریم', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 3, 'name' => 'در انتظار بررسی ایمنی راه توسط معاون', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 4, 'name' => 'در انتظار بررسی ایمنی راه توسط مدیر کل', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 5, 'name' => 'رد به دلیل ایمنی راه', 'created_at' => now(), 'updated_at' => now(),], + ]); + } +}