Wishlist and cms api

This commit is contained in:
merdan 2022-03-25 16:13:59 +05:00
parent 1ea37e3c6e
commit e375dbcac7
6 changed files with 199 additions and 27 deletions

View File

@ -0,0 +1,40 @@
<?php
namespace Sarga\API\Http\Controllers;
use Sarga\API\Http\Resources\Core\CMSResource;
use Webkul\CMS\Repositories\CmsRepository;
use Webkul\RestApi\Http\Controllers\V1\Shop\Core\CoreController;
class CMSController extends CoreController
{
/**
* Resource class name.
*
* @return string
*/
public function resource()
{
return CMSResource::class;
}
/**
* Repository class name.
*
* @return string
*/
public function repository()
{
return CmsRepository::class;
}
/**
* Is resource authorized.
*
* @return bool
*/
public function isAuthorized()
{
return false;
}
}

View File

@ -36,10 +36,11 @@ class Categories extends Controller
}
public function filters($id){
$category = $this->categoryRepository->with(['filterableAttributes','brands'])->find($id);
$category = $this->categoryRepository->with(['filterableAttributes','brands','children'])->find($id);
if($category)
return response([
'subcategories' =>$category->children,
'attributes' =>Attribute::collection($category->filterableAttributes),
'brands' => Brand::collection($category->brands),
]);

View File

@ -0,0 +1,107 @@
<?php
namespace Sarga\API\Http\Controllers;
use Illuminate\Http\Request;
use Sarga\API\Http\Resources\Checkout\CartResource;
use Sarga\API\Http\Resources\Customer\WishListResource;
use Webkul\Checkout\Facades\Cart;
use Webkul\RestApi\Http\Controllers\V1\Shop\Customer\WishlistController;
class Wishlists extends WishlistController
{
/**
* Get customer wishlist.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$customer = $request->user();
return response([
'data' => WishListResource::collection($customer->wishlist_items()->get()),
]);
}
/**
* Add or remote item from wishlist.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function addOrRemove(Request $request, $id)
{
$customer = $request->user();
$wishlistItem = $this->wishlistRepository->findOneWhere([
'channel_id' => core()->getCurrentChannel()->id,
'product_id' => $id,
'customer_id' => $customer->id,
]);
if ($wishlistItem) {
$this->wishlistRepository->delete($wishlistItem->id);
return response([
'data' => null,
'message' => 'Item removed from wishlist successfully.',
]);
}
$wishlistItem = $this->wishlistRepository->create([
'channel_id' => core()->getCurrentChannel()->id,
'product_id' => $id,
'customer_id' => $customer->id,
]);
return response([
'data' => new WishListResource($wishlistItem),
'message' => __('rest-api::app.common-response.success.add', ['name' => 'Wishlist']),
]);
}
/**
* Move product from wishlist to cart.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function moveToCart(Request $request, $id)
{
$customer = $request->user();
$wishlistItem = $this->wishlistRepository->findOneWhere([
'channel_id' => core()->getCurrentChannel()->id,
'product_id' => $id,
'customer_id' => $customer->id,
]);
if ($wishlistItem->customer_id != $customer->user()->id) {
return response([
'message' => __('rest-api::app.common-response.error.security-warning'),
], 400);
}
$result = Cart::moveToCart($wishlistItem);
if ($result) {
Cart::collectTotals();
$cart = Cart::getCart();
return response([
'data' => $cart ? new CartResource($cart) : null,
'message' => __('rest-api::app.wishlist.moved'),
]);
}
return response([
'message' => __('rest-api::app.wishlist.option-missing'),
], 400);
}
}

View File

@ -0,0 +1,21 @@
<?php
namespace Sarga\API\Http\Resources\Core;
class CMSResource extends \Illuminate\Http\Resources\Json\JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request){
return [
'id' => $this->id,
'content' => $this->content,
'page_title' => $this->page_title,
'html_content' => $this->html_content,
];
}
}

View File

@ -0,0 +1,25 @@
<?php
namespace Sarga\API\Http\Resources\Customer;
use Illuminate\Http\Resources\Json\JsonResource;
use Sarga\API\Http\Resources\Catalog\Product;
class WishListResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'product' => new Product($this->product),
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
];
}
}

View File

@ -11,6 +11,7 @@ use Sarga\API\Http\Controllers\IntegrationController;
use Sarga\API\Http\Controllers\Orders;
use Sarga\API\Http\Controllers\Vendors;
use Sarga\API\Http\Controllers\Products;
use Sarga\API\Http\Controllers\Wishlists;
use Sarga\Shop\Repositories\CategoryRepository;
use Webkul\API\Http\Controllers\Shop\ResourceController;
use Webkul\Attribute\Repositories\AttributeOptionRepository;
@ -72,11 +73,9 @@ Route::group(['prefix' => 'api'], function () {
/**
* Customer wishlist routes.
*/
Route::get('wishlist', [WishlistController::class, 'index']);
Route::post('wishlist/{id}', [WishlistController::class, 'addOrRemove']);
Route::post('wishlist/{id}/move-to-cart', [WishlistController::class, 'moveToCart']);
Route::get('wishlist', [Wishlists::class, 'index']);
Route::post('wishlist/{id}', [Wishlists::class, 'addOrRemove']);
Route::post('wishlist/{id}/move-to-cart', [Wishlists::class, 'moveToCart']);
/**
* Recipients
*/
@ -89,55 +88,35 @@ Route::group(['prefix' => 'api'], function () {
* Customer cart routes.
*/
Route::get('cart', [Carts::class, 'get']);
Route::post('cart/add/{productId}', [Carts::class, 'add']);
Route::put('cart/update', [Carts::class, 'update']);
Route::delete('cart/remove/{cartItemId}', [Carts::class, 'removeItem']);
Route::delete('cart/empty', [Carts::class, 'empty']);
Route::post('cart/move-to-wishlist/{cartItemId}', [Carts::class, 'moveToWishlist']);
Route::post('cart/coupon', [Carts::class, 'applyCoupon']);
Route::delete('cart/coupon', [Carts::class, 'removeCoupon']);
/**
* Customer checkout routes.
*/
Route::get('checkout', [Checkout::class, 'index']);
Route::post('checkout/save-shipping', [Checkout::class, 'saveShipping']);
Route::post('checkout/save-payment', [Checkout::class, 'savePayment']);
Route::post('checkout/check-minimum-order', [Checkout::class, 'checkMinimumOrder']);
Route::post('checkout/save-order', [Checkout::class, 'saveOrder']);
/**
* Customer sale routes.
*/
Route::get('orders', [Orders::class, 'allResources']);
Route::get('orders/{id}', [Orders::class, 'getResource']);
Route::post('orders/{id}/cancel', [Orders::class, 'cancel']);
Route::post('orders/{id}/cancel/{item_id}', [Orders::class, 'cancelItem']);
Route::get('invoices', [InvoiceController::class, 'allResources']);
Route::get('invoices/{id}', [InvoiceController::class, 'getResource']);
Route::get('shipments', [ShipmentController::class, 'allResources']);
Route::get('shipments/{id}', [ShipmentController::class, 'getResource']);
Route::get('transactions', [TransactionController::class, 'allResources']);
Route::get('transactions/{id}', [TransactionController::class, 'getResource']);
});
});
@ -149,5 +128,4 @@ Route::group(['prefix' => 'api'], function () {
Route::put('create',[IntegrationController::class,'create']);
});
});