fix: refactor code to group into folder

This commit is contained in:
kusowl 2026-03-25 17:13:50 +05:30
parent ca0aaaa84b
commit 5d6f75bdc2
74 changed files with 266 additions and 264 deletions

View File

@ -46,7 +46,7 @@ class IdeHelperAddress {}
/**
* @property int $id
* @property int $user_id
* @property \App\Enums\CartStatus $status
* @property \App\Enums\Cart\CartStatus $status
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property-read \App\Models\Order|null $order
@ -87,6 +87,7 @@ class IdeHelperCart {}
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Payment> $payments
* @property-read int|null $payments_count
* @property-read \App\Models\StripeSession|null $stripeSession
* @property-read mixed $total_amount
* @property-read \App\Models\User $user
* @method static \Illuminate\Database\Eloquent\Builder<static>|Order newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder<static>|Order newQuery()
@ -272,7 +273,7 @@ class IdeHelperStripeSession {}
* @property \Illuminate\Support\Carbon|null $updated_at
* @property string $mobile_number
* @property string $city
* @property \App\Enums\UserRoles $role
* @property \App\Enums\User\UserRoles $role
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Address> $addresses
* @property-read int|null $addresses_count
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Cart> $carts

View File

@ -1,6 +1,6 @@
<?php
namespace App\Actions;
namespace App\Actions\Address;
use App\Models\Address;

View File

@ -1,9 +1,9 @@
<?php
namespace App\Actions;
namespace App\Actions\Address;
use App\Data\AddUserAddressRequestDTO;
use App\Data\UserAddressResponseDTO;
use App\Data\Address\AddUserAddressRequestDTO;
use App\Data\Address\UserAddressResponseDTO;
use App\Models\User;
final readonly class SaveUserAddressAction

View File

@ -1,9 +1,9 @@
<?php
namespace App\Actions;
namespace App\Actions\Address;
use App\Data\UpdateUserAddressRequestDTO;
use App\Data\UserAddressResponseDTO;
use App\Data\Address\UpdateUserAddressRequestDTO;
use App\Data\Address\UserAddressResponseDTO;
use App\Models\Address;
final readonly class UpdateUserAddressAction

View File

@ -1,10 +1,10 @@
<?php
namespace App\Actions;
namespace App\Actions\Cart;
use App\Data\AddToCartDTO;
use App\Data\CartDTO;
use App\Enums\CartStatus;
use App\Data\Cart\AddToCartDTO;
use App\Data\Cart\CartDTO;
use App\Enums\Cart\CartStatus;
use App\Models\Product;
use App\Models\User;

View File

@ -1,8 +1,8 @@
<?php
namespace App\Actions;
namespace App\Actions\Cart;
use App\Data\CartDTO;
use App\Data\Cart\CartDTO;
use App\Models\User;
final readonly class GetActiveUserCartAction

View File

@ -1,8 +1,8 @@
<?php
namespace App\Actions;
namespace App\Actions\Cart;
use App\Enums\CartStatus;
use App\Enums\Cart\CartStatus;
use App\Models\Cart;
final readonly class MarkCartAsConvertedAction

View File

@ -1,6 +1,6 @@
<?php
namespace App\Actions;
namespace App\Actions\Cart;
use App\Models\User;

View File

@ -1,9 +1,9 @@
<?php
namespace App\Actions;
namespace App\Actions\Cart;
use App\Data\AddToCartDTO;
use App\Data\CartDTO;
use App\Data\Cart\AddToCartDTO;
use App\Data\Cart\CartDTO;
use App\Models\User;
use InvalidArgumentException;

View File

@ -1,9 +1,9 @@
<?php
namespace App\Actions;
namespace App\Actions\Order;
use App\Data\OrderRequestDTO;
use App\Enums\CartStatus;
use App\Data\Order\OrderRequestDTO;
use App\Enums\Cart\CartStatus;
use App\Exceptions\StaleCartException;
use App\Models\Address;
use App\Models\Cart;

View File

@ -1,8 +1,9 @@
<?php
namespace App\Actions;
namespace App\Actions\Payment;
use App\Enums\PaymentStatusEnum;
use App\Actions\Cart\MarkCartAsConvertedAction;
use App\Enums\Payment\PaymentStatusEnum;
use App\Models\Payment;
use App\Models\PaymentStatus;
use DB;

View File

@ -1,10 +1,10 @@
<?php
namespace App\Actions;
namespace App\Actions\Payment;
use App\Data\PaymentResponseDTO;
use App\Enums\PaymentModes;
use App\Enums\PaymentStatusEnum;
use App\Data\Payment\PaymentResponseDTO;
use App\Enums\Payment\PaymentModes;
use App\Enums\Payment\PaymentStatusEnum;
use App\Models\Order;
use App\Models\PaymentStatus;
use App\Services\Payment\PaymentGatewayFactory;

View File

@ -1,8 +1,8 @@
<?php
namespace App\Actions;
namespace App\Actions\Product;
use App\Data\UploadImageDTO;
use App\Data\Upload\UploadImageDTO;
final readonly class CreateProductAction
{

View File

@ -1,8 +1,8 @@
<?php
namespace App\Actions;
namespace App\Actions\Product;
use App\Data\ProductCategoryDTO;
use App\Data\Product\ProductCategoryDTO;
use App\Models\ProductCategory;
final readonly class GetAllProductCategory

View File

@ -1,8 +1,8 @@
<?php
namespace App\Actions;
namespace App\Actions\Stripe;
use App\Data\VerifiedCheckoutResponseDTO;
use App\Data\Payment\VerifiedCheckoutResponseDTO;
use App\Models\User;
use Exception;
use Log;

View File

@ -1,8 +1,8 @@
<?php
namespace App\Actions;
namespace App\Actions\Upload;
use App\Data\UploadImageDTO;
use App\Data\Upload\UploadImageDTO;
final readonly class UploadImageAction
{

View File

@ -1,8 +1,8 @@
<?php
namespace App\Actions;
namespace App\Actions\User;
use App\Data\RegisterDTO;
use App\Data\User\RegisterDTO;
use App\Models\User;
final readonly class CreateUserAction

View File

@ -2,7 +2,7 @@
namespace App\Contracts;
use App\Data\PaymentResponseDTO;
use App\Data\Payment\PaymentResponseDTO;
use App\Models\Order;
interface PaymentGateway

View File

@ -1,6 +1,6 @@
<?php
namespace App\Data;
namespace App\Data\Address;
use App\Contracts\InputDataTransferObject;
use Illuminate\Foundation\Http\FormRequest;
@ -16,6 +16,18 @@ public function __construct(
public string $pinCode
) {}
public static function fromRequest(FormRequest $request): InputDataTransferObject
{
return new self(
firstName: $request->firstName,
lastName: $request->lastName,
street: $request->street,
city: $request->city,
state: $request->state,
pinCode: $request->pinCode
);
}
/**
* @return array<string, mixed>
*/
@ -30,16 +42,4 @@ public function toArray(): array
'pin' => $this->pinCode,
];
}
public static function fromRequest(FormRequest $request): InputDataTransferObject
{
return new self(
firstName: $request->firstName,
lastName: $request->lastName,
street: $request->street,
city: $request->city,
state: $request->state,
pinCode: $request->pinCode
);
}
}

