sarga/packages/Sarga/API/Http/Controllers/Orders.php

97 lines
3.0 KiB
PHP
Raw Normal View History

2022-03-09 10:39:22 +00:00
<?php
namespace Sarga\API\Http\Controllers;
2022-12-05 07:50:28 +00:00
use Illuminate\Http\Request;
2022-07-06 11:45:35 +00:00
use Illuminate\Support\Facades\Event;
2022-03-10 07:59:50 +00:00
use Sarga\API\Http\Resources\Customer\OrderResource;
2022-03-20 12:54:55 +00:00
use Sarga\Shop\Repositories\OrderItemRepository;
use Sarga\Shop\Repositories\OrderRepository;
2022-03-09 10:39:22 +00:00
use Webkul\RestApi\Http\Controllers\V1\Shop\Customer\OrderController;
2022-03-10 07:59:50 +00:00
2022-03-09 10:39:22 +00:00
class Orders extends OrderController
{
2022-11-05 06:27:15 +00:00
protected $requestException = ['page', 'limit', 'pagination', 'sort', 'order', 'token','locale','currency'];
2022-04-15 10:24:28 +00:00
public function __construct(protected OrderRepository $orderRepository,
protected OrderItemRepository $orderItemRepository)
2022-03-20 12:54:55 +00:00
{
}
2022-03-09 10:39:22 +00:00
/**
* Resource class name.
*
* @return string
*/
public function resource()
{
return OrderResource::class;
}
2022-03-14 10:38:15 +00:00
2022-03-20 12:54:55 +00:00
public function cancelItem($order_id,$item_id){
$order = request()->user()->all_orders()->findOrFail($order_id);
$orderItem = $this->orderItemRepository->with('order')
->findOrFail($item_id);
2022-07-05 09:44:54 +00:00
if($order->shipping_amount>0){
$order = $this->orderRepository->calculateShipping($order,$orderItem);
}
2022-03-20 12:54:55 +00:00
if($this->orderItemRepository->cancel($orderItem))
{
$order = $this->orderRepository->updateOrderStatus($order);
2022-07-05 09:44:54 +00:00
$order = $this->orderRepository->calculateTotals($order);
2022-03-14 10:38:15 +00:00
2022-07-06 11:45:35 +00:00
Event::dispatch('sales.order.update-status.item', $order);
2022-03-20 12:54:55 +00:00
return response(['data'=>[
'order' => new OrderResource($order)],
2022-04-23 09:23:37 +00:00
'success' => true,
'message' => trans('admin::app.response.cancel-success', ['name' => 'Order Item'])
2022-03-20 12:54:55 +00:00
]);
}
else
{
return response([
'success'=>false,
'message'=>trans('admin::app.response.cancel-error', ['name' => 'Order Item'])
]);
}
2022-03-14 10:38:15 +00:00
}
2022-12-05 07:50:28 +00:00
/**
* Returns a listing of the resource.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function allResources(Request $request)
{
$query = $this->getRepositoryInstance()->scopeQuery(function ($query) use ($request) {
if ($this->isAuthorized()) {
$query = $query->where('customer_id', $request->user()->id);
}
foreach ($request->except($this->requestException) as $input => $value) {
$query = $query->whereIn($input, array_map('trim', explode(',', $value)));
}
if ($sort = $request->input('sort')) {
$query = $query->orderBy($sort, $request->input('order') ?? 'desc');
} else {
$query = $query->orderBy('id', 'desc');
}
return $query;
});
if (is_null($request->input('pagination')) || $request->input('pagination')) {
$results = $query->paginate($request->input('limit') ?? 10);
} else {
$results = $query->get();
}
return $this->getResourceCollection($results);
}
2022-03-09 10:39:22 +00:00
}