Skip to content

Commit

Permalink
feat: add credit card resource
Browse files Browse the repository at this point in the history
  • Loading branch information
halivert committed Jul 29, 2023
1 parent 32ffcf7 commit 78eaecf
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 10 deletions.
19 changes: 19 additions & 0 deletions app/API/CreditCard/v1/CreditCardCollection.php
@@ -0,0 +1,19 @@
<?php

namespace App\API\CreditCard\v1;

use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\ResourceCollection;

class CreditCardCollection extends ResourceCollection
{
/**
* Transform the resource collection into an array.
*
* @return array<int|string, mixed>
*/
public function toArray(Request $request): array
{
return parent::toArray($request);
}
}
20 changes: 10 additions & 10 deletions app/API/CreditCard/v1/CreditCardController.php
Expand Up @@ -4,6 +4,7 @@

use App\API\CreditCard\CreditCard;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class CreditCardController extends Controller
{
Expand All @@ -15,41 +16,40 @@ public function __construct()
/**
* Display a listing of the resource.
*/
public function index()
public function index(Request $request): CreditCardCollection
{
//
return new CreditCardCollection(
$request->user()->creditCards()->paginate(10)
);
}

/**
* Store a newly created resource in storage.
*/
public function store(StoreCreditCardRequest $request)
public function store(StoreCreditCardRequest $request): void
{
//
}

/**
* Display the specified resource.
*/
public function show(CreditCard $creditCard)
public function show(CreditCard $creditCard): void
{
//
}

/**
* Update the specified resource in storage.
*/
public function update(
UpdateCreditCardRequest $request,
CreditCard $creditCard
) {
public function update(UpdateCreditCardRequest $request, CreditCard $creditCard): void
{
//
}

/**
* Remove the specified resource from storage.
*/
public function destroy(CreditCard $creditCard)
public function destroy(CreditCard $creditCard): void
{
//
}
Expand Down
33 changes: 33 additions & 0 deletions app/API/CreditCard/v1/CreditCardResource.php
@@ -0,0 +1,33 @@
<?php

namespace App\API\CreditCard\v1;

use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;

class CreditCardResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @return array<string, mixed>
*/
public function toArray(Request $request): array
{
return [
'id' => $this->id,
'user_id' => $this->user_id,
'name' => $this->name,
'due_date' => $this->due_date,
'closing_date' => $this->closing_date,
'interest_rate' => $this->interest_rate,
'limit' => $this->limit,
'deleted_at' => $this->whenNotNull($this->deleted_at),
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
'links' => [
'self' => route('credit-cards.show', $this->resource),
]
];
}
}
7 changes: 7 additions & 0 deletions app/Models/User.php
Expand Up @@ -2,9 +2,11 @@

namespace App\Models;

use App\API\CreditCard\CreditCard;
use App\Enums\Subscription;
use Illuminate\Database\Eloquent\Concerns\HasUuids;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
Expand Down Expand Up @@ -54,4 +56,9 @@ class User extends Authenticatable
protected $attributes = [
'subscription' => Subscription::Free,
];

public function creditCards(): HasMany
{
return $this->hasMany(CreditCard::class);
}
}

0 comments on commit 78eaecf

Please sign in to comment.