View File

@ -1,6 +1,6 @@
<?php
namespace App\Data;
namespace App\Data\Address;
use App\Contracts\InputDataTransferObject;
use Illuminate\Foundation\Http\FormRequest;
@ -16,6 +16,18 @@ public function __construct(
public ?string $pinCode = null,
) {}
public static function fromRequest(FormRequest $request): InputDataTransferObject
{
return new self(
firstName: $request->input('firstName'),
lastName: $request->input('lastName'),
street: $request->input('street'),
city: $request->input('city'),
state: $request->input('state'),
pinCode: $request->input('pinCode'),
);
}
/**
* @return array<string = null = null, mixed>
*/
@ -32,16 +44,4 @@ public function toArray(): array
return array_filter($data, fn ($value) => $value !== null);
}
public static function fromRequest(FormRequest $request): InputDataTransferObject
{
return new self(
firstName: $request->input('firstName'),
lastName: $request->input('lastName'),
street: $request->input('street'),
city: $request->input('city'),
state: $request->input('state'),
pinCode: $request->input('pinCode'),
);
}
}

View File

@ -1,6 +1,6 @@
<?php
namespace App\Data;
namespace App\Data\Address;
use App\Contracts\OutputDataTransferObject;
use App\Models\Address;
@ -17,6 +17,19 @@ public function __construct(
public string $pinCode
) {}
public static function fromModel(Address $address): OutputDataTransferObject
{
return new self(
id: $address->id,
firstName: $address->first_name,
lastName: $address->last_name,
street: $address->street,
city: $address->city,
state: $address->state,
pinCode: $address->pin
);
}
/**
* @return array<string, mixed>
*/
@ -32,17 +45,4 @@ public function toArray(): array
'pinCode' => $this->pinCode,
];
}
public static function fromModel(Address $address): OutputDataTransferObject
{
return new self(
id: $address->id,
firstName: $address->first_name,
lastName: $address->last_name,
street: $address->street,
city: $address->city,
state: $address->state,
pinCode: $address->pin
);
}
}

