Advertisement
Guest User

Untitled

a guest
May 31st, 2017
530
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.19 KB | None | 0 0
  1. <?php
  2.  
  3. use Illuminate\Database\Seeder;
  4.  
  5. class UsersTableSeeder extends Seeder
  6. {
  7. private $photoPath = 'public/profiles';
  8. private $numberOfActivatedUsers = 20;
  9. private $numberOfActivatedAdmins = 5;
  10. private $numberOfBlockedUsers = 5;
  11. private $numberOfNonActivatedUsers = 5;
  12.  
  13. /**
  14. * Run the database seeds.
  15. *
  16. * @return void
  17. */
  18. public function run()
  19. {
  20. $this->command->table(['Users table seeder notice'], [
  21. ['Profile photos will be stored on path '.storage_path('app/'.$this->photoPath)],
  22. ['A progress bar is displayed because photos will be downloaded from lorempixel'],
  23. ['Edit this file to change the storage path or the number of users']
  24. ]);
  25.  
  26.  
  27. if ($this->command->confirm('Do you wish to delete photos from '.storage_path('app/'.$this->photoPath).'?', true)) {
  28. Storage::deleteDirectory($this->photoPath);
  29. }
  30. Storage::makeDirectory($this->photoPath);
  31.  
  32. // Disclaimer: I'm using faker here because Model classes are developed by students
  33. $faker = Faker\Factory::create('pt_PT');
  34.  
  35. $departments = DB::table('departments')->pluck('id')->toArray();
  36.  
  37. $this->command->info('Creating '.$this->numberOfActivatedUsers.' active users...');
  38. $bar = $this->command->getOutput()->createProgressBar($this->numberOfActivatedUsers);
  39. for ($i = 0; $i < $this->numberOfActivatedUsers; ++$i) {
  40. DB::table('users')->insert($this->fakeUser($faker, $faker->randomElement($departments)));
  41. $bar->advance();
  42. }
  43. $bar->finish();
  44. $this->command->info('');
  45.  
  46. $this->command->info('Creating '.$this->numberOfActivatedAdmins.' active admins...');
  47. $bar = $this->command->getOutput()->createProgressBar($this->numberOfActivatedAdmins);
  48. for ($i = 0; $i < $this->numberOfActivatedAdmins; ++$i) {
  49. $user = $this->fakeUser($faker, $faker->randomElement($departments));
  50. $user['admin'] = true;
  51. DB::table('users')->insert($user);
  52. $bar->advance();
  53. }
  54. $bar->finish();
  55. $this->command->info('');
  56.  
  57. $this->command->info('Creating '.$this->numberOfBlockedUsers.' blocked users...');
  58. $bar = $this->command->getOutput()->createProgressBar($this->numberOfBlockedUsers);
  59. for ($i = 0; $i < $this->numberOfBlockedUsers; ++$i) {
  60. $user = $this->fakeUser($faker, $faker->randomElement($departments));
  61. $user['blocked'] = true;
  62. DB::table('users')->insert($user);
  63. $bar->advance();
  64. }
  65. $bar->finish();
  66. $this->command->info('');
  67.  
  68. $this->command->info('Creating '.$this->numberOfNonActivatedUsers.' non activated users...');
  69. $bar = $this->command->getOutput()->createProgressBar($this->numberOfNonActivatedUsers);
  70. for ($i = 0; $i < $this->numberOfNonActivatedUsers; ++$i) {
  71. $user = $this->fakeUser($faker, $faker->randomElement($departments));
  72. $user['activated'] = false;
  73. DB::table('users')->insert($user);
  74. $bar->advance();
  75. }
  76. $bar->finish();
  77. $this->command->info('');
  78.  
  79. // Creates the requested users from Rules
  80. $user = $this->fakeUser($faker, $faker->randomElement($departments));
  81. $user['name'] = 'User';
  82. $user['email'] = 'user@mail.pt';
  83. $user['password'] = bcrypt('user123');
  84. DB::table('users')->insert($user);
  85.  
  86. $user = $this->fakeUser($faker, $faker->randomElement($departments));
  87. $user['name'] = 'Administrator';
  88. $user['email'] = 'admin@mail.pt';
  89. $user['password'] = bcrypt('admin123');
  90. $user['admin'] = true;
  91. DB::table('users')->insert($user);
  92.  
  93. $user = $this->fakeUser($faker, $faker->randomElement($departments));
  94. $user['name'] = 'User blocked';
  95. $user['email'] = 'userblock@mail.pt';
  96. $user['password'] = bcrypt('block123');
  97. $user['blocked'] = true;
  98. DB::table('users')->insert($user);
  99. }
  100.  
  101. private function fakeUser(Faker\Generator $faker, $departmentId)
  102. {
  103. static $password;
  104. $createdAt = Carbon\Carbon::now()->subDays(30);
  105. $updatedAt = $faker->dateTimeBetween($createdAt);
  106. return [
  107. 'name' => $faker->name,
  108. 'email' => $faker->unique()->safeEmail,
  109. 'password' => $password ?: $password = bcrypt('secret'),
  110. 'remember_token' => str_random(10),
  111. 'phone' => $faker->randomElement([null, $faker->phoneNumber]),
  112. 'presentation' => $faker->randomElement([null, $faker->realText]),
  113. 'profile_url' => $faker->randomElement([null, $faker->url]),
  114. 'profile_photo' => $faker->randomElement([null, $faker->image(storage_path('app/'.$this->photoPath), 180, 180, 'people', false)]),
  115. 'department_id' => $departmentId,
  116. 'activated' => true,
  117. 'created_at' => $createdAt,
  118. 'updated_at' => $updatedAt,
  119. 'print_evals' => $faker->numberBetween(1, 3),
  120. 'print_counts' => $faker->numberBetween(1, 500)
  121. ];
  122. }
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement