From a74492e488c5ca5a72b2a4980e3abd52c9dc96ad Mon Sep 17 00:00:00 2001 From: amir-ys Date: Sat, 23 Nov 2024 22:14:01 +0330 Subject: [PATCH] feat: add factory for models --- .../Controllers/MedicalCenterController.php | 9 +++ app/Http/Controllers/UserController.php | 5 ++ app/Models/Cycle.php | 2 + app/Models/Gallery.php | 6 ++ app/Models/Input.php | 3 + app/Models/InputValue.php | 3 + app/Models/Item.php | 4 +- app/Models/Label.php | 3 + app/Models/MedicalCenter.php | 3 + app/Models/Message.php | 3 +- app/Models/Option.php | 3 + app/Models/Package.php | 3 + app/Models/TestResult.php | 3 +- app/Models/TestType.php | 3 +- app/Models/Transfer.php | 3 +- app/Models/Uploadable.php | 2 + app/Models/User.php | 3 +- composer.json | 10 +-- database/factories/CycleFactory.php | 31 +++++++ database/factories/CycleLabelFactory.php | 26 ++++++ database/factories/GalleryFactory.php | 24 ++++++ database/factories/InputFactory.php | 29 +++++++ database/factories/InputValueFactory.php | 26 ++++++ database/factories/ItemFactory.php | 33 ++++++++ database/factories/LabelFactory.php | 32 ++++++++ database/factories/MedicalCenterFactory.php | 29 +++++++ database/factories/MessageFactory.php | 28 +++++++ database/factories/OptionFactory.php | 27 +++++++ database/factories/PackageFactory.php | 32 ++++++++ database/factories/TestResultFactory.php | 33 ++++++++ database/factories/TestTypeFactory.php | 33 ++++++++ database/factories/TransferFactory.php | 81 +++++++++++++++++++ database/factories/UploadableFactory.php | 29 +++++++ database/factories/UserFactory.php | 13 ++- .../{seeds => seeders}/DatabaseSeeder.php | 7 +- database/seeders/TableSeeder.php | 32 ++++++++ 36 files changed, 600 insertions(+), 16 deletions(-) create mode 100755 database/factories/CycleFactory.php create mode 100755 database/factories/CycleLabelFactory.php create mode 100755 database/factories/GalleryFactory.php create mode 100755 database/factories/InputFactory.php create mode 100755 database/factories/InputValueFactory.php create mode 100755 database/factories/ItemFactory.php create mode 100755 database/factories/LabelFactory.php create mode 100755 database/factories/MedicalCenterFactory.php create mode 100755 database/factories/MessageFactory.php create mode 100755 database/factories/OptionFactory.php create mode 100755 database/factories/PackageFactory.php create mode 100755 database/factories/TestResultFactory.php create mode 100755 database/factories/TestTypeFactory.php create mode 100755 database/factories/TransferFactory.php create mode 100755 database/factories/UploadableFactory.php rename database/{seeds => seeders}/DatabaseSeeder.php (67%) create mode 100644 database/seeders/TableSeeder.php diff --git a/app/Http/Controllers/MedicalCenterController.php b/app/Http/Controllers/MedicalCenterController.php index c33dc9eb..4ca5b085 100644 --- a/app/Http/Controllers/MedicalCenterController.php +++ b/app/Http/Controllers/MedicalCenterController.php @@ -117,6 +117,15 @@ class MedicalCenterController extends Controller $cycle->delete(); } + foreach ( $user->galleries as $gallery ) { + if (count($gallery->uploadables)) { + foreach ($gallery->uploadables as $item) { + $item->delete(); + } + } + $gallery->delete(); + } + // delete user $user->delete(); } diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index adbf04a3..94a41b46 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -153,6 +153,11 @@ class UserController extends Controller } foreach ( $User->galleries as $gallery ) { + if (count($gallery->uploadables)) { + foreach ($gallery->uploadables as $item) { + $item->delete(); + } + } $gallery->delete(); } diff --git a/app/Models/Cycle.php b/app/Models/Cycle.php index 183513fb..197196ec 100644 --- a/app/Models/Cycle.php +++ b/app/Models/Cycle.php @@ -2,12 +2,14 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class Cycle extends Model { + use HasFactory; public $fillable = [ 'date', 'user_id', 'cycle_number', 'sterilizer_id', 'note', 'verified', 'unique_id' ]; diff --git a/app/Models/Gallery.php b/app/Models/Gallery.php index 3c457715..0ac1eab7 100644 --- a/app/Models/Gallery.php +++ b/app/Models/Gallery.php @@ -2,12 +2,18 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Gallery extends Model { + use HasFactory; protected $fillable = ['user_id', 'path']; public $timestamps = false; + public function uploadables() + { + return $this->hasMany(Uploadable::class); + } } diff --git a/app/Models/Input.php b/app/Models/Input.php index 94301e99..ea16d7ea 100644 --- a/app/Models/Input.php +++ b/app/Models/Input.php @@ -2,12 +2,15 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; class Input extends Model { + use HasFactory; + public $fillable = [ 'name', 'type', 'size', 'test_type_id', 'parent_id', 'require_scanner' ]; diff --git a/app/Models/InputValue.php b/app/Models/InputValue.php index 94555a15..12a81bfd 100644 --- a/app/Models/InputValue.php +++ b/app/Models/InputValue.php @@ -2,11 +2,14 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; class InputValue extends Model { + use HasFactory; + public $fillable = [ 'value', 'test_result_id', 'input_id', 'option_id' ]; diff --git a/app/Models/Item.php b/app/Models/Item.php index 9587b84c..7f592cb6 100644 --- a/app/Models/Item.php +++ b/app/Models/Item.php @@ -4,17 +4,17 @@ namespace App\Models; use App\Constants\StatusTypeEnum; use App\Services\Media\HasMediaTrait; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\Relations\MorphOne; -use Spatie\Image\Exceptions\InvalidManipulation; use Spatie\MediaLibrary\HasMedia; use Spatie\MediaLibrary\MediaCollections\Models\Media; class Item extends Model implements HasMedia { - use HasMediaTrait; + use HasMediaTrait, HasFactory; public $fillable = [ 'name', 'size', 'unique_id', 'specific', 'note', 'user_id', 'udi', 'status', 'repair', diff --git a/app/Models/Label.php b/app/Models/Label.php index 4816af28..1fc832e1 100644 --- a/app/Models/Label.php +++ b/app/Models/Label.php @@ -2,12 +2,15 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class Label extends Model { + use HasFactory; + public $fillable = [ 'sterile_date', 'expire_date', 'sterilizer_id', 'cycle_number', 'lot_number', 'user_id', 'package_id' diff --git a/app/Models/MedicalCenter.php b/app/Models/MedicalCenter.php index 0d5e8a0f..8d98a413 100644 --- a/app/Models/MedicalCenter.php +++ b/app/Models/MedicalCenter.php @@ -2,12 +2,15 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; class MedicalCenter extends Model { + use HasFactory; + public $fillable = ['name', 'city_id', 'address', 'phone_number']; public function users(): HasMany diff --git a/app/Models/Message.php b/app/Models/Message.php index cdb23b82..0e434290 100644 --- a/app/Models/Message.php +++ b/app/Models/Message.php @@ -2,13 +2,14 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; class Message extends Model { - use SoftDeletes; + use SoftDeletes,HasFactory; public $fillable = ['title', 'text', 'status', 'recipient_user_id', 'sender_user_id']; diff --git a/app/Models/Option.php b/app/Models/Option.php index 4b9f5500..79722cd8 100644 --- a/app/Models/Option.php +++ b/app/Models/Option.php @@ -2,12 +2,15 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasOne; class Option extends Model { + use HasFactory; + public $fillable = ['title', 'input_id']; public function input(): BelongsTo diff --git a/app/Models/Package.php b/app/Models/Package.php index b7b0a54e..ff2a34d0 100644 --- a/app/Models/Package.php +++ b/app/Models/Package.php @@ -3,6 +3,7 @@ namespace App\Models; use App\Constants\StatusTypeEnum; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; @@ -11,6 +12,8 @@ use Illuminate\Database\Eloquent\Relations\MorphOne; class Package extends Model { + use HasFactory; + public $fillable = ['name', 'user_id', 'note', 'status', 'creator_id']; public function user(): BelongsTo diff --git a/app/Models/TestResult.php b/app/Models/TestResult.php index ba6b2933..b3c084a1 100644 --- a/app/Models/TestResult.php +++ b/app/Models/TestResult.php @@ -3,6 +3,7 @@ namespace App\Models; use App\Services\Media\HasMediaTrait; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; @@ -12,7 +13,7 @@ use Spatie\MediaLibrary\MediaCollections\Models\Media; class TestResult extends Model implements HasMedia { - use HasMediaTrait; + use HasMediaTrait,HasFactory; public $fillable = ['result', 'verified', 'test_type_id', 'user_id', 'device_id', 'cycle_number', 'date']; diff --git a/app/Models/TestType.php b/app/Models/TestType.php index f9566d7c..ab535191 100644 --- a/app/Models/TestType.php +++ b/app/Models/TestType.php @@ -2,6 +2,7 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; @@ -9,7 +10,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; class TestType extends Model { - use SoftDeletes; + use SoftDeletes,HasFactory; public $fillable = ['name', 'unique_code', 'user_id', 'bar_code', 'device_label']; diff --git a/app/Models/Transfer.php b/app/Models/Transfer.php index 1fa90a96..cb00ee80 100644 --- a/app/Models/Transfer.php +++ b/app/Models/Transfer.php @@ -2,6 +2,7 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\MorphTo; @@ -9,7 +10,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; class Transfer extends Model { - use SoftDeletes; + use SoftDeletes,HasFactory; public $fillable = ['user_id', 'to_date', 'from_date', 'status', 'user_transfer_id']; diff --git a/app/Models/Uploadable.php b/app/Models/Uploadable.php index 8b12854c..84d6e053 100644 --- a/app/Models/Uploadable.php +++ b/app/Models/Uploadable.php @@ -2,11 +2,13 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; class Uploadable extends Model { + use HasFactory; protected $fillable = [ 'uploadable_id', 'uploadable_type', 'gallery_id', 'image_role', 'batch_id' diff --git a/app/Models/User.php b/app/Models/User.php index 206d9236..090d8696 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -2,6 +2,7 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Foundation\Auth\User as Authenticatable; @@ -11,7 +12,7 @@ use Spatie\Permission\Traits\HasRoles; class User extends Authenticatable { - use Notifiable, HasApiTokens, HasRoles; + use Notifiable, HasApiTokens, HasRoles, HasFactory; protected $fillable = [ 'name', 'email', 'cell_number', 'password', 'status', 'medical_center_id', 'address', diff --git a/composer.json b/composer.json index fe53f6bc..53cecb30 100644 --- a/composer.json +++ b/composer.json @@ -47,12 +47,10 @@ "autoload": { "psr-4": { "App\\": "app/", - "Packages\\": "packages/" - }, - "classmap": [ - "database/seeds", - "database/factories" - ] + "Packages\\": "packages/", + "Database\\Factories\\": "database/factories/", + "Database\\Seeders\\": "database/seeders/" + } }, "autoload-dev": { "psr-4": { diff --git a/database/factories/CycleFactory.php b/database/factories/CycleFactory.php new file mode 100755 index 00000000..9519ca13 --- /dev/null +++ b/database/factories/CycleFactory.php @@ -0,0 +1,31 @@ + + */ +class CycleFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'unique_id' => $this->faker->uuid, + 'date' => $this->faker->date, + 'sterilizer_id' => $this->faker->uuid, + 'cycle_number' => $this->faker->numerify('Cycle-####'), + 'note' => $this->faker->word, + 'verified' => $this->faker->randomElement(['Verified', 'NotVerified']), + 'user_id' => \App\Models\User::factory(), + ]; + + } +} diff --git a/database/factories/CycleLabelFactory.php b/database/factories/CycleLabelFactory.php new file mode 100755 index 00000000..a5384d47 --- /dev/null +++ b/database/factories/CycleLabelFactory.php @@ -0,0 +1,26 @@ + + */ +class CycleLabelFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'label_id' => \App\Models\Label::factory(), + 'cycle_id' => \App\Models\Cycle::factory(), + 'count' => $this->faker->numberBetween(1, 10), + ]; + } +} diff --git a/database/factories/GalleryFactory.php b/database/factories/GalleryFactory.php new file mode 100755 index 00000000..315442ba --- /dev/null +++ b/database/factories/GalleryFactory.php @@ -0,0 +1,24 @@ + + */ +class GalleryFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'user_id' => \App\Models\User::factory(), + 'path' => $this->faker->imageUrl(), + ]; + } +} diff --git a/database/factories/InputFactory.php b/database/factories/InputFactory.php new file mode 100755 index 00000000..62611ecd --- /dev/null +++ b/database/factories/InputFactory.php @@ -0,0 +1,29 @@ + + */ +class InputFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => $this->faker->word, + 'type' => $this->faker->randomElement(['Text', 'Form', 'Checkbox', 'Select']), + 'test_type_id' => \App\Models\TestType::factory(), + 'parent_id' => null, + 'size' => $this->faker->word, + 'value' => $this->faker->word, + 'require_scanner' => $this->faker->boolean, + ]; + } +} diff --git a/database/factories/InputValueFactory.php b/database/factories/InputValueFactory.php new file mode 100755 index 00000000..4ee9b852 --- /dev/null +++ b/database/factories/InputValueFactory.php @@ -0,0 +1,26 @@ + + */ +class InputValueFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'value' => $this->faker->word, + 'option_id' => \App\Models\Option::factory(), + 'input_id' => \App\Models\Input::factory(), + 'test_result_id' => \App\Models\TestResult::factory(), + ]; + } +} diff --git a/database/factories/ItemFactory.php b/database/factories/ItemFactory.php new file mode 100755 index 00000000..ab8ed9bf --- /dev/null +++ b/database/factories/ItemFactory.php @@ -0,0 +1,33 @@ + + */ +class ItemFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'package_id' => \App\Models\Package::factory(), + 'name' => $this->faker->word, + 'size' => $this->faker->word, + 'unique_id' => $this->faker->uuid, + 'specific' => $this->faker->word, + 'note' => $this->faker->word, + 'user_id' => \App\Models\User::factory(), + 'udi' => $this->faker->uuid, + 'repair' => $this->faker->boolean, + 'creator_id' => \App\Models\User::factory(), + 'status' => $this->faker->randomElement(['approved', 'rejected', 'suspended']), + ]; + } +} diff --git a/database/factories/LabelFactory.php b/database/factories/LabelFactory.php new file mode 100755 index 00000000..ac8461f6 --- /dev/null +++ b/database/factories/LabelFactory.php @@ -0,0 +1,32 @@ + + */ +class LabelFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => $this->faker->word, + 'sterile_date' => $this->faker->date, + 'expire_date' => $this->faker->date, + 'sterilizer_id' => $this->faker->uuid, + 'cycle_number' => $this->faker->numerify('Cycle-####'), + 'lot_number' => $this->faker->word, + 'department' => $this->faker->word, + 'note' => $this->faker->word, + 'user_id' => \App\Models\User::factory(), + 'package_id' => \App\Models\Package::factory(), + ]; + } +} diff --git a/database/factories/MedicalCenterFactory.php b/database/factories/MedicalCenterFactory.php new file mode 100755 index 00000000..bf1b2572 --- /dev/null +++ b/database/factories/MedicalCenterFactory.php @@ -0,0 +1,29 @@ + + */ +class MedicalCenterFactory extends Factory +{ + protected $model = MedicalCenter::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => $this->faker->company, + 'address' => $this->faker->address, + 'phone_number' => $this->faker->phoneNumber, + 'city_id' => 1, + ]; + } +} diff --git a/database/factories/MessageFactory.php b/database/factories/MessageFactory.php new file mode 100755 index 00000000..7e92880f --- /dev/null +++ b/database/factories/MessageFactory.php @@ -0,0 +1,28 @@ + + */ +class MessageFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'title' => $this->faker->word, + 'text' => $this->faker->word, + 'sender_user_id' => User::factory(), + 'recipient_user_id' => User::factory(), + 'status' => $this->faker->randomElement(['Read', 'UnRead']), + ]; + } +} diff --git a/database/factories/OptionFactory.php b/database/factories/OptionFactory.php new file mode 100755 index 00000000..aaeaeb5e --- /dev/null +++ b/database/factories/OptionFactory.php @@ -0,0 +1,27 @@ + + */ +class OptionFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'title' => $this->faker->word, + 'input_id' => Input::factory(), + 'created_at' => now(), + 'updated_at' => now(), + ]; + } +} diff --git a/database/factories/PackageFactory.php b/database/factories/PackageFactory.php new file mode 100755 index 00000000..6e0a488d --- /dev/null +++ b/database/factories/PackageFactory.php @@ -0,0 +1,32 @@ + + */ +class PackageFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => $this->faker->word, + 'note' => $this->faker->optional()->word, + 'user_id' => User::factory(), // ایجاد کاربر به طور خودکار + 'bar_code' => $this->faker->optional()->word, + 'qr_code' => $this->faker->optional()->word, + 'creator_id' => User::factory(), // ایجاد کاربر دیگر به عنوان creator + 'status' => $this->faker->randomElement(['approved', 'rejected', 'suspended']), + 'created_at' => now(), + 'updated_at' => now(), + ]; + } +} diff --git a/database/factories/TestResultFactory.php b/database/factories/TestResultFactory.php new file mode 100755 index 00000000..f2150b7b --- /dev/null +++ b/database/factories/TestResultFactory.php @@ -0,0 +1,33 @@ + + */ +class TestResultFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'info' => $this->faker->name, + 'cycle_number' => $this->faker->numberBetween(1000, 9999), + 'date' => $this->faker->date(), + 'result' => $this->faker->randomElement(['Accept', 'Reject']), + 'description' => $this->faker->word, + 'verified' => $this->faker->randomElement(['Verified', 'NotVerified', 'None']), + 'device_id' => $this->faker->uuid(), + 'user_id' => User::factory(), + 'test_type_id' => TestType::factory(), + ]; + } +} diff --git a/database/factories/TestTypeFactory.php b/database/factories/TestTypeFactory.php new file mode 100755 index 00000000..0da4dce6 --- /dev/null +++ b/database/factories/TestTypeFactory.php @@ -0,0 +1,33 @@ + + */ +class TestTypeFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => Str::random(20), + 'unique_code' => Str::random(20), + 'bar_code' => $this->faker->word, + 'user_id' => User::factory(), + 'device_label' => $this->faker->randomElement([ + 'AutoclaveID', 'WasherID', 'SterilizerID', 'WasherMachineID', + 'SealMachineID', 'PatientID', 'Set/PackID', 'MDID', 'ORID', + 'InstrumentID', 'ID', 'PersonalID' + ]), + ]; + } +} diff --git a/database/factories/TransferFactory.php b/database/factories/TransferFactory.php new file mode 100755 index 00000000..35f1c666 --- /dev/null +++ b/database/factories/TransferFactory.php @@ -0,0 +1,81 @@ + + */ + public function definition(): array + { + // Get a random model for polymorphic relationship + $transferableModels = [ + \App\Models\Package::class, + \App\Models\Item::class, + ]; + + $transferableType = $this->faker->randomElement($transferableModels); + $transferable = $transferableType::factory()->create(); + + // Generate from_date and ensure to_date is after from_date + $fromDate = $this->faker->dateTimeBetween('-1 year', 'now'); + $toDate = $this->faker->dateTimeBetween($fromDate, '+1 year'); + + return [ + 'transferable_type' => $transferableType, + 'transferable_id' => $transferable->id, + 'user_id' => User::factory(), + 'from_date' => $fromDate, + 'to_date' => $toDate, + 'status' => $this->faker->randomElement(['approved', 'rejected', 'suspended']), + 'user_transfer_id' => User::factory(), + 'deleted_at' => null, + ]; + } + + /** + * Indicate that the transfer is approved. + */ + public function approved(): static + { + return $this->state(fn (array $attributes) => [ + 'status' => 'approved', + ]); + } + + /** + * Indicate that the transfer is rejected. + */ + public function rejected(): static + { + return $this->state(fn (array $attributes) => [ + 'status' => 'rejected', + ]); + } + + /** + * Indicate that the transfer is suspended. + */ + public function suspended(): static + { + return $this->state(fn (array $attributes) => [ + 'status' => 'suspended', + ]); + } + + /** + * Indicate that the transfer is soft deleted. + */ + public function deleted(): static + { + return $this->state(fn (array $attributes) => [ + 'deleted_at' => now(), + ]); + } +} diff --git a/database/factories/UploadableFactory.php b/database/factories/UploadableFactory.php new file mode 100755 index 00000000..fa9a4d8e --- /dev/null +++ b/database/factories/UploadableFactory.php @@ -0,0 +1,29 @@ + + */ +class UploadableFactory extends Factory +{ + protected $model = Uploadable::class; + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'uploadable_id' => $this->faker->numberBetween(1, 100), // شناسه‌ی تصادفی برای uploadable + 'uploadable_type' => $this->faker->word, // نوع تصادفی uploadable + 'gallery_id' => Gallery::factory(), // شناسه‌ی تصادفی برای gallery (در صورتی که گالری‌ها وجود داشته باشند) + 'image_role' => $this->faker->word, // نقش تصادفی برای تصویر (مثل 'thumbnail' یا 'featured') + ]; + } +} diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 155f273a..30cbae00 100755 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -2,6 +2,7 @@ namespace Database\Factories; +use App\Models\MedicalCenter; use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Support\Str; @@ -17,9 +18,17 @@ class UserFactory extends Factory return [ 'name' => $this->faker->name, 'email' => $this->faker->unique()->safeEmail, - 'email_verified_at' => now(), - 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password + 'country_code' => '0098', + 'cell_number' => $this->faker->phoneNumber, + 'gender' => $this->faker->randomElement(['Male', 'FeMale']), + 'verified' => $this->faker->randomElement(['Verified', 'NotVerified']), + 'status' => $this->faker->randomElement(['Active', 'Suspended']), + 'medical_center_id' => MedicalCenter::factory(), // ایجاد مرکز پزشکی به طور خودکار + 'password' => bcrypt('password'), // رمز عبور پیش‌فرض + 'address' => $this->faker->optional()->address, 'remember_token' => Str::random(10), + 'created_at' => now(), + 'updated_at' => now(), ]; } } diff --git a/database/seeds/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php similarity index 67% rename from database/seeds/DatabaseSeeder.php rename to database/seeders/DatabaseSeeder.php index 58e701a8..de083463 100644 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -1,5 +1,8 @@ call(UserTableSeeder::class); + $this->call([ + TableSeeder::class + ]); } } diff --git a/database/seeders/TableSeeder.php b/database/seeders/TableSeeder.php new file mode 100644 index 00000000..18980743 --- /dev/null +++ b/database/seeders/TableSeeder.php @@ -0,0 +1,32 @@ +create(); + \App\Models\User::factory(10)->create(); + \App\Models\TestType::factory(10)->create(); + \App\Models\TestResult::factory(10)->create(); + \App\Models\Input::factory(10)->create(); + \App\Models\Option::factory(10)->create(); + \App\Models\InputValue::factory(10)->create(); + \App\Models\Gallery::factory(10)->create(); + \App\Models\Uploadable::factory(10)->create(); + \App\Models\Package::factory(10)->create(); + \App\Models\Item::factory(10)->create(); + \App\Models\Label::factory(10)->create(); + \App\Models\Cycle::factory(10)->create(); + \App\Models\Message::factory(10)->create(); + \App\Models\Transfer::factory(10)->create(); + } +}