View File

@ -1,6 +1,6 @@
<?php
namespace App\Data;
namespace App\Data\Cart;
use App\Contracts\InputDataTransferObject;
use Illuminate\Foundation\Http\FormRequest;
@ -12,6 +12,14 @@ public function __construct(
public int $quantity
) {}
public static function fromRequest(FormRequest $request): InputDataTransferObject
{
return new self(
productId: $request->productId,
quantity: $request->quantity
);
}
/**
* @return array<string, mixed>
*/
@ -22,12 +30,4 @@ public function toArray(): array
'quantity' => $this->quantity,
];
}
public static function fromRequest(FormRequest $request): InputDataTransferObject
{
return new self(
productId: $request->productId,
quantity: $request->quantity
);
}
}

View File

@ -1,6 +1,6 @@
<?php
namespace App\Data;
namespace App\Data\Cart;
use App\Contracts\OutputDataTransferObject;
use App\Models\Cart;
@ -17,19 +17,6 @@ public function __construct(
public array $items = []
) {}
/**
* @return array<string, mixed>
*/
public function toArray(): array
{
return [
'id' => $this->id,
'itemsCount' => $this->itemsCount,
'totalPrice' => $this->totalPrice,
'items' => $this->items,
];
}
public static function fromModel(Cart $cart)
{
return new self(
@ -46,4 +33,17 @@ public static function fromModel(Cart $cart)
))->toArray()
);
}
/**
* @return array<string, mixed>
*/
public function toArray(): array
{
return [
'id' => $this->id,
'itemsCount' => $this->itemsCount,
'totalPrice' => $this->totalPrice,
'items' => $this->items,
];
}
}

View File

@ -1,6 +1,6 @@
<?php
namespace App\Data;
namespace App\Data\Cart;
use App\Contracts\OutputDataTransferObject;

View File

@ -1,6 +1,6 @@
<?php
namespace App\Data;
namespace App\Data\Order;
use App\Contracts\OutputDataTransferObject;
use Illuminate\Database\Eloquent\Model;
@ -11,6 +11,12 @@ public function __construct(
// TODO: Define your properties here
) {}
public static function fromModel(Model $model): OutputDataTransferObject
{
return new self;
// TODO: Map model data to properties
}
/**
* @return array<string, mixed>
*/
@ -20,10 +26,4 @@ public function toArray(): array
// TODO: Map properties to array
];
}
public static function fromModel(Model $model): OutputDataTransferObject
{
return new self;
// TODO: Map model data to properties
}
}

View File

