Compare commits

..

23 Commits

Author SHA1 Message Date
Mekan1206
6093a45761 WIP 2026-05-04 17:00:01 +05:00
Mekan1206
7f0b92a7ff WIP 2026-05-04 16:56:17 +05:00
Mekan1206
715acc4e97 WIP 2026-05-04 16:47:49 +05:00
Mekan1206
859e4ebbe8 tr in category 2026-05-04 16:44:41 +05:00
Mekan1206
24b85763e5 fix tr 2026-05-04 16:34:33 +05:00
Mekan1206
a6cf6410b2 WIP 2026-05-04 16:33:56 +05:00
Mekan1206
8c4e214e7b WIP 2026-05-04 16:31:51 +05:00
Mekan1206
e227b24de5 WIP 2026-05-04 13:42:09 +05:00
Mekan1206
79b10b20ea WIP 2026-05-04 13:41:21 +05:00
Mekan1206
fa9d9b68b5 WIP 2026-05-04 13:39:45 +05:00
Mekan1206
c23d0eeab0 downgrade 2026-05-04 13:37:25 +05:00
Mekan1206
14b47d40e8 WIP 2026-05-04 13:34:54 +05:00
Mekan1206
f365bff782 WIP 2026-05-04 13:24:27 +05:00
Mekan1206
82ed332637 WIP 2026-05-03 19:08:02 +05:00
Mekan1206
bac2ad9a3e WIP 2026-05-03 18:42:16 +05:00
Mekan1206
1b467108de WIP 2026-05-03 18:36:49 +05:00
Mekan1206
774ac3c622 remove modal 2026-05-02 16:19:31 +05:00
Mekan1206
62f8deb51f WIP 2026-05-02 16:16:56 +05:00
Mekan1206
40cac31648 fix 2026-05-02 12:56:32 +05:00
Mekan1206
6617c8bd27 WIP 2026-05-02 12:55:20 +05:00
Mekan1206
005b428cf1 Channel 2026-05-01 16:53:04 +05:00
Mekan1206
f772562376 WIP 2026-04-30 20:01:23 +05:00
Mekan1206
a07c764dfe WIP 2026-04-30 19:50:59 +05:00
159 changed files with 2797 additions and 1997 deletions

View File

@@ -0,0 +1,37 @@
<?php
namespace App\Events\Conversation;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class MessageSent implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $message;
/**
* Create a new event instance.
*/
public function __construct($message)
{
$this->message = $message->load('user');
}
/**
* Get the channels the event should broadcast on.
*
* @return array<int, Channel>
*/
public function broadcastOn(): array
{
return [
new PrivateChannel('chat.'.$this->message->conversation_id),
];
}
}

View File

