File manager - Edit - /var/www/html/spdc/api/database/factories/ScaleFunctionFactory.php
Back
<?php namespace Database\Factories; use App\Models\User; use App\Models\Department; use App\Models\ExternalAgent; use App\Models\ScaleFunction; use App\Enums\ScaleFunctionType; use Illuminate\Support\Facades\DB; use Illuminate\Database\Eloquent\Factories\Factory; /** * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\ScaleFunction> */ class ScaleFunctionFactory extends Factory { /** * Define the model's default state. * * @return array<string, mixed> */ public function definition() { return [ 'name' => fake()->unique->name, 'enable' => true, 'type' => ScaleFunctionType::INTERNO->value ]; } /** * With request with external_agents. * * @return \Illuminate\Database\Eloquent\Factories\Factory */ public function requestWithExternalAgents() { return $this->state(function (array $attributes) { return [ 'external_agents' => ExternalAgent::factory(3)->create()->pluck('id')->toArray() ]; }); } /** * With external agents. * * @return \Illuminate\Database\Eloquent\Factories\Factory */ public function withExternalAgents() { return $this->state(function (array $attributes) { return []; })->afterCreating(function (ScaleFunction $scaleFunction) { $scaleFunction->externalAgents()->createMany(ExternalAgent::factory(3)->make()->toArray()); }); } /** * With request with external_agents. * * @return \Illuminate\Database\Eloquent\Factories\Factory */ public function requestWithInternalAgents() { return $this->state(function (array $attributes) { $accessToken = authLogin()['access_token']; $url = env('AUTH_SERVICE_URL') . '/api/user?like=app_id,' . env('CLIENT_APP_KEY'); $usersCount = 0; do { // getting users $usersResponse = authServiceClient('get', $url, null, [ 'Authorization' => 'Bearer ' . $accessToken ]); $usersCount = count($usersResponse['data']['data']); /** * if users count is smaller than 3, create three new users */ if ($usersCount < 3) { for ($i = 0; $i <3; $i++) { $userRequest = [ 'name' => fake()->unique->name, 'document' => generateValidCPF(), 'email' => fake()->unique->email, 'password' => '12345678', 'user_type_id' => 1, ]; // create new user $newUserResponse = authServiceClient('post', $url, $userRequest, [ 'Authorization' => 'Bearer ' . $accessToken ]); $i++; } } } while($usersCount < 3); $usersIds = getItemsByKey($usersResponse->json()['data']['data'], 'id'); return [ 'internal_agents' => array_slice($usersIds, 0, 3) ]; }); } /** * With internal agents. * * @return \Illuminate\Database\Eloquent\Factories\Factory */ public function withInternalAgents($usersAmount = 5, $scaleDepartmentId = null) { return $this->state(function (array $attributes) { return []; })->afterCreating(function (ScaleFunction $scaleFunction) use ($usersAmount, $scaleDepartmentId) { $accessToken = authLogin()['access_token']; $url = env('AUTH_SERVICE_URL') . '/api/user?like=app_id,' . env('CLIENT_APP_KEY'); $usersIds = []; for ($i = 0; $i < $usersAmount; $i++) { $userRequest = [ 'name' => fake()->unique->name, 'document' => generateValidCPF(), 'email' => fake()->unique->email, 'password' => '12345678', 'user_type_id' => 1, ]; // create new user $newUserResponse = authServiceClient('post', $url, $userRequest, [ 'Authorization' => 'Bearer ' . $accessToken ]); if ($newUserResponse->successful()) { $usersIds[] = $newUserResponse->json()['data']['user']['id']; } } foreach ($usersIds as $internalAgent) { DB::table('internal_agent_scale_function')->insertOrIgnore([ 'user_id' => $internalAgent, 'scale_function_id' => $scaleFunction->id ]); if (isset($scaleDepartmentId)) { /** * attaching to deparments */ // department from scale function DB::table('department_user')->insert([ 'user_id' => $internalAgent, 'department_id' => $scaleDepartmentId ]); // another department DB::table('department_user')->insert([ 'user_id' => $internalAgent, 'department_id' => Department::factory()->create()?->id ]); } } }); } /** * With internal agents. * * @return \Illuminate\Database\Eloquent\Factories\Factory */ public function withFakeInternalAgents($usersAmount = 5) { return $this->state(function (array $attributes) { return []; })->afterCreating(function (ScaleFunction $scaleFunction) use ($usersAmount) { $usersIds = User::factory($usersAmount)->create()->pluck('id')->toArray(); foreach ($usersIds as $internalAgent) { DB::table('internal_agent_scale_function')->insertOrIgnore([ 'user_id' => $internalAgent, 'scale_function_id' => $scaleFunction->id ]); } }); } /** * With internal agents. * * @return \Illuminate\Database\Eloquent\Factories\Factory */ public function withInternalAgentsAndCurrentUser($usersAmount = 4, $scaleDepartmentId = null) { return $this->state(function (array $attributes) { return []; })->afterCreating(function (ScaleFunction $scaleFunction) use ($usersAmount, $scaleDepartmentId) { $accessToken = authLogin()['access_token']; $url = env('AUTH_SERVICE_URL') . '/api/user?like=app_id,' . env('CLIENT_APP_KEY'); $usersIds = []; $currentUserUrl = env('AUTH_SERVICE_URL') . '/api/session'; $currentUserResponse = authServiceClient('get', $currentUserUrl, null, [ 'Authorization' => 'Bearer ' . $accessToken ]); $usersIds[] = $currentUserResponse['data']['id']; for ($i = 0; $i < $usersAmount; $i++) { $userRequest = [ 'name' => fake()->unique->name, 'document' => generateValidCPF(), 'email' => fake()->unique->email, 'password' => '12345678', 'user_type_id' => 1, ]; // create new user $newUserResponse = authServiceClient('post', $url, $userRequest, [ 'Authorization' => 'Bearer ' . $accessToken ]); if ($newUserResponse->successful()) { $usersIds[] = $newUserResponse->json()['data']['user']['id']; } } foreach ($usersIds as $internalAgent) { DB::table('internal_agent_scale_function')->insertOrIgnore([ 'user_id' => $internalAgent, 'scale_function_id' => $scaleFunction->id ]); if (isset($scaleDepartmentId)) { /** * attaching to deparments */ // department from scale function DB::table('department_user')->insert([ 'user_id' => $internalAgent, 'department_id' => $scaleDepartmentId ]); // another department DB::table('department_user')->insert([ 'user_id' => $internalAgent, 'department_id' => Department::factory()->create()?->id ]); } } }); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings