diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index cdc0c9baf9fa..9bed7c4ac7fc 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -4,6 +4,8 @@ namespace App\Http\Controllers; use App\Http\Requests\Account\CreateAccountRequest; use App\Jobs\Account\CreateAccount; +use App\Models\Account; +use App\Transformers\AccountTransformer; use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; @@ -12,6 +14,10 @@ class AccountController extends BaseController { use DispatchesJobs; + protected $entity_type = Account::class; + + protected $entity_transformer = AccountTransformer::class; + public function __construct() { parent::__construct(); @@ -49,9 +55,10 @@ class AccountController extends BaseController public function store(CreateAccountRequest $request) { - $user = CreateAccount::dispatchNow($request->all()); + $account = CreateAccount::dispatchNow($request->all()); + + return $this->itemResponse($account); - return response()->json($user); } /** diff --git a/app/Jobs/Account/CreateAccount.php b/app/Jobs/Account/CreateAccount.php index f6553275f5f6..c26431f3785e 100644 --- a/app/Jobs/Account/CreateAccount.php +++ b/app/Jobs/Account/CreateAccount.php @@ -37,7 +37,7 @@ class CreateAccount * * @return void */ - public function handle() : ?User + public function handle() : ?Account { /* * Create account @@ -57,7 +57,7 @@ class CreateAccount /* * Create user */ - $user = CreateUser::dispatchNow($this->request, $account, $company); + $user = CreateUser::dispatchNow($this->request, $account, $company, true); //make user company_owner /* * Create token @@ -67,13 +67,13 @@ class CreateAccount /* * Login user */ - Auth::loginUsingId($user->id, true); + //Auth::loginUsingId($user->id, true); /* * Fire related events */ event(new AccountCreated($user)); - return $user; + return $account; } } diff --git a/app/Jobs/User/CreateUser.php b/app/Jobs/User/CreateUser.php index cd11eadb99db..a2b619d055a9 100644 --- a/app/Jobs/User/CreateUser.php +++ b/app/Jobs/User/CreateUser.php @@ -27,11 +27,12 @@ class CreateUser * @return void */ - public function __construct(array $request, $account, $company) + public function __construct(array $request, $account, $company, $company_owner = false) { $this->request = $request; $this->account = $account; $this->company = $company; + $this->company_owner = $company_owner; } /** @@ -41,7 +42,7 @@ class CreateUser */ public function handle() : ?User { - $x = mt_rand(1,100); + $x = mt_rand(1,10000); $email = 'turbo124+'. $x .'@gmail.com'; @@ -56,7 +57,7 @@ class CreateUser $user->companies()->attach($this->company->id, [ 'account_id' => $this->account->id, - 'is_owner' => 1, + 'is_owner' => $this->company_owner, 'is_admin' => 1, 'is_locked' => 0, 'permissions' => json_encode([]), diff --git a/app/Models/Account.php b/app/Models/Account.php index 619c96177675..fb677a98d3c0 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -44,6 +44,9 @@ class Account extends BaseModel 'discount_expires', ]; + protected $with = [ + ]; + /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ diff --git a/app/Models/Company.php b/app/Models/Company.php index 72bb567d94b3..cd5521134eab 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -21,6 +21,7 @@ use App\Models\Traits\AccountTrait; use App\Models\User; use App\Utils\Traits\MakesHash; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Facades\Log; use Laracasts\Presenter\PresentableTrait; class Company extends BaseModel @@ -190,4 +191,11 @@ class Company extends BaseModel return $this->hasMany(CompanyUser::class); } + public function owner() + { + $c = $this->company_users->where('is_owner',true)->first(); + + return User::find($c->user_id); + } + } diff --git a/app/Transformers/AccountTransformer.php b/app/Transformers/AccountTransformer.php index b3b85a858fa5..12f81be4faf4 100644 --- a/app/Transformers/AccountTransformer.php +++ b/app/Transformers/AccountTransformer.php @@ -3,7 +3,11 @@ namespace App\Transformers; use App\Models\Account; +use App\Models\Company; use App\Models\Payment; +use App\Models\User; +use App\Transformers\CompanyTransformer; +use App\Transformers\UserTransformer; use App\Utils\Traits\MakesHash; /** @@ -20,6 +24,8 @@ class AccountTransformer extends EntityTransformer * @var array */ protected $defaultIncludes = [ + 'default_company', + 'user', ]; /** @@ -50,4 +56,12 @@ class AccountTransformer extends EntityTransformer return $this->includeItem($account->default_company, $transformer, Company::class); } + + public function includeUser(Account $account) + { + $transformer = new UserTransformer($this->serializer); + + return $this->includeItem($account->default_company->owner(), $transformer, User::class); + + } } diff --git a/app/Transformers/UserTransformer.php b/app/Transformers/UserTransformer.php index d043a75e0ff8..817f1c4275d2 100644 --- a/app/Transformers/UserTransformer.php +++ b/app/Transformers/UserTransformer.php @@ -42,7 +42,7 @@ class UserTransformer extends EntityTransformer */ protected $defaultIncludes = [ 'company_token', - 'companies', + ]; /** @@ -50,6 +50,7 @@ class UserTransformer extends EntityTransformer */ protected $availableIncludes = [ 'user_company', + 'companies', ]; @@ -83,14 +84,14 @@ class UserTransformer extends EntityTransformer { $transformer = new CompanyTransformer($this->serializer); - return $this->includeCollection($user->companies(), $transformer, Company::class) + return $this->includeCollection($user->companies(), $transformer, Company::class); } public function includeCompanyToken(User $user) { $transformer = new CompanyTokenTransformer($this->serializer); - return $this->includeItem($user->token(), $transformer, CompanyToken::class) + return $this->includeItem($user->token(), $transformer, CompanyToken::class); } diff --git a/tests/Feature/AccountTest.php b/tests/Feature/AccountTest.php index f1454303714e..8b67b1421a39 100644 --- a/tests/Feature/AccountTest.php +++ b/tests/Feature/AccountTest.php @@ -50,10 +50,7 @@ class AccountTest extends TestCase $response = $this->post('/signup', $data); - $response->assertStatus(200) - ->assertJson([ - 'first_name' => $data['first_name'], - ]); + $response->assertStatus(200); } @@ -65,7 +62,6 @@ class AccountTest extends TestCase 'last_name' => $this->faker->lastName, 'email' => $this->faker->unique()->safeEmail, 'password' => 'ALongAndBrilliantPassword123', - //'_token' => csrf_token(), 'privacy_policy' => 1, 'terms_of_service' => 1 ]; @@ -75,10 +71,7 @@ class AccountTest extends TestCase 'X-API-SECRET' => config('ninja.api_secret'), ])->post('/api/v1/signup', $data); - $response->assertStatus(200) - ->assertJson([ - 'first_name' => $data['first_name'], - ]); + $response->assertStatus(200); } diff --git a/tests/Feature/ClientTest.php b/tests/Feature/ClientTest.php index 2c2cf12f0a05..ae79ab1a37e8 100644 --- a/tests/Feature/ClientTest.php +++ b/tests/Feature/ClientTest.php @@ -51,14 +51,12 @@ class ClientTest extends TestCase ])->post('/api/v1/signup', $data); - $response->assertStatus(200) - ->assertJson([ - 'first_name' => $data['first_name'], - ]); + $response->assertStatus(200); $acc = $response->json(); - $account = Account::find($acc['id']); + + $account = Account::find($this->decodePrimaryKey($acc['data']['id'])); $token = $account->default_company->tokens->first()->token; @@ -94,9 +92,10 @@ class ClientTest extends TestCase $acc = $response->json(); - $account = Account::find($acc['id']); + $account = Account::find($this->decodePrimaryKey($acc['data']['id'])); $company_token = $account->default_company->tokens()->first(); + $token = $company_token->token; $company = $company_token->company; diff --git a/tests/Feature/InvoiceTest.php b/tests/Feature/InvoiceTest.php index bec201019558..654aa8a0bc87 100644 --- a/tests/Feature/InvoiceTest.php +++ b/tests/Feature/InvoiceTest.php @@ -54,7 +54,7 @@ class InvoiceTest extends TestCase $acc = $response->json(); - $account = Account::find($acc['id']); + $account = Account::find($this->decodePrimaryKey($acc['data']['id'])); $company_token = $account->default_company->tokens()->first(); $token = $company_token->token; @@ -117,7 +117,7 @@ class InvoiceTest extends TestCase $acc = $response->json(); - $account = Account::find($acc['id']); + $account = Account::find($this->decodePrimaryKey($acc['data']['id'])); $company_token = $account->default_company->tokens()->first(); $token = $company_token->token; diff --git a/tests/Feature/ProductTest.php b/tests/Feature/ProductTest.php index 70c10ef5ca20..a1f755248480 100644 --- a/tests/Feature/ProductTest.php +++ b/tests/Feature/ProductTest.php @@ -52,14 +52,11 @@ class ProductTest extends TestCase ])->post('/api/v1/signup', $data); - $response->assertStatus(200) - ->assertJson([ - 'first_name' => $data['first_name'], - ]); + $response->assertStatus(200); $acc = $response->json(); - $account = Account::find($acc['id']); + $account = Account::find($this->decodePrimaryKey($acc['data']['id'])); $token = $account->default_company->tokens->first()->token;