Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

ContactFactory.php 2.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace Database\Factories\Common;
  3. use App\Models\Common\Contact;
  4. use Database\Factories\Concerns\HasParentRelationship;
  5. use Illuminate\Database\Eloquent\Factories\Factory;
  6. /**
  7. * @extends Factory<Contact>
  8. */
  9. class ContactFactory extends Factory
  10. {
  11. use HasParentRelationship;
  12. /**
  13. * The name of the factory's corresponding model.
  14. */
  15. protected $model = Contact::class;
  16. /**
  17. * Define the model's default state.
  18. *
  19. * @return array<string, mixed>
  20. */
  21. public function definition(): array
  22. {
  23. return [
  24. 'company_id' => 1,
  25. 'first_name' => $this->faker->firstName,
  26. 'last_name' => $this->faker->lastName,
  27. 'email' => $this->faker->unique()->safeEmail,
  28. 'phones' => $this->generatePhones(),
  29. 'is_primary' => $this->faker->boolean(50),
  30. 'created_by' => 1,
  31. 'updated_by' => 1,
  32. ];
  33. }
  34. protected function generatePhones(): array
  35. {
  36. $phones = [];
  37. if ($this->faker->boolean(80)) {
  38. $phones[] = [
  39. 'data' => ['number' => $this->faker->phoneNumber],
  40. 'type' => 'primary',
  41. ];
  42. }
  43. if ($this->faker->boolean(50)) {
  44. $phones[] = [
  45. 'data' => ['number' => $this->faker->phoneNumber],
  46. 'type' => 'mobile',
  47. ];
  48. }
  49. if ($this->faker->boolean(30)) {
  50. $phones[] = [
  51. 'data' => ['number' => $this->faker->phoneNumber],
  52. 'type' => 'toll_free',
  53. ];
  54. }
  55. if ($this->faker->boolean(10)) {
  56. $phones[] = [
  57. 'data' => ['number' => $this->faker->phoneNumber],
  58. 'type' => 'fax',
  59. ];
  60. }
  61. return $phones;
  62. }
  63. public function primary(): self
  64. {
  65. return $this->state([
  66. 'is_primary' => true,
  67. ]);
  68. }
  69. public function secondary(): self
  70. {
  71. return $this->state([
  72. 'is_primary' => false,
  73. ]);
  74. }
  75. }