@@ -4,6 +4,7 @@ namespace App\Exports\Ecommerce\Product\Order;
use App\Models\Ecommerce\Product\Order\OrderItem; use App\Models\Ecommerce\Product\Order\OrderItem;
use App\Models\Ecommerce\Product\Order\Status\OrderStatus; use App\Models\Ecommerce\Product\Order\Status\OrderStatus;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\Exportable; use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\FromQuery; use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\ShouldAutoSize; use Maatwebsite\Excel\Concerns\ShouldAutoSize;
@@ -23,7 +24,7 @@ class ExportOrderReport implements FromQuery, ShouldAutoSize, WithHeadings, With
) {} ) {}
/** /**
* @return \Illuminate\Support\Collection * @return Collection
*/ */
public function query() public function query()
{ {

View File

@@ -41,9 +41,9 @@ class ProductFilterer
public function validateRequest(): \Illuminate\Contracts\Validation\Validator public function validateRequest(): \Illuminate\Contracts\Validation\Validator
{ {
return Validator::make($this->request->all(), [ return Validator::make($this->request->all(), [
'ids' => ['nullable', 'string', new CommaSeparatedIntegers()], 'ids' => ['nullable', 'string', new CommaSeparatedIntegers],
'brands' => ['nullable', 'string', new CommaSeparatedIntegers()], 'brands' => ['nullable', 'string', new CommaSeparatedIntegers],
'categories' => ['nullable', 'string', new CommaSeparatedIntegers()], 'categories' => ['nullable', 'string', new CommaSeparatedIntegers],
'name' => ['nullable', 'string', 'max:255'], 'name' => ['nullable', 'string', 'max:255'],
'min_price' => ['nullable', 'numeric'], 'min_price' => ['nullable', 'numeric'],
'max_price' => ['nullable', 'numeric'], 'max_price' => ['nullable', 'numeric'],

View File

@@ -32,6 +32,20 @@ if (! function_exists('translatable')) {
} }
} }
/**
* Translate
*/
function tr(string $text, string $locale = 'tk'): string
{
$text = json_decode($text);
if ($text) {
return $text->{$locale} ?? '';
}
return '';
}
if (! function_exists('removeWhiteSpace')) { if (! function_exists('removeWhiteSpace')) {
/** /**
* Remove white sapce from string * Remove white sapce from string
@@ -95,7 +109,7 @@ if (! function_exists('sendSMSVerification')) {
/** /**
* Send a sms verification code * Send a sms verification code
* *
* @return \App\Models\Verification | null * @return App\Models\Verification | null
*/ */
function sendSMSVerification(string|int $phone_number): ?Verification function sendSMSVerification(string|int $phone_number): ?Verification
{ {
@@ -167,7 +181,7 @@ if (! function_exists('tmpostChannel')) {
/** /**
* Default channel * Default channel
* *
* @return \App\Models\Shop\Channel * @return App\Models\Shop\Channel
*/ */
function tmpostChannel(): Channel function tmpostChannel(): Channel
{ {

View File

@@ -4,13 +4,14 @@ namespace App\Http\Controllers\Api\V1;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\Shop\Product\Attribute; use App\Models\Shop\Product\Attribute;
use Illuminate\Http\Response;
class AttributeController extends Controller class AttributeController extends Controller
{ {
/** /**
* Display a listing of the resource. * Display a listing of the resource.
* *
* @return \Illuminate\Http\Response * @return Response
*/ */
public function index() public function index()
{ {

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers\Api\V1\Auth\Register; namespace App\Http\Controllers\Api\V1\Auth\Register;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
class AuthRegisterRequest extends FormRequest class AuthRegisterRequest extends FormRequest
@@ -9,7 +10,7 @@ class AuthRegisterRequest extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array|string> * @return array<string, ValidationRule|array|string>
*/ */
public function rules(): array public function rules(): array
{ {

View File

@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Api\V1\Banner\Requests;
use App\Models\CMS\Media\Banner; use App\Models\CMS\Media\Banner;
use App\Models\System\Settings\OS; use App\Models\System\Settings\OS;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
@@ -12,7 +13,7 @@ class BannerIndexRequest extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array|string> * @return array<string, ValidationRule|array|string>
*/ */
public function rules(): array public function rules(): array
{ {

View File

@@ -2,6 +2,8 @@
namespace App\Http\Controllers\Api\V1\Brand\Resources; namespace App\Http\Controllers\Api\V1\Brand\Resources;
use Illuminate\Contracts\Support\Arrayable;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
class BrandResource extends JsonResource class BrandResource extends JsonResource
@@ -9,8 +11,8 @@ class BrandResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|Arrayable|\JsonSerializable
*/ */
public function toArray($request): array public function toArray($request): array
{ {

View File

@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Api\V1\Carousel\Requests;
use App\Models\CMS\Media\Carousel; use App\Models\CMS\Media\Carousel;
use App\Models\System\Settings\OS; use App\Models\System\Settings\OS;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
@@ -12,7 +13,7 @@ class CarouselIndexRequest extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array|string> * @return array<string, ValidationRule|array|string>
*/ */
public function rules(): array public function rules(): array
{ {

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers\Api\V1\Category\Resources; namespace App\Http\Controllers\Api\V1\Category\Resources;
use Illuminate\Contracts\Support\Arrayable;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
@@ -10,7 +11,7 @@ class CategoryResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|Arrayable|\JsonSerializable
*/ */
public function toArray(Request $request): array public function toArray(Request $request): array
{ {

View File

@@ -3,6 +3,7 @@
namespace App\Http\Controllers\Api\V1\Channel\Requests; namespace App\Http\Controllers\Api\V1\Channel\Requests;
use App\Models\Ecommerce\Channel\Channel; use App\Models\Ecommerce\Channel\Channel;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
class ChannelIndexRequest extends FormRequest class ChannelIndexRequest extends FormRequest
@@ -10,7 +11,7 @@ class ChannelIndexRequest extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array|string> * @return array<string, ValidationRule|array|string>
*/ */
public function rules(): array public function rules(): array
{ {

View File

@@ -20,7 +20,7 @@ class CollectionController extends Controller
{ {
return response()->rest( return response()->rest(
CollectionResource::collection( CollectionResource::collection(
Collection::with('media')->where('is_visible', true)->ordered()->get() Collection::query()->with('media')->where('is_visible', true)->inRandomOrder()->get()
) )
); );
} }
@@ -34,7 +34,7 @@ class CollectionController extends Controller
return response()->rest_paginate( return response()->rest_paginate(
CollectionResource::collection( CollectionResource::collection(
Collection::with('media')->where('is_visible', true)->ordered()->simplePaginate($perPage) Collection::query()->with('media')->where('is_visible', true)->inRandomOrder()->simplePaginate($perPage)
) )
); );
} }

View File

@@ -3,6 +3,8 @@
namespace App\Http\Controllers\Api\V1\Collection\Resources; namespace App\Http\Controllers\Api\V1\Collection\Resources;
use App\Http\Resources\MediaResource; use App\Http\Resources\MediaResource;
use Illuminate\Contracts\Support\Arrayable;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
class CollectionResource extends JsonResource class CollectionResource extends JsonResource
@@ -10,8 +12,8 @@ class CollectionResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|Arrayable|\JsonSerializable
*/ */
public function toArray($request) public function toArray($request)
{ {

View File

@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Api\V1;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\Shop\Product\Product; use App\Models\Shop\Product\Product;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
@@ -13,7 +14,7 @@ class CommentController extends Controller
/** /**
* Display a listing of the resource. * Display a listing of the resource.
* *
* @return \Illuminate\Http\Response * @return Response
*/ */
public function index() public function index()
{ {
@@ -25,7 +26,7 @@ class CommentController extends Controller
/** /**
* Store a newly created resource in storage. * Store a newly created resource in storage.
* *
* @return \Illuminate\Http\Response * @return Response
*/ */
public function store(Request $request) public function store(Request $request)
{ {
@@ -50,7 +51,7 @@ class CommentController extends Controller
* Display the specified resource. * Display the specified resource.
* *
* @param int $id * @param int $id
* @return \Illuminate\Http\Response * @return Response
*/ */
public function show($id) public function show($id)
{ {
@@ -61,7 +62,7 @@ class CommentController extends Controller
* Update the specified resource in storage. * Update the specified resource in storage.
* *
* @param int $id * @param int $id
* @return \Illuminate\Http\Response * @return Response
*/ */
public function update(Request $request) public function update(Request $request)
{ {
@@ -85,7 +86,7 @@ class CommentController extends Controller
* Remove the specified resource from storage. * Remove the specified resource from storage.
* *
* @param int $id * @param int $id
* @return \Illuminate\Http\Response * @return Response
*/ */
public function destroy(Request $request) public function destroy(Request $request)
{ {

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers\Api\V1\Entrepreneur\Requests; namespace App\Http\Controllers\Api\V1\Entrepreneur\Requests;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
class VendorProductStoreRequest extends FormRequest class VendorProductStoreRequest extends FormRequest
@@ -9,7 +10,7 @@ class VendorProductStoreRequest extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string> * @return array<string, ValidationRule|array<mixed>|string>
*/ */
public function rules(): array public function rules(): array
{ {

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers\Api\V1\Entrepreneur\Requests; namespace App\Http\Controllers\Api\V1\Entrepreneur\Requests;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
class VendorProductUpdateRequest extends FormRequest class VendorProductUpdateRequest extends FormRequest
@@ -9,7 +10,7 @@ class VendorProductUpdateRequest extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string> * @return array<string, ValidationRule|array<mixed>|string>
*/ */
public function rules(): array public function rules(): array
{ {

View File

@@ -11,6 +11,7 @@ use App\Models\Ecommerce\Product\Product\Product;
use App\Models\User; use App\Models\User;
use App\Repositories\Ecommerce\Product\ProductRepository; use App\Repositories\Ecommerce\Product\ProductRepository;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
class VendorProductController extends Controller class VendorProductController extends Controller
@@ -18,7 +19,7 @@ class VendorProductController extends Controller
/** /**
* Display a listing of the resource. * Display a listing of the resource.
* *
* @return \Illuminate\Http\Response * @return Response
*/ */
public function index(Request $request) public function index(Request $request)
{ {
@@ -49,7 +50,7 @@ class VendorProductController extends Controller
/** /**
* Store a newly created resource in storage. * Store a newly created resource in storage.
* *
* @return \Illuminate\Http\Response * @return Response
*/ */
public function store(VendorProductStoreRequest $request) public function store(VendorProductStoreRequest $request)
{ {
@@ -105,7 +106,7 @@ class VendorProductController extends Controller
* Display the specified resource. * Display the specified resource.
* *
* @param App\Models\Ecommerce\Product\Product\Product $product * @param App\Models\Ecommerce\Product\Product\Product $product
* @return \Illuminate\Http\Response * @return Response
*/ */
public function show(Product $product) public function show(Product $product)
{ {
@@ -118,7 +119,7 @@ class VendorProductController extends Controller
* Update the specified resource in storage. * Update the specified resource in storage.
* *
* @param int $id * @param int $id
* @return \Illuminate\Http\Response * @return Response
*/ */
public function update(VendorProductUpdateRequest $request, Product $product) public function update(VendorProductUpdateRequest $request, Product $product)
{ {
@@ -188,7 +189,7 @@ class VendorProductController extends Controller
* Remove the specified resource from storage. * Remove the specified resource from storage.
* *
* @param int $id * @param int $id
* @return \Illuminate\Http\Response * @return Response
*/ */
public function destroy(Product $product) public function destroy(Product $product)
{ {

View File

@@ -2,7 +2,6 @@
namespace App\Http\Controllers\Api\V1\Entrepreneur\Resources\Order; namespace App\Http\Controllers\Api\V1\Entrepreneur\Resources\Order;
use App\Models\Ecommerce\Product\Order\Shipping\OrderShipping;
use App\Models\Ecommerce\Product\Order\Status\OrderStatus; use App\Models\Ecommerce\Product\Order\Status\OrderStatus;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;

View File

@@ -2,7 +2,6 @@
namespace App\Http\Controllers\Api\V1\Entrepreneur\Resources\Order; namespace App\Http\Controllers\Api\V1\Entrepreneur\Resources\Order;
use App\Models\Ecommerce\Product\Order\Shipping\OrderShipping;
use App\Models\Ecommerce\Product\Order\Status\OrderStatus; use App\Models\Ecommerce\Product\Order\Status\OrderStatus;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;

View File

@@ -3,6 +3,8 @@
namespace App\Http\Controllers\Api\V1\Favorite\Resources; namespace App\Http\Controllers\Api\V1\Favorite\Resources;
use App\Http\Controllers\Api\V1\Product\Resources\ProductResource; use App\Http\Controllers\Api\V1\Product\Resources\ProductResource;
use Illuminate\Contracts\Support\Arrayable;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
class FavoriteResource extends JsonResource class FavoriteResource extends JsonResource
@@ -10,8 +12,8 @@ class FavoriteResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|Arrayable|\JsonSerializable
*/ */
public function toArray($request): array public function toArray($request): array
{ {

View File

@@ -4,7 +4,9 @@ namespace App\Http\Controllers\Api\V1\Filters;
use App\Http\Controllers\Api\V1\Filters\Requests\FilterIndexRequest; use App\Http\Controllers\Api\V1\Filters\Requests\FilterIndexRequest;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\Ecommerce\Channel\Channel;
use App\Models\Ecommerce\Product\Brand\Brand; use App\Models\Ecommerce\Product\Brand\Brand;
use Illuminate\Support\Facades\DB;
use App\Models\Ecommerce\Product\Category\Category; use App\Models\Ecommerce\Product\Category\Category;
use App\Models\Ecommerce\Product\Collection\Collection; use App\Models\Ecommerce\Product\Collection\Collection;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
@@ -25,11 +27,7 @@ class FilterController extends Controller
public function index(FilterIndexRequest $request): JsonResponse public function index(FilterIndexRequest $request): JsonResponse
{ {
return response()->rest([ return response()->rest([
'categories' => $this->categories()->map(fn ($category) => [ 'categories' => $this->categories(),
'id' => $category->id,
'parent_id' => $category->parent_id,
'name' => $category->name,
]),
'brands' => $this->brands(), 'brands' => $this->brands(),
]); ]);
} }
@@ -40,15 +38,29 @@ class FilterController extends Controller
private function categories() private function categories()
{ {
if ($this->shouldFilterByCategory()) { if ($this->shouldFilterByCategory()) {
return Category::find($this->request->category_id, ['id', 'parent_id'])->children()->get(['id', 'parent_id', 'name']); return Category::query()
->find($this->request->category_id, ['id', 'parent_id'])
->children()
->where('is_visible', true)
->ordered()
->get(['id', 'parent_id', 'name'])
->map(fn ($category) => [
'id' => $category->id,
'parent_id' => $category->parent_id,
'name' => $category->name,
]);
} }
if ($this->shouldFilterByCollection()) { if ($this->shouldFilterByCollection()) {
return $this->filterByCategoryResource(Collection::find($this->request->collection_id)); return $this->categoriesFor($this->request->collection_id, 'collection');
} }
if ($this->shouldFilterByBrand()) { if ($this->shouldFilterByBrand()) {
return $this->filterByCategoryResource(Brand::find($this->request->brand_id)); return $this->categoriesForBrand($this->request->brand_id);
}
if ($this->shouldFilterByChannel()) {
return $this->categoriesFor($this->request->channel_id, 'channel');
} }
return Category::query()->where('is_visible', true)->ordered()->get(['id', 'parent_id', 'name']); return Category::query()->where('is_visible', true)->ordered()->get(['id', 'parent_id', 'name']);
@@ -57,51 +69,116 @@ class FilterController extends Controller
private function brands() private function brands()
{ {
if ($this->shouldFilterByBrand()) { if ($this->shouldFilterByBrand()) {
return Brand::where('id', $this->request->brand_id)->get(['id', 'name']); return Brand::query()->where('id', $this->request->brand_id)->get(['id', 'name']);
} }
if ($this->shouldFilterByCategory()) { if ($this->shouldFilterByCategory()) {
$brands = Category::find($this->request->category_id)->products() $categoryId = (int) $this->request->category_id;
->where('products.is_visible', true)
->where('products.parent_id', null)
->where('products.stock', '>', 0)
->distinct('products.brand_id')
->pluck('products.brand_id');
return Brand::whereIntegerInRaw('id', $brands)->get(['id', 'name']); return DB::table('brands')
->select('brands.id', 'brands.name')
->join('products', 'products.brand_id', '=', 'brands.id')
->join('product_has_relations', 'products.id', '=', 'product_has_relations.product_id')
->where('product_has_relations.productable_type', 'category')
->where('product_has_relations.productable_id', $categoryId)
->where('products.is_visible', true)
->whereNull('products.parent_id')
->where('products.stock', '>', 0)
->groupBy('brands.id', 'brands.name', 'brands.sort_order')
->orderBy('brands.sort_order')
->get();
} }
if ($this->shouldFilterByCollection()) { if ($this->shouldFilterByCollection()) {
$brands = Collection::find($this->request->collection_id)->products() $collectionId = (int) $this->request->collection_id;
->where('products.is_visible', true)
->where('products.parent_id', null)
->where('products.stock', '>', 0)
->distinct('products.brand_id')
->pluck('products.brand_id');
return Brand::whereIntegerInRaw('id', $brands)->get(['id', 'name']); return DB::table('brands')
->select('brands.id', 'brands.name')
->join('products', 'products.brand_id', '=', 'brands.id')
->join('product_has_relations', 'products.id', '=', 'product_has_relations.product_id')
->where('product_has_relations.productable_type', 'collection')
->where('product_has_relations.productable_id', $collectionId)
->where('products.is_visible', true)
->whereNull('products.parent_id')
->where('products.stock', '>', 0)
->groupBy('brands.id', 'brands.name', 'brands.sort_order')
->orderBy('brands.sort_order')
->get();
}
if ($this->shouldFilterByChannel()) {
$channelId = (int) $this->request->channel_id;
return DB::table('brands')
->select('brands.id', 'brands.name')
->join('products', 'products.brand_id', '=', 'brands.id')
->join('product_has_relations', 'products.id', '=', 'product_has_relations.product_id')
->where('product_has_relations.productable_type', 'channel')
->where('product_has_relations.productable_id', $channelId)
->where('products.is_visible', true)
->whereNull('products.parent_id')
->where('products.stock', '>', 0)
->groupBy('brands.id', 'brands.name', 'brands.sort_order')
->orderBy('brands.sort_order')
->get();
} }
return Brand::query()->where('is_visible', true)->ordered()->get(['id', 'name']); return Brand::query()->where('is_visible', true)->ordered()->get(['id', 'name']);
} }
/** /**
* Filter by category * Categories for a resource
*/ */
private function filterByCategoryResource($resource) private function categoriesFor(int $id, string $type)
{ {
$products = $resource->products() return DB::table('categories as c')
->where('products.is_visible', true) ->select('c.id', 'c.parent_id', 'c.name')
->where('products.parent_id', null) ->where('c.is_visible', true)
->where('products.stock', '>', 0) ->whereExists(function ($query) use ($id, $type) {
->distinct('products.id') $query->select(DB::raw(1))
->pluck('products.id'); ->from('product_has_relations as phr_cat')
->join('products as p', 'p.id', '=', 'phr_cat.product_id')
->join('product_has_relations as phr_chan', 'phr_chan.product_id', '=', 'p.id')
->whereColumn('phr_cat.productable_id', 'c.id')
->where('phr_cat.productable_type', 'category')
->where('phr_chan.productable_type', $type)
->where('phr_chan.productable_id', $id)
->where('p.is_visible', true)
->whereNull('p.parent_id')
->where('p.stock', '>', 0);
})
->get()
->map(fn ($category) => [
'id' => $category->id,
'parent_id' => $category->parent_id,
'name' => tr($category->name),
]);
}
return Category::where('is_visible', true)->ordered()->join('product_has_relations', 'categories.id', '=', 'product_has_relations.productable_id') /**
->where('product_has_relations.productable_type', '=', 'category') * Brands
->whereIntegerInRaw('product_has_relations.product_id', $products) */
->get(['id', 'parent_id', 'name']) private function categoriesForBrand(int $id)
->unique('categories.id'); {
return DB::table('categories')
->select('categories.id', 'categories.parent_id', 'categories.name')
->join('product_has_relations', function ($join) {
$join->on('categories.id', '=', 'product_has_relations.productable_id')
->where('product_has_relations.productable_type', 'category');
})
->join('products', 'product_has_relations.product_id', '=', 'products.id')
->where('products.brand_id', $id)
->where('products.is_visible', true)
->whereNull('products.parent_id')
->where('products.stock', '>', 0)
->where('categories.is_visible', true)
->distinct()
->get()
->map(fn ($category) => [
'id' => $category->id,
'parent_id' => $category->parent_id,
'name' => tr($category->name),
]);
} }
/** /**
@@ -127,4 +204,12 @@ class FilterController extends Controller
{ {
return $this->request->filled('brand_id'); return $this->request->filled('brand_id');
} }
/**
* Check if request should be filtered by channel
*/
private function shouldFilterByChannel(): bool
{
return $this->request->filled('channel_id');
}
} }

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers\Api\V1\Filters\Requests; namespace App\Http\Controllers\Api\V1\Filters\Requests;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
class FilterIndexRequest extends FormRequest class FilterIndexRequest extends FormRequest
@@ -9,7 +10,7 @@ class FilterIndexRequest extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string> * @return array<string, ValidationRule|array<mixed>|string>
*/ */
public function rules(): array public function rules(): array
{ {
@@ -17,6 +18,7 @@ class FilterIndexRequest extends FormRequest
'collection_id' => ['bail', 'nullable', 'int', 'exists:collections,id'], 'collection_id' => ['bail', 'nullable', 'int', 'exists:collections,id'],
'category_id' => ['bail', 'nullable', 'int', 'exists:categories,id'], 'category_id' => ['bail', 'nullable', 'int', 'exists:categories,id'],
'brand_id' => ['bail', 'nullable', 'int', 'exists:brands,id'], 'brand_id' => ['bail', 'nullable', 'int', 'exists:brands,id'],
'channel_id' => ['bail', 'nullable', 'int', 'exists:channels,id'],
]; ];
} }
} }

View File

@@ -6,6 +6,7 @@ use App\Http\Controllers\Controller;
use App\Http\Resources\Products\ProductResource; use App\Http\Resources\Products\ProductResource;
use App\Models\Shop\Product\Product; use App\Models\Shop\Product\Product;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Maize\Markable\Models\Like; use Maize\Markable\Models\Like;
@@ -14,7 +15,7 @@ class LikeController extends Controller
/** /**
* Display a listing of the resource. * Display a listing of the resource.
* *
* @return \Illuminate\Http\Response * @return Response
*/ */
public function index() public function index()
{ {
@@ -26,7 +27,7 @@ class LikeController extends Controller
/** /**
* Store a newly created resource in storage. * Store a newly created resource in storage.
* *
* @return \Illuminate\Http\Response * @return Response
*/ */
public function store(Request $request) public function store(Request $request)
{ {
@@ -49,7 +50,7 @@ class LikeController extends Controller
* Remove the specified resource from storage. * Remove the specified resource from storage.
* *
* @param int $id * @param int $id
* @return \Illuminate\Http\Response * @return Response
*/ */
public function destroy(Request $request) public function destroy(Request $request)
{ {

View File

@@ -108,7 +108,7 @@ class OnlinePaymentController extends Controller
sms_code: $request->sms_code sms_code: $request->sms_code
); );
$doc = new \DOMDocument(); $doc = new \DOMDocument;
$doc->loadHTML($response->body()); $doc->loadHTML($response->body());
$inputs = $doc->getElementsByTagName('input'); $inputs = $doc->getElementsByTagName('input');

View File

@@ -14,7 +14,9 @@ class OrderPaymentController extends Controller
public function index(): JsonResponse public function index(): JsonResponse
{ {
return response()->rest( return response()->rest(
PaymentType::all(['id', 'name']) PaymentType::query()
->where('is_enabled', true)
->get(['id', 'name', 'is_enabled'])
->map(fn ($paymentType) => [ ->map(fn ($paymentType) => [
'id' => $paymentType->id, 'id' => $paymentType->id,
'name' => $paymentType->name, 'name' => $paymentType->name,

View File

@@ -9,6 +9,7 @@ use App\Models\Ecommerce\Product\Order\Order;
use App\Repositories\Ecommerce\Order\OrderRepository; use App\Repositories\Ecommerce\Order\OrderRepository;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Response;
class OrderController extends Controller class OrderController extends Controller
{ {
@@ -72,7 +73,7 @@ class OrderController extends Controller
* Update the specified resource in storage. * Update the specified resource in storage.
* *
* @param int $id * @param int $id
* @return \Illuminate\Http\Response * @return Response
*/ */
public function update(Request $request, Order $order): JsonResponse public function update(Request $request, Order $order): JsonResponse
{ {
@@ -85,7 +86,7 @@ class OrderController extends Controller
* Remove the specified resource from storage. * Remove the specified resource from storage.
* *
* @param int $id * @param int $id
* @return \Illuminate\Http\Response * @return Response
*/ */
public function destroy($id) public function destroy($id)
{ {

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers\Api\V1\Product\Barcode\Requests; namespace App\Http\Controllers\Api\V1\Product\Barcode\Requests;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
class ProductBarcodeSearchIndexRequest extends FormRequest class ProductBarcodeSearchIndexRequest extends FormRequest
@@ -9,7 +10,7 @@ class ProductBarcodeSearchIndexRequest extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string> * @return array<string, ValidationRule|array<mixed>|string>
*/ */
public function rules(): array public function rules(): array
{ {

View File

@@ -2,6 +2,8 @@
namespace App\Http\Controllers\Api\V1\Product\Resources\Attribute; namespace App\Http\Controllers\Api\V1\Product\Resources\Attribute;
use Illuminate\Contracts\Support\Arrayable;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
class ProductAttributeProductShowResource extends JsonResource class ProductAttributeProductShowResource extends JsonResource
@@ -9,8 +11,8 @@ class ProductAttributeProductShowResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|Arrayable|\JsonSerializable
*/ */
public function toArray($request): array public function toArray($request): array
{ {

View File

@@ -2,6 +2,8 @@
namespace App\Http\Controllers\Api\V1\Product\Resources\Attribute; namespace App\Http\Controllers\Api\V1\Product\Resources\Attribute;
use Illuminate\Contracts\Support\Arrayable;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
class ProductAttributeResource extends JsonResource class ProductAttributeResource extends JsonResource
@@ -9,8 +11,8 @@ class ProductAttributeResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|Arrayable|\JsonSerializable
*/ */
public function toArray($request) public function toArray($request)
{ {

View File

@@ -4,6 +4,8 @@ namespace App\Http\Controllers\Api\V1\Product\Resources;
use App\Http\Resources\MediaResource; use App\Http\Resources\MediaResource;
use App\Repositories\Ecommerce\Product\Property\PropertyRepository; use App\Repositories\Ecommerce\Product\Property\PropertyRepository;
use Illuminate\Contracts\Support\Arrayable;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
class ProductIndexResource extends JsonResource class ProductIndexResource extends JsonResource
@@ -11,8 +13,8 @@ class ProductIndexResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|Arrayable|\JsonSerializable
*/ */
public function toArray($request): array public function toArray($request): array
{ {

View File

@@ -6,6 +6,8 @@ use App\Http\Controllers\Api\V1\Product\Resources\Attribute\ProductAttributeProd
use App\Http\Controllers\Api\V1\Product\Resources\Variant\ProductVariantResource; use App\Http\Controllers\Api\V1\Product\Resources\Variant\ProductVariantResource;
use App\Http\Resources\Api\V1\Channel\ChannelResource; use App\Http\Resources\Api\V1\Channel\ChannelResource;
use App\Repositories\Ecommerce\Product\Property\PropertyRepository; use App\Repositories\Ecommerce\Product\Property\PropertyRepository;
use Illuminate\Contracts\Support\Arrayable;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
class ProductResource extends JsonResource class ProductResource extends JsonResource
@@ -13,8 +15,8 @@ class ProductResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|Arrayable|\JsonSerializable
*/ */
public function toArray($request): array public function toArray($request): array
{ {

View File

@@ -8,6 +8,8 @@ use App\Http\Controllers\Api\V1\Product\Resources\Variant\ProductVariantResource
use App\Http\Resources\Api\V1\Channel\ChannelResource; use App\Http\Resources\Api\V1\Channel\ChannelResource;
use App\Http\Resources\MediaResource; use App\Http\Resources\MediaResource;
use App\Repositories\Ecommerce\Product\Property\PropertyRepository; use App\Repositories\Ecommerce\Product\Property\PropertyRepository;
use Illuminate\Contracts\Support\Arrayable;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
class ProductShowResource extends JsonResource class ProductShowResource extends JsonResource
@@ -15,8 +17,8 @@ class ProductShowResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|Arrayable|\JsonSerializable
*/ */
public function toArray($request): array public function toArray($request): array
{ {

View File

@@ -2,6 +2,8 @@
namespace App\Http\Controllers\Api\V1\Product\Resources\Review; namespace App\Http\Controllers\Api\V1\Product\Resources\Review;
use Illuminate\Contracts\Support\Arrayable;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
class ProductReviewResource extends JsonResource class ProductReviewResource extends JsonResource
@@ -9,8 +11,8 @@ class ProductReviewResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|Arrayable|\JsonSerializable
*/ */
public function toArray($request): array public function toArray($request): array
{ {

View File

@@ -4,6 +4,8 @@ namespace App\Http\Controllers\Api\V1\Product\Resources\Variant;
use App\Http\Controllers\Api\V1\Product\Resources\Attribute\ProductAttributeResource; use App\Http\Controllers\Api\V1\Product\Resources\Attribute\ProductAttributeResource;
use App\Repositories\Ecommerce\Product\Property\PropertyRepository; use App\Repositories\Ecommerce\Product\Property\PropertyRepository;
use Illuminate\Contracts\Support\Arrayable;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
class ProductVariantResource extends JsonResource class ProductVariantResource extends JsonResource
@@ -11,8 +13,8 @@ class ProductVariantResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|Arrayable|\JsonSerializable
*/ */
public function toArray($request) public function toArray($request)
{ {

View File

@@ -0,0 +1,65 @@
<?php
namespace App\Http\Controllers;
use App\Events\Conversation\MessageSent;
use App\Models\Chat\Conversation;
use App\Models\Chat\Message;
use App\Models\User;
use Illuminate\Http\Request;
class ChatController extends Controller
{
public function contacts()
{
return User::select(['id', 'first_name', 'last_name'])
->get()
->map(function ($user) {
return [
'id' => $user->id,
'name' => $user->first_name.' '.$user->last_name,
];
});
}
public function start(Request $request)
{
$user1 = auth()->id();
$user2 = $request->user_id;
$conversation = Conversation::whereHas('users', fn ($q) => $q->where('user_id', $user1))
->whereHas('users', fn ($q) => $q->where('user_id', $user2))
->first();
if (! $conversation) {
$conversation = Conversation::create();
$conversation->users()->attach([$user1, $user2]);
}
return $conversation;
}
public function messages($id)
{
return Message::with('user')
->where('conversation_id', $id)
->latest()
->take(50)
->get()
->reverse()
->values();
}
public function send(Request $request)
{
$message = Message::create([
'conversation_id' => $request->conversation_id,
'user_id' => auth()->id(),
'body' => $request->body,
]);
broadcast(new MessageSent($message))->toOthers();
return $message->load('user');
}
}

View File

@@ -6,13 +6,14 @@ use App\Http\Controllers\Controller;
use App\Models\Ecommerce\Channel\Channel; use App\Models\Ecommerce\Channel\Channel;
use App\Repositories\Ecommerce\Product\ProductRepository; use App\Repositories\Ecommerce\Product\ProductRepository;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Response;
class EntrepreneurController extends Controller class EntrepreneurController extends Controller
{ {
/** /**
* Display a listing of the resource. * Display a listing of the resource.
* *
* @return \Illuminate\Http\Response * @return Response
*/ */
public function index() public function index()
{ {
@@ -25,7 +26,7 @@ class EntrepreneurController extends Controller
* Display the specified resource. * Display the specified resource.
* *
* @param int $id * @param int $id
* @return \Illuminate\Http\Response * @return Response
*/ */
public function show(Request $request, $entrepreneur) public function show(Request $request, $entrepreneur)
{ {

View File

@@ -2,7 +2,33 @@
namespace App\Http; namespace App\Http;
use App\Http\Middleware\Authenticate;
use App\Http\Middleware\CheckApiToken;
use App\Http\Middleware\CheckIfUserIsBanned;
use App\Http\Middleware\EncryptCookies;
use App\Http\Middleware\EnsureUserHasRole;
use App\Http\Middleware\PreventRequestsDuringMaintenance;
use App\Http\Middleware\RedirectIfAuthenticated;
use App\Http\Middleware\SetLanguage;
use App\Http\Middleware\TrimStrings;
use App\Http\Middleware\TrustProxies;
use App\Http\Middleware\ValidateSignature;
use App\Http\Middleware\VerifyCsrfToken;
use Illuminate\Auth\Middleware\AuthenticateWithBasicAuth;
use Illuminate\Auth\Middleware\Authorize;
use Illuminate\Auth\Middleware\EnsureEmailIsVerified;
use Illuminate\Auth\Middleware\RequirePassword;
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
use Illuminate\Foundation\Http\Kernel as HttpKernel; use Illuminate\Foundation\Http\Kernel as HttpKernel;
use Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull;
use Illuminate\Foundation\Http\Middleware\ValidatePostSize;
use Illuminate\Http\Middleware\HandleCors;
use Illuminate\Http\Middleware\SetCacheHeaders;
use Illuminate\Routing\Middleware\SubstituteBindings;
use Illuminate\Routing\Middleware\ThrottleRequests;
use Illuminate\Session\Middleware\AuthenticateSession;
use Illuminate\Session\Middleware\StartSession;
use Illuminate\View\Middleware\ShareErrorsFromSession;
class Kernel extends HttpKernel class Kernel extends HttpKernel
{ {
@@ -15,12 +41,12 @@ class Kernel extends HttpKernel
*/ */
protected $middleware = [ protected $middleware = [
// \App\Http\Middleware\TrustHosts::class, // \App\Http\Middleware\TrustHosts::class,
\App\Http\Middleware\TrustProxies::class, TrustProxies::class,
\Illuminate\Http\Middleware\HandleCors::class, HandleCors::class,
\App\Http\Middleware\PreventRequestsDuringMaintenance::class, PreventRequestsDuringMaintenance::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class, TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, ConvertEmptyStringsToNull::class,
]; ];
/** /**
@@ -30,18 +56,18 @@ class Kernel extends HttpKernel
*/ */
protected $middlewareGroups = [ protected $middlewareGroups = [
'web' => [ 'web' => [
\App\Http\Middleware\EncryptCookies::class, EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class, StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class, ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class, VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class, SubstituteBindings::class,
], ],
'api' => [ 'api' => [
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
\Illuminate\Routing\Middleware\ThrottleRequests::class.':api', ThrottleRequests::class.':api',
\Illuminate\Routing\Middleware\SubstituteBindings::class, SubstituteBindings::class,
], ],
]; ];
@@ -53,19 +79,19 @@ class Kernel extends HttpKernel
* @var array<string, class-string|string> * @var array<string, class-string|string>
*/ */
protected $middlewareAliases = [ protected $middlewareAliases = [
'auth' => \App\Http\Middleware\Authenticate::class, 'auth' => Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'auth.basic' => AuthenticateWithBasicAuth::class,
'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class, 'auth.session' => AuthenticateSession::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, 'cache.headers' => SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class, 'can' => Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'guest' => RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, 'password.confirm' => RequirePassword::class,
'signed' => \App\Http\Middleware\ValidateSignature::class, 'signed' => ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'throttle' => ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 'verified' => EnsureEmailIsVerified::class,
'api_token' => \App\Http\Middleware\CheckApiToken::class, 'api_token' => CheckApiToken::class,
'set_lang' => \App\Http\Middleware\SetLanguage::class, 'set_lang' => SetLanguage::class,
'banned' => \App\Http\Middleware\CheckIfUserIsBanned::class, 'banned' => CheckIfUserIsBanned::class,
'role' => \App\Http\Middleware\EnsureUserHasRole::class, 'role' => EnsureUserHasRole::class,
]; ];
} }

View File

@@ -11,7 +11,7 @@ class CheckApiToken
/** /**
* Handle an incoming request. * Handle an incoming request.
* *
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next * @param Closure(Request): (Response) $next
*/ */
public function handle(Request $request, Closure $next): Response public function handle(Request $request, Closure $next): Response
{ {

View File

@@ -11,7 +11,7 @@ class CheckIfUserIsBanned
/** /**
* Handle an incoming request. * Handle an incoming request.
* *
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next * @param Closure(Request): (Response) $next
*/ */
public function handle(Request $request, Closure $next): Response public function handle(Request $request, Closure $next): Response
{ {

View File

@@ -11,7 +11,7 @@ class EnsureUserHasRole
/** /**
* Handle an incoming request. * Handle an incoming request.
* *
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next * @param Closure(Request): (Response) $next
*/ */
public function handle(Request $request, Closure $next, string $role): Response public function handle(Request $request, Closure $next, string $role): Response
{ {

View File

@@ -13,7 +13,7 @@ class RedirectIfAuthenticated
/** /**
* Handle an incoming request. * Handle an incoming request.
* *
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next * @param Closure(Request): (Response) $next
*/ */
public function handle(Request $request, Closure $next, string ...$guards): Response public function handle(Request $request, Closure $next, string ...$guards): Response
{ {

View File

@@ -12,7 +12,7 @@ class SetLanguage
/** /**
* Handle an incoming request. * Handle an incoming request.
* *
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next * @param Closure(Request): (Response) $next
*/ */
public function handle(Request $request, Closure $next): Response public function handle(Request $request, Closure $next): Response
{ {

View File

@@ -3,6 +3,7 @@
namespace App\Http\Requests\Api\System\VersionManagement; namespace App\Http\Requests\Api\System\VersionManagement;
use App\Models\System\Settings\OS; use App\Models\System\Settings\OS;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
@@ -11,7 +12,7 @@ class CheckForUpdateRequest extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array|string> * @return array<string, ValidationRule|array|string>
*/ */
public function rules(): array public function rules(): array
{ {

View File

@@ -2,6 +2,7 @@
namespace App\Http\Requests\Api\V1\Auth; namespace App\Http\Requests\Api\V1\Auth;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
class AuthLoginRequest extends FormRequest class AuthLoginRequest extends FormRequest
@@ -9,7 +10,7 @@ class AuthLoginRequest extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array|string> * @return array<string, ValidationRule|array|string>
*/ */
public function rules(): array public function rules(): array
{ {

View File

@@ -3,6 +3,7 @@
namespace App\Http\Requests\Api\V1\Auth; namespace App\Http\Requests\Api\V1\Auth;
use App\Rules\VerificationRule; use App\Rules\VerificationRule;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
class AuthVerifyRequest extends FormRequest class AuthVerifyRequest extends FormRequest
@@ -10,7 +11,7 @@ class AuthVerifyRequest extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array|string> * @return array<string, ValidationRule|array|string>
*/ */
public function rules(): array public function rules(): array
{ {

View File

@@ -3,6 +3,7 @@
namespace App\Http\Requests\Api\V1\Brand; namespace App\Http\Requests\Api\V1\Brand;
use App\Models\Ecommerce\Product\Brand\Brand; use App\Models\Ecommerce\Product\Brand\Brand;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
@@ -11,7 +12,7 @@ class BrandIndexRequest extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string> * @return array<string, ValidationRule|array<mixed>|string>
*/ */
public function rules(): array public function rules(): array
{ {

View File

@@ -2,6 +2,7 @@
namespace App\Http\Requests\Api\V1\Brand; namespace App\Http\Requests\Api\V1\Brand;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
@@ -10,7 +11,7 @@ class BrandProductsRequest extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string> * @return array<string, ValidationRule|array<mixed>|string>
*/ */
public function rules(): array public function rules(): array
{ {

View File

@@ -2,6 +2,7 @@
namespace App\Http\Requests\Api\V1\Cart; namespace App\Http\Requests\Api\V1\Cart;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
class CartRemoveRequest extends FormRequest class CartRemoveRequest extends FormRequest
@@ -9,7 +10,7 @@ class CartRemoveRequest extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string> * @return array<string, ValidationRule|array<mixed>|string>
*/ */
public function rules(): array public function rules(): array
{ {

View File

@@ -3,6 +3,7 @@
namespace App\Http\Requests\Api\V1\Cart; namespace App\Http\Requests\Api\V1\Cart;
use App\Rules\ProductStockIsAvailable; use App\Rules\ProductStockIsAvailable;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
class CartStoreRequest extends FormRequest class CartStoreRequest extends FormRequest
@@ -10,7 +11,7 @@ class CartStoreRequest extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string> * @return array<string, ValidationRule|array<mixed>|string>
*/ */
public function rules(): array public function rules(): array
{ {

View File

@@ -2,6 +2,7 @@
namespace App\Http\Requests\Api\V1\Category; namespace App\Http\Requests\Api\V1\Category;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
class CategoryIndexRequest extends FormRequest class CategoryIndexRequest extends FormRequest
@@ -9,7 +10,7 @@ class CategoryIndexRequest extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string> * @return array<string, ValidationRule|array<mixed>|string>
*/ */
public function rules(): array public function rules(): array
{ {

View File

@@ -3,6 +3,7 @@
namespace App\Http\Requests\Api\V1\Forms\ContactUS; namespace App\Http\Requests\Api\V1\Forms\ContactUS;
use App\Models\System\Settings\OS; use App\Models\System\Settings\OS;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
@@ -11,7 +12,7 @@ class ContactUSStoreRequest extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string> * @return array<string, ValidationRule|array<mixed>|string>
*/ */
public function rules(): array public function rules(): array
{ {

View File

@@ -2,6 +2,7 @@
namespace App\Http\Requests\Api\V1\Forms\Newsletter; namespace App\Http\Requests\Api\V1\Forms\Newsletter;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
class NewsletterSubscriptionStoreRequest extends FormRequest class NewsletterSubscriptionStoreRequest extends FormRequest
@@ -9,7 +10,7 @@ class NewsletterSubscriptionStoreRequest extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string> * @return array<string, ValidationRule|array<mixed>|string>
*/ */
public function rules(): array public function rules(): array
{ {

View File

@@ -2,6 +2,7 @@
namespace App\Http\Requests\Api\V1\Product; namespace App\Http\Requests\Api\V1\Product;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
@@ -10,7 +11,7 @@ class BasicProductIndexRequest extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string> * @return array<string, ValidationRule|array<mixed>|string>
*/ */
public function rules(): array public function rules(): array
{ {

View File

@@ -2,6 +2,7 @@
namespace App\Http\Requests\Api\V1\Product; namespace App\Http\Requests\Api\V1\Product;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
class ProductCommentStore extends FormRequest class ProductCommentStore extends FormRequest
@@ -9,7 +10,7 @@ class ProductCommentStore extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string> * @return array<string, ValidationRule|array<mixed>|string>
*/ */
public function rules(): array public function rules(): array
{ {

View File

@@ -2,6 +2,7 @@
namespace App\Http\Requests\Api\V1\Product; namespace App\Http\Requests\Api\V1\Product;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
@@ -10,7 +11,7 @@ class ProductIndexRequest extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string> * @return array<string, ValidationRule|array<mixed>|string>
*/ */
public function rules(): array public function rules(): array
{ {

View File

@@ -3,6 +3,7 @@
namespace App\Http\Requests\Api\V1\Product\Review; namespace App\Http\Requests\Api\V1\Product\Review;
use App\Models\System\Settings\OS; use App\Models\System\Settings\OS;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
@@ -11,7 +12,7 @@ class ProductReviewStore extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string> * @return array<string, ValidationRule|array<mixed>|string>
*/ */
public function rules(): array public function rules(): array
{ {

View File

@@ -2,6 +2,7 @@
namespace App\Http\Requests\Api\V1\Product\Review; namespace App\Http\Requests\Api\V1\Product\Review;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
class ProductReviewUpdate extends FormRequest class ProductReviewUpdate extends FormRequest
@@ -9,7 +10,7 @@ class ProductReviewUpdate extends FormRequest
/** /**
* Get the validation rules that apply to the request. * Get the validation rules that apply to the request.
* *
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string> * @return array<string, ValidationRule|array<mixed>|string>
*/ */
public function rules(): array public function rules(): array
{ {

View File

@@ -4,13 +4,14 @@ namespace App\Http\Requests;
use App\Models\Ecommerce\Product\Order\Payment\OrderPayment; use App\Models\Ecommerce\Product\Order\Payment\OrderPayment;
use App\Models\Ecommerce\Product\Order\Shipping\OrderShipping; use App\Models\Ecommerce\Product\Order\Shipping\OrderShipping;
use App\Models\Ecommerce\Product\Order\Shipping\OrderShippingMethod;
use App\Models\Ecommerce\Product\Order\Status\OrderStatus; use App\Models\Ecommerce\Product\Order\Status\OrderStatus;
use App\Models\System\Settings\Location\Region; use App\Models\System\Settings\Location\Region;
use App\Models\System\Settings\OS; use App\Models\System\Settings\OS;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use App\Models\Ecommerce\Product\Order\Shipping\OrderShippingMethod;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Validation\Validator;
class CheckoutOrderRequest extends FormRequest class CheckoutOrderRequest extends FormRequest
{ {
@@ -32,7 +33,7 @@ class CheckoutOrderRequest extends FormRequest
/** /**
* Configure the validator instance. * Configure the validator instance.
* *
* @param \Illuminate\Validation\Validator $validator * @param Validator $validator
*/ */
public function withValidator($validator): void public function withValidator($validator): void
{ {
@@ -68,7 +69,7 @@ class CheckoutOrderRequest extends FormRequest
'delivery_time' => ['nullable', 'string', 'max:255', Rule::in(array_keys(OrderShipping::times()))], 'delivery_time' => ['nullable', 'string', 'max:255', Rule::in(array_keys(OrderShipping::times()))],
'delivery_at' => ['nullable', 'string', 'max:255', 'date'], 'delivery_at' => ['nullable', 'string', 'max:255', 'date'],
'region' => ['required', 'string', 'max:255', Rule::in(array_keys(Region::values()))], 'region' => ['required', 'string', 'max:255', Rule::in(array_keys(Region::values()))],
'province_id' => ['nullable', ], 'province_id' => ['nullable'],
'source' => ['nullable', 'string', 'in:site,mobile_app'], 'source' => ['nullable', 'string', 'in:site,mobile_app'],

View File

@@ -2,7 +2,6 @@
namespace App\Http\Resources\Api\V1\Order; namespace App\Http\Resources\Api\V1\Order;
use App\Models\Ecommerce\Product\Order\Shipping\OrderShipping;
use App\Models\Ecommerce\Product\Order\Status\OrderStatus; use App\Models\Ecommerce\Product\Order\Status\OrderStatus;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;

View File

@@ -2,7 +2,6 @@
namespace App\Http\Resources\Api\V1\Vendor\Order; namespace App\Http\Resources\Api\V1\Vendor\Order;
use App\Models\Ecommerce\Product\Order\Shipping\OrderShipping;
use App\Models\Ecommerce\Product\Order\Status\OrderStatus; use App\Models\Ecommerce\Product\Order\Status\OrderStatus;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;

View File

@@ -2,7 +2,6 @@
namespace App\Http\Resources\Api\V1\Vendor\Order; namespace App\Http\Resources\Api\V1\Vendor\Order;
use App\Models\Ecommerce\Product\Order\Shipping\OrderShipping;
use App\Models\Ecommerce\Product\Order\Status\OrderStatus; use App\Models\Ecommerce\Product\Order\Status\OrderStatus;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Models\Chat;
use App\Models\User;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Conversation extends Model
{
use HasFactory;
public function users()
{
return $this->belongsToMany(User::class);
}
public function messages()
{
return $this->hasMany(Message::class);
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Models\Chat;
use App\Models\User;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Message extends Model
{
use HasFactory;
public function user()
{
return $this->belongsTo(User::class);
}
}

View File

@@ -169,7 +169,7 @@ class Channel extends Model implements HasMedia, Sortable
/** /**
* Channels inventories * Channels inventories
* *
* @return \Illuminate\Database\Eloquent\Relations\HasMany * @return HasMany
*/ */
// public function inventories(): HasMany // public function inventories(): HasMany
// { // {

View File

@@ -5,6 +5,7 @@ namespace App\Models\Ecommerce\Product\Order;
use App\Models\Ecommerce\Product\Order\Concerns\HasPayments; use App\Models\Ecommerce\Product\Order\Concerns\HasPayments;
use App\Models\Ecommerce\Product\Order\Concerns\HasShipping; use App\Models\Ecommerce\Product\Order\Concerns\HasShipping;
use App\Models\Ecommerce\Product\Order\Concerns\HasStatus; use App\Models\Ecommerce\Product\Order\Concerns\HasStatus;
use App\Models\Ecommerce\Product\Order\Shipping\OrderShippingMethod;
use App\Models\System\Settings\Location\Province; use App\Models\System\Settings\Location\Province;
use App\Models\System\Settings\Payments\PaymentType; use App\Models\System\Settings\Payments\PaymentType;
use App\Models\User; use App\Models\User;
@@ -12,7 +13,6 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
use App\Models\Ecommerce\Product\Order\Shipping\OrderShippingMethod;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
class Order extends Model class Order extends Model

View File

@@ -40,7 +40,7 @@ class LegalPage extends Model
* *
* @param mixed $value * @param mixed $value
* @param string|null $field * @param string|null $field
* @return \Illuminate\Database\Eloquent\Model|null * @return Model|null
*/ */
public function resolveRouteBinding($value, $field = null) public function resolveRouteBinding($value, $field = null)
{ {

View File

@@ -23,7 +23,7 @@ class GlobalOrderResource extends Resource
/** /**
* The model the resource corresponds to. * The model the resource corresponds to.
* *
* @var class-string<\App\Modules\GlobalOrder\Models\GlobalOrder> * @var class-string<GlobalOrder>
*/ */
public static $model = GlobalOrder::class; public static $model = GlobalOrder::class;

View File

@@ -3,6 +3,7 @@
namespace App\Nova\Filters; namespace App\Nova\Filters;
use App\Models\System\Settings\OS; use App\Models\System\Settings\OS;
use Illuminate\Database\Eloquent\Builder;
use Laravel\Nova\Filters\Filter; use Laravel\Nova\Filters\Filter;
use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Http\Requests\NovaRequest;
@@ -18,9 +19,9 @@ class AppTypeFilter extends Filter
/** /**
* Apply the filter to the given query. * Apply the filter to the given query.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param Builder $query
* @param mixed $value * @param mixed $value
* @return \Illuminate\Database\Eloquent\Builder * @return Builder
*/ */
public function apply(NovaRequest $request, $query, $value) public function apply(NovaRequest $request, $query, $value)
{ {

View File

@@ -3,6 +3,7 @@
namespace App\Nova\Filters; namespace App\Nova\Filters;
use App\Models\System\Settings\Location\Region; use App\Models\System\Settings\Location\Region;
use Illuminate\Database\Eloquent\Builder;
use Laravel\Nova\Filters\Filter; use Laravel\Nova\Filters\Filter;
use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Http\Requests\NovaRequest;
@@ -26,9 +27,9 @@ class RegionFilter extends Filter
/** /**
* Apply the filter to the given query. * Apply the filter to the given query.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param Builder $query
* @param mixed $value * @param mixed $value
* @return \Illuminate\Database\Eloquent\Builder * @return Builder
*/ */
public function apply(NovaRequest $request, $query, $value) public function apply(NovaRequest $request, $query, $value)
{ {

View File

@@ -2,6 +2,7 @@
namespace App\Nova\Filters; namespace App\Nova\Filters;
use Illuminate\Database\Eloquent\Builder;
use Laravel\Nova\Filters\Filter; use Laravel\Nova\Filters\Filter;
use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Http\Requests\NovaRequest;
@@ -20,15 +21,15 @@ class ResourceLimitFilter extends Filter
public function __construct( public function __construct(
protected $resource protected $resource
) { ) {
//... // ...
} }
/** /**
* Apply the filter to the given query. * Apply the filter to the given query.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param Builder $query
* @param mixed $value * @param mixed $value
* @return \Illuminate\Database\Eloquent\Builder * @return Builder
*/ */
public function apply(NovaRequest $request, $query, $value) public function apply(NovaRequest $request, $query, $value)
{ {

View File

@@ -3,6 +3,7 @@
namespace App\Nova\Filters; namespace App\Nova\Filters;
use App\Models\Ecommerce\Product\Order\Status\OrderStatus; use App\Models\Ecommerce\Product\Order\Status\OrderStatus;
use Illuminate\Database\Eloquent\Builder;
use Laravel\Nova\Filters\Filter; use Laravel\Nova\Filters\Filter;
use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Http\Requests\NovaRequest;
@@ -26,9 +27,9 @@ class StatusFilter extends Filter
/** /**
* Apply the filter to the given query. * Apply the filter to the given query.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param Builder $query
* @param mixed $value * @param mixed $value
* @return \Illuminate\Database\Eloquent\Builder * @return Builder
*/ */
public function apply(NovaRequest $request, $query, $value) public function apply(NovaRequest $request, $query, $value)
{ {

View File

@@ -3,6 +3,7 @@
namespace App\Nova\Filters; namespace App\Nova\Filters;
use App\Models\System\Roles\Role; use App\Models\System\Roles\Role;
use Illuminate\Database\Eloquent\Builder;
use Laravel\Nova\Filters\Filter; use Laravel\Nova\Filters\Filter;
use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Http\Requests\NovaRequest;
@@ -26,9 +27,9 @@ class UserRoleFilter extends Filter
/** /**
* Apply the filter to the given query. * Apply the filter to the given query.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param Builder $query
* @param mixed $value * @param mixed $value
* @return \Illuminate\Database\Eloquent\Builder * @return Builder
*/ */
public function apply(NovaRequest $request, $query, $value) public function apply(NovaRequest $request, $query, $value)
{ {

View File

@@ -2,6 +2,7 @@
namespace App\Nova\Filters; namespace App\Nova\Filters;
use Illuminate\Database\Eloquent\Builder;
use Laravel\Nova\Filters\Filter; use Laravel\Nova\Filters\Filter;
use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Http\Requests\NovaRequest;
@@ -25,9 +26,9 @@ class VerifiedUsersFilter extends Filter
/** /**
* Apply the filter to the given query. * Apply the filter to the given query.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param Builder $query
* @param mixed $value * @param mixed $value
* @return \Illuminate\Database\Eloquent\Builder * @return Builder
*/ */
public function apply(NovaRequest $request, $query, $value) public function apply(NovaRequest $request, $query, $value)
{ {

View File

@@ -2,6 +2,7 @@
namespace App\Nova\Filters; namespace App\Nova\Filters;
use Illuminate\Database\Eloquent\Builder;
use Laravel\Nova\Filters\Filter; use Laravel\Nova\Filters\Filter;
use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Http\Requests\NovaRequest;
@@ -25,9 +26,9 @@ class VisableFilter extends Filter
/** /**
* Apply the filter to the given query. * Apply the filter to the given query.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param Builder $query
* @param mixed $value * @param mixed $value
* @return \Illuminate\Database\Eloquent\Builder * @return Builder
*/ */
public function apply(NovaRequest $request, $query, $value) public function apply(NovaRequest $request, $query, $value)
{ {

View File

@@ -3,6 +3,7 @@
namespace App\Nova\Lenses; namespace App\Nova\Lenses;
use Ebess\AdvancedNovaMediaLibrary\Fields\Images; use Ebess\AdvancedNovaMediaLibrary\Fields\Images;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Laravel\Nova\Fields\ID; use Laravel\Nova\Fields\ID;
use Laravel\Nova\Fields\Number; use Laravel\Nova\Fields\Number;
@@ -31,7 +32,7 @@ class MostSoldProducts extends Lens
/** /**
* Get the query builder / paginator for the lens. * Get the query builder / paginator for the lens.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param Builder $query
*/ */
public static function query(LensRequest $request, $query): mixed public static function query(LensRequest $request, $query): mixed
{ {

View File

@@ -5,6 +5,7 @@ namespace App\Nova;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Http\Requests\NovaRequest;
use Laravel\Nova\Resource as NovaResource; use Laravel\Nova\Resource as NovaResource;
use Laravel\Scout\Builder;
abstract class Resource extends NovaResource abstract class Resource extends NovaResource
{ {
@@ -46,8 +47,8 @@ abstract class Resource extends NovaResource
/** /**
* Build a Scout search query for the given resource. * Build a Scout search query for the given resource.
* *
* @param \Laravel\Scout\Builder $query * @param Builder $query
* @return \Laravel\Scout\Builder * @return Builder
*/ */
public static function scoutQuery(NovaRequest $request, $query) public static function scoutQuery(NovaRequest $request, $query)
{ {

View File

@@ -28,7 +28,7 @@ class Banner extends Resource
/** /**
* The model the resource corresponds to. * The model the resource corresponds to.
* *
* @var class-string<\App\Models\CMS\Media\Banner> * @var class-string<BannerModel>
*/ */
public static $model = BannerModel::class; public static $model = BannerModel::class;
@@ -156,8 +156,8 @@ class Banner extends Resource
public function filters(NovaRequest $request): array public function filters(NovaRequest $request): array
{ {
return [ return [
new VisableFilter(), new VisableFilter,
new AppTypeFilter(), new AppTypeFilter,
]; ];
} }

View File

@@ -163,8 +163,8 @@ class Carousel extends Resource
public function filters(NovaRequest $request) public function filters(NovaRequest $request)
{ {
return [ return [
new VisableFilter(), new VisableFilter,
new AppTypeFilter(), new AppTypeFilter,
]; ];
} }

View File

@@ -7,6 +7,7 @@ use App\Nova\Resource;
use Laravel\Nova\Fields\ID; use Laravel\Nova\Fields\ID;
use Laravel\Nova\Fields\Text; use Laravel\Nova\Fields\Text;
use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Http\Requests\NovaRequest;
use Laravel\Nova\URL;
class AttributeValue extends Resource class AttributeValue extends Resource
{ {
@@ -53,7 +54,7 @@ class AttributeValue extends Resource
* Return the location to redirect the user after creation. * Return the location to redirect the user after creation.
* *
* @param \Laravel\Nova\Resource $resource * @param \Laravel\Nova\Resource $resource
* @return \Laravel\Nova\URL|string * @return URL|string
*/ */
public static function redirectAfterCreate(NovaRequest $request, $resource): string public static function redirectAfterCreate(NovaRequest $request, $resource): string
{ {
@@ -64,7 +65,7 @@ class AttributeValue extends Resource
* Return the location to redirect the user after update. * Return the location to redirect the user after update.
* *
* @param \Laravel\Nova\Resource $resource * @param \Laravel\Nova\Resource $resource
* @return \Laravel\Nova\URL|string * @return URL|string
*/ */
public static function redirectAfterUpdate(NovaRequest $request, $resource) public static function redirectAfterUpdate(NovaRequest $request, $resource)
{ {

View File

@@ -7,6 +7,7 @@ use App\Nova\Filters\VisableFilter;
use App\Nova\Resource; use App\Nova\Resource;
use App\Nova\Resources\Ecommerce\Product\Product\Product; use App\Nova\Resources\Ecommerce\Product\Product\Product;
use Ebess\AdvancedNovaMediaLibrary\Fields\Images; use Ebess\AdvancedNovaMediaLibrary\Fields\Images;
use Illuminate\Database\Eloquent\Builder;
use Laravel\Nova\Fields\Boolean; use Laravel\Nova\Fields\Boolean;
use Laravel\Nova\Fields\HasMany; use Laravel\Nova\Fields\HasMany;
use Laravel\Nova\Fields\ID; use Laravel\Nova\Fields\ID;
@@ -80,7 +81,7 @@ class Brand extends Resource
/** /**
* Build an "index" query for the given resource. * Build an "index" query for the given resource.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param Builder $query
*/ */
public static function indexQuery(NovaRequest $request, $query) public static function indexQuery(NovaRequest $request, $query)
{ {

View File

@@ -2,6 +2,7 @@
namespace App\Nova\Resources\Ecommerce\Product\Category\Filters; namespace App\Nova\Resources\Ecommerce\Product\Category\Filters;
use Illuminate\Database\Eloquent\Builder;
use Laravel\Nova\Filters\Filter; use Laravel\Nova\Filters\Filter;
use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Http\Requests\NovaRequest;
@@ -17,9 +18,9 @@ class Level extends Filter
/** /**
* Apply the filter to the given query. * Apply the filter to the given query.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param Builder $query
* @param mixed $value * @param mixed $value
* @return \Illuminate\Database\Eloquent\Builder * @return Builder
*/ */
public function apply(NovaRequest $request, $query, $value) public function apply(NovaRequest $request, $query, $value)
{ {

View File

@@ -2,6 +2,7 @@
namespace App\Nova\Resources\Ecommerce\Product\Category\Filters; namespace App\Nova\Resources\Ecommerce\Product\Category\Filters;
use Illuminate\Database\Eloquent\Builder;
use Laravel\Nova\Filters\BooleanFilter; use Laravel\Nova\Filters\BooleanFilter;
use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Http\Requests\NovaRequest;
@@ -10,9 +11,9 @@ class RelatedToMarket extends BooleanFilter
/** /**
* Apply the filter to the given query. * Apply the filter to the given query.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param Builder $query
* @param mixed $value * @param mixed $value
* @return \Illuminate\Database\Eloquent\Builder * @return Builder
*/ */
public function apply(NovaRequest $request, $query, $value) public function apply(NovaRequest $request, $query, $value)
{ {

View File

@@ -9,6 +9,7 @@ use App\Nova\Permissions\NovaPermission;
use App\Nova\Resource; use App\Nova\Resource;
use App\Nova\Resources\Ecommerce\Channel\Channel; use App\Nova\Resources\Ecommerce\Channel\Channel;
use App\Nova\Resources\Ecommerce\Product\Inventory\Product\ProductResource; use App\Nova\Resources\Ecommerce\Product\Inventory\Product\ProductResource;
use Illuminate\Database\Eloquent\Builder;
use Laravel\Nova\Fields\BelongsTo; use Laravel\Nova\Fields\BelongsTo;
use Laravel\Nova\Fields\BelongsToMany; use Laravel\Nova\Fields\BelongsToMany;
use Laravel\Nova\Fields\Boolean; use Laravel\Nova\Fields\Boolean;
@@ -70,8 +71,8 @@ class Inventory extends Resource
/** /**
* Build an "index" query for the given resource. * Build an "index" query for the given resource.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param Builder $query
* @return \Illuminate\Database\Eloquent\Builder * @return Builder
*/ */
public static function indexQuery(NovaRequest $request, $query) public static function indexQuery(NovaRequest $request, $query)
{ {

View File

@@ -2,21 +2,24 @@
namespace App\Nova\Resources\Ecommerce\Product\Inventory; namespace App\Nova\Resources\Ecommerce\Product\Inventory;
use App\Models\Ecommerce\Product\Inventory\InventoryHistory;
use App\Models\Ecommerce\Product\Inventory\InventoryHistoryItem; use App\Models\Ecommerce\Product\Inventory\InventoryHistoryItem;
use App\Nova\Resource; use App\Nova\Resource;
use App\Nova\Resources\Ecommerce\Product\Product\Product; use App\Nova\Resources\Ecommerce\Product\Product\Product;
use Illuminate\Database\Eloquent\Builder;
use Laravel\Nova\Fields\BelongsTo; use Laravel\Nova\Fields\BelongsTo;
use Laravel\Nova\Fields\ID; use Laravel\Nova\Fields\ID;
use Laravel\Nova\Fields\Number; use Laravel\Nova\Fields\Number;
use Laravel\Nova\Fields\Text; use Laravel\Nova\Fields\Text;
use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Http\Requests\NovaRequest;
use Laravel\Nova\URL;
class InventoryHistoryItemResource extends Resource class InventoryHistoryItemResource extends Resource
{ {
/** /**
* The model the resource corresponds to. * The model the resource corresponds to.
* *
* @var class-string<\App\Models\Ecommerce\Product\Inventory\InventoryHistory> * @var class-string<InventoryHistory>
*/ */
public static $model = InventoryHistoryItem::class; public static $model = InventoryHistoryItem::class;
@@ -60,8 +63,8 @@ class InventoryHistoryItemResource extends Resource
/** /**
* Build an "index" query for the given resource. * Build an "index" query for the given resource.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param Builder $query
* @return \Illuminate\Database\Eloquent\Builder * @return Builder
*/ */
public static function indexQuery(NovaRequest $request, $query) public static function indexQuery(NovaRequest $request, $query)
{ {
@@ -109,7 +112,7 @@ class InventoryHistoryItemResource extends Resource
* Return the location to redirect the user after creation. * Return the location to redirect the user after creation.
* *
* @param \Laravel\Nova\Resource $resource * @param \Laravel\Nova\Resource $resource
* @return \Laravel\Nova\URL|string * @return URL|string
*/ */
public static function redirectAfterUpdate(NovaRequest $request, $resource): string public static function redirectAfterUpdate(NovaRequest $request, $resource): string
{ {

View File

@@ -2,21 +2,24 @@
namespace App\Nova\Resources\Ecommerce\Product\Inventory; namespace App\Nova\Resources\Ecommerce\Product\Inventory;
use App\Models\Ecommerce\Product\Inventory\InventoryHistory;
use App\Models\Ecommerce\Product\Inventory\InventoryHistoryRemovedItem; use App\Models\Ecommerce\Product\Inventory\InventoryHistoryRemovedItem;
use App\Nova\Resource; use App\Nova\Resource;
use App\Nova\Resources\Ecommerce\Product\Product\Product; use App\Nova\Resources\Ecommerce\Product\Product\Product;
use Illuminate\Database\Eloquent\Builder;
use Laravel\Nova\Fields\BelongsTo; use Laravel\Nova\Fields\BelongsTo;
use Laravel\Nova\Fields\ID; use Laravel\Nova\Fields\ID;
use Laravel\Nova\Fields\Number; use Laravel\Nova\Fields\Number;
use Laravel\Nova\Fields\Text; use Laravel\Nova\Fields\Text;
use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Http\Requests\NovaRequest;
use Laravel\Nova\URL;
class InventoryHistoryRemovedItemResource extends Resource class InventoryHistoryRemovedItemResource extends Resource
{ {
/** /**
* The model the resource corresponds to. * The model the resource corresponds to.
* *
* @var class-string<\App\Models\Ecommerce\Product\Inventory\InventoryHistory> * @var class-string<InventoryHistory>
*/ */
public static $model = InventoryHistoryRemovedItem::class; public static $model = InventoryHistoryRemovedItem::class;
@@ -60,8 +63,8 @@ class InventoryHistoryRemovedItemResource extends Resource
/** /**
* Build an "index" query for the given resource. * Build an "index" query for the given resource.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param Builder $query
* @return \Illuminate\Database\Eloquent\Builder * @return Builder
*/ */
public static function indexQuery(NovaRequest $request, $query) public static function indexQuery(NovaRequest $request, $query)
{ {
@@ -109,7 +112,7 @@ class InventoryHistoryRemovedItemResource extends Resource
* Return the location to redirect the user after creation. * Return the location to redirect the user after creation.
* *
* @param \Laravel\Nova\Resource $resource * @param \Laravel\Nova\Resource $resource
* @return \Laravel\Nova\URL|string * @return URL|string
*/ */
public static function redirectAfterUpdate(NovaRequest $request, $resource): string public static function redirectAfterUpdate(NovaRequest $request, $resource): string
{ {

View File

@@ -7,6 +7,7 @@ use App\Models\Ecommerce\Product\Product\Product;
use App\Nova\Repeater\InventoryHistoryItemRepeater; use App\Nova\Repeater\InventoryHistoryItemRepeater;
use App\Nova\Resource; use App\Nova\Resource;
use App\Nova\Resources\Ecommerce\Channel\Channel; use App\Nova\Resources\Ecommerce\Channel\Channel;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
@@ -17,13 +18,14 @@ use Laravel\Nova\Fields\ID;
use Laravel\Nova\Fields\Repeater; use Laravel\Nova\Fields\Repeater;
use Laravel\Nova\Fields\Text; use Laravel\Nova\Fields\Text;
use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Http\Requests\NovaRequest;
use Laravel\Nova\URL;
class InventoryHistoryRemovedResource extends Resource class InventoryHistoryRemovedResource extends Resource
{ {
/** /**
* The model the resource corresponds to. * The model the resource corresponds to.
* *
* @var class-string<\App\Models\Ecommerce\Product\Inventory\InventoryHistoryRemoved> * @var class-string<InventoryHistoryRemoved>
*/ */
public static $model = InventoryHistoryRemoved::class; public static $model = InventoryHistoryRemoved::class;
@@ -67,8 +69,8 @@ class InventoryHistoryRemovedResource extends Resource
/** /**
* Build an "index" query for the given resource. * Build an "index" query for the given resource.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param Builder $query
* @return \Illuminate\Database\Eloquent\Builder * @return Builder
*/ */
public static function indexQuery(NovaRequest $request, $query) public static function indexQuery(NovaRequest $request, $query)
{ {
@@ -85,7 +87,7 @@ class InventoryHistoryRemovedResource extends Resource
* Return the location to redirect the user after creation. * Return the location to redirect the user after creation.
* *
* @param \Laravel\Nova\Resource $resource * @param \Laravel\Nova\Resource $resource
* @return \Laravel\Nova\URL|string * @return URL|string
*/ */
public static function redirectAfterCreate(NovaRequest $request, $resource): string public static function redirectAfterCreate(NovaRequest $request, $resource): string
{ {

View File

@@ -7,6 +7,7 @@ use App\Models\Ecommerce\Product\Product\Product;
use App\Nova\Repeater\InventoryHistoryItemRepeater; use App\Nova\Repeater\InventoryHistoryItemRepeater;
use App\Nova\Resource; use App\Nova\Resource;
use App\Nova\Resources\Ecommerce\Channel\Channel; use App\Nova\Resources\Ecommerce\Channel\Channel;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
@@ -17,13 +18,14 @@ use Laravel\Nova\Fields\ID;
use Laravel\Nova\Fields\Repeater; use Laravel\Nova\Fields\Repeater;
use Laravel\Nova\Fields\Text; use Laravel\Nova\Fields\Text;
use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Http\Requests\NovaRequest;
use Laravel\Nova\URL;
class InventoryHistoryResource extends Resource class InventoryHistoryResource extends Resource
{ {
/** /**
* The model the resource corresponds to. * The model the resource corresponds to.
* *
* @var class-string<\App\Models\Ecommerce\Product\Inventory\InventoryHistory> * @var class-string<InventoryHistory>
*/ */
public static $model = InventoryHistory::class; public static $model = InventoryHistory::class;
@@ -67,8 +69,8 @@ class InventoryHistoryResource extends Resource
/** /**
* Build an "index" query for the given resource. * Build an "index" query for the given resource.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param Builder $query
* @return \Illuminate\Database\Eloquent\Builder * @return Builder
*/ */
public static function indexQuery(NovaRequest $request, $query) public static function indexQuery(NovaRequest $request, $query)
{ {
@@ -85,7 +87,7 @@ class InventoryHistoryResource extends Resource
* Return the location to redirect the user after creation. * Return the location to redirect the user after creation.
* *
* @param \Laravel\Nova\Resource $resource * @param \Laravel\Nova\Resource $resource
* @return \Laravel\Nova\URL|string * @return URL|string
*/ */
public static function redirectAfterCreate(NovaRequest $request, $resource): string public static function redirectAfterCreate(NovaRequest $request, $resource): string
{ {

View File

@@ -67,7 +67,7 @@ class ProductResource extends Resource
/** /**
* Build an "index" query for the given resource. * Build an "index" query for the given resource.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param Builder $query
*/ */
public static function indexQuery(NovaRequest $request, $query): Builder public static function indexQuery(NovaRequest $request, $query): Builder
{ {

View File

@@ -11,7 +11,9 @@ use Illuminate\Support\Str;
use Laravel\Nova\Actions\Action; use Laravel\Nova\Actions\Action;
use Laravel\Nova\Fields\ActionFields; use Laravel\Nova\Fields\ActionFields;
use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Http\Requests\NovaRequest;
use PhpOffice\PhpWord\Element\Table;
use PhpOffice\PhpWord\SimpleType\TblWidth; use PhpOffice\PhpWord\SimpleType\TblWidth;
use PhpOffice\PhpWord\TemplateProcessor;
class ExportEvidenceForProducts extends Action class ExportEvidenceForProducts extends Action
{ {
@@ -52,13 +54,13 @@ class ExportEvidenceForProducts extends Action
protected function generatePriceNegotiationDocument(User $user, Payout $payout, Collection $orderItems, string $folder): void protected function generatePriceNegotiationDocument(User $user, Payout $payout, Collection $orderItems, string $folder): void
{ {
$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor(resource_path('docs/order/evidence-price-negotiation.docx')); $templateProcessor = new TemplateProcessor(resource_path('docs/order/evidence-price-negotiation.docx'));
$templateProcessor->setValues([ $templateProcessor->setValues([
'year' => date('Y'), 'year' => date('Y'),
'product_owner' => $user->companyName(), 'product_owner' => $user->companyName(),
]); ]);
$table = new \PhpOffice\PhpWord\Element\Table([ $table = new Table([
'borderSize' => 2, 'borderSize' => 2,
'borderColor' => 'black', 'borderColor' => 'black',
'width' => 5000, 'width' => 5000,
@@ -101,14 +103,14 @@ class ExportEvidenceForProducts extends Action
public function generateEvidenceForProductsDocument(User $user, Payout $payout, Collection $orderItems, string $folder): void public function generateEvidenceForProductsDocument(User $user, Payout $payout, Collection $orderItems, string $folder): void
{ {
$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor(resource_path('docs/order/evidence.docx')); $templateProcessor = new TemplateProcessor(resource_path('docs/order/evidence.docx'));
$templateProcessor->setValues([ $templateProcessor->setValues([
'date' => date('Y'), 'date' => date('Y'),
'o_date' => $payout->created_at->format('d.m.Y'), 'o_date' => $payout->created_at->format('d.m.Y'),
'product_owner' => $user->companyName(), 'product_owner' => $user->companyName(),
]); ]);
$table = new \PhpOffice\PhpWord\Element\Table([ $table = new Table([
'borderSize' => 2, 'borderSize' => 2,
'borderColor' => 'black', 'borderColor' => 'black',
'width' => 5000, 'width' => 5000,

View File

@@ -4,12 +4,12 @@ namespace App\Nova\Resources\Ecommerce\Product\Order\Concerns;
use App\Models\Ecommerce\Product\Order\Payment\OrderPayment; use App\Models\Ecommerce\Product\Order\Payment\OrderPayment;
use App\Models\Ecommerce\Product\Order\Shipping\OrderShipping; use App\Models\Ecommerce\Product\Order\Shipping\OrderShipping;
use App\Models\Ecommerce\Product\Order\Shipping\OrderShippingMethod as OrderShippingMethodModel;
use App\Models\Ecommerce\Product\Order\Status\OrderStatus; use App\Models\Ecommerce\Product\Order\Status\OrderStatus;
use App\Models\System\Settings\Location\Province; use App\Models\System\Settings\Location\Province;
use App\Models\System\Settings\Location\Region; use App\Models\System\Settings\Location\Region;
use App\Models\System\Settings\OS; use App\Models\System\Settings\OS;
use App\Nova\Resources\Ecommerce\Product\Order\OrderShippingMethod; use App\Nova\Resources\Ecommerce\Product\Order\OrderShippingMethod;
use App\Models\Ecommerce\Product\Order\Shipping\OrderShippingMethod as OrderShippingMethodModel;
use App\Repositories\Ecommerce\Order\NovaOrderRepository; use App\Repositories\Ecommerce\Order\NovaOrderRepository;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Laravel\Nova\Fields\BelongsTo; use Laravel\Nova\Fields\BelongsTo;

View File

@@ -4,11 +4,11 @@ namespace App\Nova\Resources\Ecommerce\Product\Order\Concerns;
use App\Models\Ecommerce\Product\Order\Payment\OrderPayment; use App\Models\Ecommerce\Product\Order\Payment\OrderPayment;
use App\Models\Ecommerce\Product\Order\Shipping\OrderShipping; use App\Models\Ecommerce\Product\Order\Shipping\OrderShipping;
use App\Models\Ecommerce\Product\Order\Shipping\OrderShippingMethod as OrderShippingMethodModel;
use App\Models\Ecommerce\Product\Order\Status\OrderStatus; use App\Models\Ecommerce\Product\Order\Status\OrderStatus;
use App\Models\System\Settings\Location\Province; use App\Models\System\Settings\Location\Province;
use App\Models\System\Settings\Location\Region; use App\Models\System\Settings\Location\Region;
use App\Nova\Resources\Ecommerce\Product\Order\OrderShippingMethod; use App\Nova\Resources\Ecommerce\Product\Order\OrderShippingMethod;
use App\Models\Ecommerce\Product\Order\Shipping\OrderShippingMethod as OrderShippingMethodModel;
use App\Repositories\Ecommerce\Order\NovaOrderRepository; use App\Repositories\Ecommerce\Order\NovaOrderRepository;
use Laravel\Nova\Fields\BelongsTo; use Laravel\Nova\Fields\BelongsTo;
use Laravel\Nova\Fields\Date; use Laravel\Nova\Fields\Date;

View File

@@ -33,7 +33,7 @@ class OrdersPerStatus extends Partition
/** /**
* Determine the amount of time the results of the metric should be cached. * Determine the amount of time the results of the metric should be cached.
* *
* @return \DateTimeInterface|\DateInterval|float|int|null * @return DateTimeInterface|\DateInterval|float|int|null
*/ */
public function cacheFor(): DateTimeInterface|DateInterval|float|int|null public function cacheFor(): DateTimeInterface|DateInterval|float|int|null
{ {

View File

@@ -38,7 +38,7 @@ class ProductSoldPerDay extends Trend
/** /**
* Determine the amount of time the results of the metric should be cached. * Determine the amount of time the results of the metric should be cached.
* *
* @return \DateTimeInterface|\DateInterval|float|int|null * @return DateTimeInterface|\DateInterval|float|int|null
*/ */
public function cacheFor(): DateTimeInterface|DateInterval|float|int|null public function cacheFor(): DateTimeInterface|DateInterval|float|int|null
{ {

View File

@@ -15,6 +15,7 @@ use App\Nova\Resources\Ecommerce\Product\Order\Concerns\OrderFieldsForIndex;
use App\Nova\Resources\Ecommerce\Product\Order\Concerns\OrderFieldsForUpdate; use App\Nova\Resources\Ecommerce\Product\Order\Concerns\OrderFieldsForUpdate;
use App\Repositories\CMS\Icon\IconRepository; use App\Repositories\CMS\Icon\IconRepository;
use DigitalCreative\ColumnToggler\ColumnTogglerTrait; use DigitalCreative\ColumnToggler\ColumnTogglerTrait;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Laravel\Nova\Fields\HasMany; use Laravel\Nova\Fields\HasMany;
@@ -95,8 +96,8 @@ class Order extends Resource
/** /**
* Build an "index" query for the given resource. * Build an "index" query for the given resource.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param Builder $query
* @return \Illuminate\Database\Eloquent\Builder * @return Builder
*/ */
public static function indexQuery(NovaRequest $request, $query) public static function indexQuery(NovaRequest $request, $query)
{ {

View File

@@ -13,6 +13,7 @@ use Laravel\Nova\Fields\BelongsTo;
use Laravel\Nova\Fields\ID; use Laravel\Nova\Fields\ID;
use Laravel\Nova\Fields\Text; use Laravel\Nova\Fields\Text;
use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Http\Requests\NovaRequest;
use Laravel\Nova\URL;
class OrderItem extends Resource class OrderItem extends Resource
{ {
@@ -56,7 +57,7 @@ class OrderItem extends Resource
/** /**
* Build an "index" query for the given resource. * Build an "index" query for the given resource.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param Builder $query
*/ */
public static function indexQuery(NovaRequest $request, $query): Builder public static function indexQuery(NovaRequest $request, $query): Builder
{ {
@@ -100,7 +101,7 @@ class OrderItem extends Resource
* Return the location to redirect the user after creation. * Return the location to redirect the user after creation.
* *
* @param \Laravel\Nova\Resource $resource * @param \Laravel\Nova\Resource $resource
* @return \Laravel\Nova\URL|string * @return URL|string
*/ */
public static function redirectAfterCreate(NovaRequest $request, $resource) public static function redirectAfterCreate(NovaRequest $request, $resource)
{ {
@@ -111,7 +112,7 @@ class OrderItem extends Resource
* Return the location to redirect the user after update. * Return the location to redirect the user after update.
* *
* @param \Laravel\Nova\Resource $resource * @param \Laravel\Nova\Resource $resource
* @return \Laravel\Nova\URL|string * @return URL|string
*/ */
public static function redirectAfterUpdate(NovaRequest $request, $resource) public static function redirectAfterUpdate(NovaRequest $request, $resource)
{ {

View File

@@ -2,6 +2,7 @@
namespace App\Nova\Resources\Ecommerce\Product\Product\Filters; namespace App\Nova\Resources\Ecommerce\Product\Product\Filters;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Laravel\Nova\Filters\Filter; use Laravel\Nova\Filters\Filter;
@@ -27,9 +28,9 @@ class ProductEntrepreneurFilter extends Filter
/** /**
* Apply the filter to the given query. * Apply the filter to the given query.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param Builder $query
* @param mixed $value * @param mixed $value
* @return \Illuminate\Database\Eloquent\Builder * @return Builder
*/ */
public function apply(NovaRequest $request, $query, $value) public function apply(NovaRequest $request, $query, $value)
{ {

View File

@@ -105,7 +105,7 @@ class Product extends Resource
/** /**
* Build an "index" query for the given resource. * Build an "index" query for the given resource.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param Builder $query
*/ */
public static function indexQuery(NovaRequest $request, $query): Builder public static function indexQuery(NovaRequest $request, $query): Builder
{ {

View File

@@ -14,6 +14,7 @@ use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Laravel\Nova\Fields\ID; use Laravel\Nova\Fields\ID;
use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Http\Requests\NovaRequest;
use Laravel\Nova\URL;
use ShuvroRoy\NovaTabs\Traits\HasTabs; use ShuvroRoy\NovaTabs\Traits\HasTabs;
class ProductVariant extends Resource class ProductVariant extends Resource
@@ -75,7 +76,7 @@ class ProductVariant extends Resource
public static function indexQuery(NovaRequest $request, $query) public static function indexQuery(NovaRequest $request, $query)
{ {
if (Validator::make($request->all(), [ if (Validator::make($request->all(), [
'ids' => ['required', 'string', new CommaSeparatedIntegers()], 'ids' => ['required', 'string', new CommaSeparatedIntegers],
])->passes()) { ])->passes()) {
$query->whereIntegerInRaw('id', explode(',', $request->ids)); $query->whereIntegerInRaw('id', explode(',', $request->ids));
@@ -157,7 +158,7 @@ class ProductVariant extends Resource
* Return the location to redirect the user after creation. * Return the location to redirect the user after creation.
* *
* @param \Laravel\Nova\Resource $resource * @param \Laravel\Nova\Resource $resource
* @return \Laravel\Nova\URL|string * @return URL|string
*/ */
public static function redirectAfterCreate(NovaRequest $request, $resource) public static function redirectAfterCreate(NovaRequest $request, $resource)
{ {
@@ -168,7 +169,7 @@ class ProductVariant extends Resource
* Return the location to redirect the user after update. * Return the location to redirect the user after update.
* *
* @param \Laravel\Nova\Resource $resource * @param \Laravel\Nova\Resource $resource
* @return \Laravel\Nova\URL|string * @return URL|string
*/ */
public static function redirectAfterUpdate(NovaRequest $request, $resource) public static function redirectAfterUpdate(NovaRequest $request, $resource)
{ {

View File

@@ -3,6 +3,7 @@
namespace App\Nova\Resources\Post\PostBranch\Filters; namespace App\Nova\Resources\Post\PostBranch\Filters;
use App\Models\System\Settings\Location\Region; use App\Models\System\Settings\Location\Region;
use Illuminate\Database\Eloquent\Builder;
use Laravel\Nova\Filters\Filter; use Laravel\Nova\Filters\Filter;
use Laravel\Nova\Http\Requests\NovaRequest; use Laravel\Nova\Http\Requests\NovaRequest;
@@ -18,9 +19,9 @@ class RegionFilter extends Filter
/** /**
* Apply the filter to the given query. * Apply the filter to the given query.
* *
* @param \Illuminate\Database\Eloquent\Builder $query * @param Builder $query
* @param mixed $value * @param mixed $value
* @return \Illuminate\Database\Eloquent\Builder * @return Builder
*/ */
public function apply(NovaRequest $request, $query, $value) public function apply(NovaRequest $request, $query, $value)
{ {

View File

@@ -118,7 +118,7 @@ class PostBranch extends Resource
public function filters(NovaRequest $request): array public function filters(NovaRequest $request): array
{ {
return [ return [
new Filters\RegionFilter(), new Filters\RegionFilter,
]; ];
} }
} }

Some files were not shown because too many files have changed in this diff Show More