@ -1,6 +1,6 @@
<?php
namespace App\Data;
namespace App\Data\Order;
use App\Contracts\InputDataTransferObject;
use Illuminate\Foundation\Http\FormRequest;
@ -12,6 +12,14 @@ public function __construct(
public string $addressId,
) {}
public static function fromRequest(FormRequest $request): OrderRequestDTO
{
return new self(
cartId: $request->cartId,
addressId: $request->addressId,
);
}
/**
* @return array<string, mixed>
*/
@ -22,12 +30,4 @@ public function toArray(): array
'address_id' => $this->addressId,
];
}
public static function fromRequest(FormRequest $request): OrderRequestDTO
{
return new self(
cartId: $request->cartId,
addressId: $request->addressId,
);
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace App\Data;
namespace App\Data\Payment;
use App\Contracts\OutputDataTransferObject;
use App\Enums\PaymentModes;
use App\Enums\Payment\PaymentModes;
final readonly class PaymentResponseDTO implements OutputDataTransferObject
{

View File

@ -1,6 +1,6 @@
<?php
namespace App\Data;
namespace App\Data\Payment;
use App\Contracts\OutputDataTransferObject;

View File

@ -1,6 +1,6 @@
<?php
namespace App\Data;
namespace App\Data\Product;
use App\Contracts\OutputDataTransferObject;
use App\Models\ProductCategory;
@ -13,6 +13,15 @@ public function __construct(
public string $slug,
) {}
public static function fromModel(ProductCategory $category): self
{
return new self(
id: $category->id,
name: $category->name,
slug: $category->slug,
);
}
/**
* @return array<string, mixed>
*/
@ -24,13 +33,4 @@ public function toArray(): array
'slug' => $this->slug,
];
}
public static function fromModel(ProductCategory $category): self
{
return new self(
id: $category->id,
name: $category->name,
slug: $category->slug,
);
}
}

View File

@ -1,6 +1,6 @@
<?php
namespace App\Data;
namespace App\Data\Product;
use App\Contracts\OutputDataTransferObject;
use App\Models\Product;
@ -25,6 +25,24 @@ public function __construct(
public ?bool $isFavorite = null
) {}
public static function fromModel(Product $product): self
{
return new self(
id: $product->id,
title: $product->title,
slug: $product->slug,
description: $product->description,
actualPrice: $product->actual_price,
listPrice: $product->list_price,
category: ProductCategoryDTO::fromModel($product->category),
productImages: $product->images->map(fn (ProductImage $productImage) => ProductImageDTO::fromModel($productImage))->all(),
updatedAt: $product->updated_at,
createdAt: $product->created_at,
// this column is added by where exists query
isFavorite: $product->favorited_by_exists,
);
}
/**
* @return array<string, mixed>
*/
@ -45,22 +63,4 @@ public function toArray(): array
'isFavorite' => $this->isFavorite,
];
}
public static function fromModel(Product $product): self
{
return new self(
id: $product->id,
title: $product->title,
slug: $product->slug,
description: $product->description,
actualPrice: $product->actual_price,
listPrice: $product->list_price,
category: ProductCategoryDTO::fromModel($product->category),
productImages: $product->images->map(fn (ProductImage $productImage) => ProductImageDTO::fromModel($productImage))->all(),
updatedAt: $product->updated_at,
createdAt: $product->created_at,
// this column is added by where exists query
isFavorite: $product->favorited_by_exists,
);
}
}

View File

@ -1,6 +1,6 @@
<?php
namespace App\Data;
namespace App\Data\Product;
use App\Contracts\OutputDataTransferObject;
use App\Models\ProductImage;
@ -13,6 +13,15 @@ public function __construct(
public ?int $productId = null,
) {}
public static function fromModel(ProductImage $productImage): self
{
return new self(
$productImage->id,
$productImage->path,
$productImage->product_id
);
}
/**
* @return array<string, mixed>
*/
@ -24,13 +33,4 @@ public function toArray(): array
'productId' => $this->productId,
];
}
public static function fromModel(ProductImage $productImage): self
{
return new self(
$productImage->id,
$productImage->path,
$productImage->product_id
);
}
}

View File

