Files
elcaribe/app/Http/Controllers/Api/V2/Seller/SellerAuctionProductController.php
2023-08-07 15:52:04 -04:00

101 lines
3.2 KiB
PHP

<?php
namespace App\Http\Controllers\Api\V2\Seller;
use App\Http\Controllers\Api\V2\Controller;
use App\Http\Resources\V2\Seller\AuctionProductBidCollection;
use App\Http\Resources\V2\Seller\AuctionProductCollection;
use App\Http\Resources\V2\Seller\AuctionProductDetailsResource;
use App\Http\Resources\V2\Seller\OrderCollection;
use App\Models\AuctionProductBid;
use App\Models\Order;
use Illuminate\Http\Request;
use App\Models\Product;
use App\Services\AuctionService;
use Auth;
use DB;
class SellerAuctionProductController extends Controller
{
public function index()
{
$products = [];
if (get_setting('seller_auction_product') == 0) {
$products = [];
} else {
$products = Product::where('auction_product', 1)->where('user_id', Auth::user()->id)->orderBy('created_at', 'desc');
}
return new AuctionProductCollection($products->paginate(10));
}
public function store(Request $request)
{
if (addon_is_activated('seller_subscription')) {
if (!seller_package_validity_check(auth()->user()->id)) {
return $this->failed(translate('Please upgrade your package.'));
}
}
(new AuctionService)->store($request);
return $this->success(translate('Auction Product has been inserted successfully'));
}
public function edit(Request $request, $id)
{
$product = Product::findOrFail($id);
$product->lang = $request->lang == null ? env("DEFAULT_LANGUAGE") : $request->lang;
return new AuctionProductDetailsResource($product);
}
public function update(Request $request, $id)
{
(new AuctionService)->update($request, $id);
return $this->success(translate('Auction Product has been updated successfully'));
}
public function destroy($id)
{
(new AuctionService)->destroy($id);
return $this->success(translate('Auction Product has been deleted successfully'));
}
public function productBids($id)
{
return new AuctionProductBidCollection(AuctionProductBid::latest()->where('product_id', $id)->paginate(15));
}
public function bidDestroy($id)
{
AuctionProductBid::destroy($id);
return $this->success(translate('Bid deleted successfully'));
}
public function getAuctionOrderList(Request $request)
{
$orders = Order::leftJoin('order_details', 'orders.id', '=', 'order_details.order_id')
->leftJoin('products', 'order_details.product_id', '=', 'products.id')
->where('orders.seller_id', auth()->user()->id)
->where('products.auction_product', '1')
->select("orders.*")
->orderBy('code', 'desc');
if ($request->payment_status != null) {
$orders = $orders->where('orders.payment_status', $request->payment_status);
}
if ($request->delivery_status != null) {
$orders = $orders->where('orders.delivery_status', $request->delivery_status);
}
if ($request->has('search')) {
$orders = $orders->where('code', 'like', '%' . $request->search . '%');
}
return new OrderCollection($orders->paginate(15));
}
}