@ -1,9 +1,9 @@
<?php
namespace App\Data;
namespace App\Data\Stripe;
use App\Contracts\OutputDataTransferObject;
use App\Enums\StripeCurrency;
use App\Enums\Stripe\StripeCurrency;
final readonly class StripeLineItemDTO implements OutputDataTransferObject
{

View File

@ -1,9 +1,9 @@
<?php
namespace App\Data;
namespace App\Data\Stripe;
use App\Contracts\OutputDataTransferObject;
use App\Enums\StripePaymentMode;
use App\Enums\Stripe\StripePaymentMode;
final readonly class StripeSessionDataDTO implements OutputDataTransferObject
{

View File

@ -1,6 +1,6 @@
<?php
namespace App\Data;
namespace App\Data\Upload;
use App\Models\Product;
use Illuminate\Http\UploadedFile;

View File

@ -1,6 +1,6 @@
<?php
namespace App\Data;
namespace App\Data\User;
use App\Contracts\InputDataTransferObject;
use Illuminate\Foundation\Http\FormRequest;

View File

@ -1,6 +1,6 @@
<?php
namespace App\Data;
namespace App\Data\User;
use App\Contracts\OutputDataTransferObject;

View File

@ -1,6 +1,6 @@
<?php
namespace App\Enums;
namespace App\Enums\Cart;
enum CartStatus: string
{

View File

@ -1,6 +1,6 @@
<?php
namespace App\Enums;
namespace App\Enums\Order;
/**
* Open -> The order was placed or created. There is work to do for the order, which can include processing payment, fulfilling, or processing returns.

View File

@ -1,6 +1,6 @@
<?php
namespace App\Enums;
namespace App\Enums\Payment;
enum PaymentModes: string
{

View File

@ -1,6 +1,6 @@
<?php
namespace App\Enums;
namespace App\Enums\Payment;
enum PaymentStatusEnum: string
{

View File

@ -1,6 +1,6 @@
<?php
namespace App\Enums;
namespace App\Enums\Stripe;
enum StripeCurrency: string
{

View File

@ -1,6 +1,6 @@
<?php
namespace App\Enums;
namespace App\Enums\Stripe;
enum StripeEventType: string
{

View File

@ -1,6 +1,6 @@
<?php
namespace App\Enums;
namespace App\Enums\Stripe;
enum StripePaymentMode: string
{

View File

@ -1,6 +1,6 @@
<?php
namespace App\Enums;
namespace App\Enums\User;
enum UserRoles: string
{

View File

@ -2,7 +2,7 @@
namespace App\Http\Controllers;
use App\Data\UserDTO;
use App\Data\User\UserDTO;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

View File

@ -2,15 +2,15 @@
namespace App\Http\Controllers;
use App\Actions\AddProductToCartAction;
use App\Actions\GetActiveUserCartAction;
use App\Actions\RemoveProductFromCartAction;
use App\Actions\UpdateProductInCartAction;
use App\Data\AddToCartDTO;
use App\Actions\Cart\AddProductToCartAction;
use App\Actions\Cart\GetActiveUserCartAction;
use App\Actions\Cart\RemoveProductFromCartAction;
use App\Actions\Cart\UpdateProductInCartAction;
use App\Data\Cart\AddToCartDTO;
use App\Http\Requests\AddProductToCartRequest;
use App\Http\Requests\RemoveProductFromCartRequest;
use App\Http\Requests\UpdateProductInCartRequest;
use App\Http\Resources\CartResource;
use App\Http\Resources\Cart\CartResource;
use Illuminate\Support\Facades\Auth;
class CartController extends Controller

View File

@ -2,7 +2,7 @@
namespace App\Http\Controllers;
use App\Http\Resources\FavouriteProductResource;
use App\Http\Resources\Product\FavouriteProductResource;
use App\Models\FavouriteProduct;
use App\Models\Product;
use App\Models\User;

View File

@ -2,8 +2,8 @@
namespace App\Http\Controllers;
use App\Actions\CreateOrderAction;
use App\Data\OrderRequestDTO;
use App\Actions\Order\CreateOrderAction;
use App\Data\Order\OrderRequestDTO;
use App\Exceptions\StaleCartException;
use App\Http\Requests\StoreOrderRequest;
use App\Http\Requests\UpdateOrderRequest;

View File

@ -2,12 +2,12 @@
namespace App\Http\Controllers;
use App\Actions\ProcessOrderPaymentAction;
use App\Actions\VerifyStripeSessionAction;
use App\Enums\PaymentModes;
use App\Actions\Payment\ProcessOrderPaymentAction;
use App\Actions\Stripe\VerifyStripeSessionAction;
use App\Enums\Payment\PaymentModes;
use App\Http\Requests\PaymentRequest;
use App\Http\Requests\VerifyPaymentRequest;
use App\Http\Resources\PaymentResource;
use App\Http\Resources\Payment\PaymentResource;
use App\Models\Order;
use App\Models\Payment;

View File

@ -2,7 +2,7 @@
namespace App\Http\Controllers;
use App\Actions\GetAllProductCategory;
use App\Actions\Product\GetAllProductCategory;
class ProductCategoryController extends Controller
{

View File

@ -2,9 +2,9 @@
namespace App\Http\Controllers;
use App\Data\ProductDTO;
use App\Data\Product\ProductDTO;
use App\Http\Requests\CreateProductRequest;
use App\Http\Resources\ProductResource;
use App\Http\Resources\Product\ProductResource;
use App\Models\Product;
use App\Queries\GetProductsQuery;
use Illuminate\Http\Request;

View File

@ -2,8 +2,8 @@
namespace App\Http\Controllers;
use App\Actions\UploadImageAction;
use App\Data\UploadImageDTO;
use App\Actions\Upload\UploadImageAction;
use App\Data\Upload\UploadImageDTO;
use App\Http\Requests\UploadImageRequest;
use App\Models\ProductImages;

View File

@ -2,8 +2,8 @@
namespace App\Http\Controllers;
use App\Actions\CreateUserAction;
use App\Data\RegisterDTO;
use App\Actions\User\CreateUserAction;
use App\Data\User\RegisterDTO;
use App\Http\Requests\RegisterUserRequest;
use Illuminate\Http\JsonResponse;

View File

@ -2,8 +2,8 @@
namespace App\Http\Controllers;
use App\Actions\MarkPaymentAsPaidAction;
use App\Enums\StripeEventType;
use App\Actions\Payment\MarkPaymentAsPaidAction;
use App\Enums\Stripe\StripeEventType;
use App\Models\Payment;
use Illuminate\Http\Request;
use Log;

View File

@ -2,15 +2,15 @@
namespace App\Http\Controllers;
use App\Actions\DeleteUserAddressAction;
use App\Actions\SaveUserAddressAction;
use App\Actions\UpdateUserAddressAction;
use App\Data\AddUserAddressRequestDTO;
use App\Data\UpdateUserAddressRequestDTO;
use App\Data\UserAddressResponseDTO;
use App\Actions\Address\DeleteUserAddressAction;
use App\Actions\Address\SaveUserAddressAction;
use App\Actions\Address\UpdateUserAddressAction;
use App\Data\Address\AddUserAddressRequestDTO;
use App\Data\Address\UpdateUserAddressRequestDTO;
use App\Data\Address\UserAddressResponseDTO;
use App\Http\Requests\AddUserAddressRequest;
use App\Http\Requests\UpdateUserAddressRequest;
use App\Http\Resources\AddressResource;
use App\Http\Resources\Address\AddressResource;
use App\Models\Address;
use Illuminate\Http\Request;

View File

@ -2,7 +2,7 @@
namespace App\Http\Requests;
use App\Enums\PaymentModes;
use App\Enums\Payment\PaymentModes;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;

View File

@ -1,6 +1,6 @@
<?php
namespace App\Http\Resources;
namespace App\Http\Resources\Address;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\ResourceCollection;

View File

@ -1,8 +1,8 @@
<?php
namespace App\Http\Resources;
namespace App\Http\Resources\Address;
use App\Data\UserAddressResponseDTO;
use App\Data\Address\UserAddressResponseDTO;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;

View File

@ -1,6 +1,6 @@
<?php
namespace App\Http\Resources;
namespace App\Http\Resources\Cart;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\ResourceCollection;

View File

@ -1,8 +1,8 @@
<?php
namespace App\Http\Resources;
namespace App\Http\Resources\Cart;
use App\Data\CartItemDTO;
use App\Data\Cart\CartItemDTO;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Support\Facades\Storage;

View File

@ -1,8 +1,8 @@
<?php
namespace App\Http\Resources;
namespace App\Http\Resources\Cart;
use App\Data\CartDTO;
use App\Data\Cart\CartDTO;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;

View File

@ -1,6 +1,6 @@
<?php
namespace App\Http\Resources;
namespace App\Http\Resources\Order;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;

View File

@ -1,8 +1,8 @@
<?php
namespace App\Http\Resources;
namespace App\Http\Resources\Payment;
use App\Data\PaymentResponseDTO;
use App\Data\Payment\PaymentResponseDTO;
use App\Models\Payment;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;

View File

@ -1,6 +1,6 @@
<?php
namespace App\Http\Resources;
namespace App\Http\Resources\Product;
use App\Models\FavouriteProduct;
use Illuminate\Http\Request;

View File

@ -1,6 +1,6 @@
<?php
namespace App\Http\Resources;
namespace App\Http\Resources\Product;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\ResourceCollection;

View File

@ -1,9 +1,9 @@
<?php
namespace App\Http\Resources;
namespace App\Http\Resources\Product;
use App\Data\ProductDTO;
use App\Data\ProductImageDTO;
use App\Data\Product\ProductDTO;
use App\Data\Product\ProductImageDTO;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Support\Facades\Storage;

View File

@ -2,7 +2,7 @@
namespace App\Models;
use App\Enums\CartStatus;
use App\Enums\Cart\CartStatus;
use Illuminate\Database\Eloquent\Attributes\Scope;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
@ -16,16 +16,6 @@ class Cart extends Model
{
protected $fillable = ['user_id', 'status'];
/**
* @return array<string, string>
*/
protected function casts(): array
{
return [
'status' => CartStatus::class,
];
}
public function products(): BelongsToMany
{
return $this->belongsToMany(Product::class)
@ -43,6 +33,16 @@ public function order(): BelongsTo
return $this->belongsTo(Order::class);
}
/**
* @return array<string, string>
*/
protected function casts(): array
{
return [
'status' => CartStatus::class,
];
}
#[Scope]
protected function active(Builder $query)
{

View File

@ -3,7 +3,7 @@
namespace App\Models;
// use Illuminate\Contracts\Auth\MustVerifyEmail;
use App\Enums\UserRoles;
use App\Enums\User\UserRoles;
use Database\Factories\UserFactory;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
@ -45,18 +45,9 @@ class User extends Authenticatable
'remember_token',
];
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
public function hasFavorited(Product $product): bool
{
return [
'email_verified_at' => 'datetime',
'password' => 'hashed',
'role' => UserRoles::class,
];
return $this->favoriteProducts()->where('product_id', $product->id)->exists();
}
public function favoriteProducts(): BelongsToMany
@ -64,11 +55,6 @@ public function favoriteProducts(): BelongsToMany
return $this->belongsToMany(Product::class, 'favorite_products', 'user_id', 'product_id');
}
public function hasFavorited(Product $product): bool
{
return $this->favoriteProducts()->where('product_id', $product->id)->exists();
}
/**
* @return HasMany<Cart>
*/
@ -92,4 +78,18 @@ public function orders(): HasMany
{
return $this->hasMany(Order::class);
}
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
return [
'email_verified_at' => 'datetime',
'password' => 'hashed',
'role' => UserRoles::class,
];
}
}

View File

@ -2,7 +2,7 @@
namespace App\Services\Payment;
use App\Enums\PaymentModes;
use App\Enums\Payment\PaymentModes;
class PaymentGatewayFactory
{

View File

@ -3,12 +3,12 @@
namespace App\Services\Payment;
use App\Contracts\PaymentGateway;
use App\Data\PaymentResponseDTO;
use App\Data\StripeLineItemDTO;
use App\Data\StripeSessionDataDTO;
use App\Enums\PaymentModes;
use App\Enums\StripeCurrency;
use App\Enums\StripePaymentMode;
use App\Data\Payment\PaymentResponseDTO;
use App\Data\Stripe\StripeLineItemDTO;
use App\Data\Stripe\StripeSessionDataDTO;
use App\Enums\Payment\PaymentModes;
use App\Enums\Stripe\StripeCurrency;
use App\Enums\Stripe\StripePaymentMode;
use App\Models\Order;
use Exception;
use Illuminate\Support\Facades\Log;

View File

@ -1,6 +1,6 @@
<?php
use App\Enums\UserRoles;
use App\Enums\User\UserRoles;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

View File

@ -1,6 +1,6 @@
<?php
use App\Enums\CartStatus;
use App\Enums\Cart\CartStatus;
use App\Models\User;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;

View File

@ -1,6 +1,6 @@
<?php
use App\Enums\OrderStatus;
use App\Enums\Order\OrderStatus;
use App\Models\Cart;
use App\Models\User;
use Illuminate\Database\Migrations\Migration;

View File

@ -2,7 +2,7 @@
namespace Database\Seeders;
use App\Enums\PaymentStatusEnum;
use App\Enums\Payment\PaymentStatusEnum;
use App\Models\PaymentStatus;
use Illuminate\Database\Seeder;