vendor product api
This commit is contained in:
parent
2675012e4f
commit
9689d3d44a
2
.env
2
.env
|
|
@ -6,7 +6,7 @@ APP_DEBUG=false
|
|||
APP_URL=http://localhost:8000
|
||||
APP_ADMIN_URL=admin
|
||||
APP_TIMEZONE=Asia/Kolkata
|
||||
APP_LOCALE=ru
|
||||
APP_LOCALE=tm
|
||||
LOG_CHANNEL=stack
|
||||
APP_CURRENCY=TMT
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,179 @@
|
|||
<?php
|
||||
|
||||
namespace Sarga\API\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Sarga\API\Http\Resources\Customer\CustomerResource;
|
||||
use Webkul\Customer\Repositories\CustomerAddressRepository;
|
||||
use Webkul\Customer\Repositories\CustomerGroupRepository;
|
||||
use Webkul\Customer\Repositories\CustomerRepository;
|
||||
use Illuminate\Support\Str;
|
||||
use Webkul\Marketplace\Http\Controllers\Shop\Account\ProductController as SellerProductController;
|
||||
use Webkul\Product\Models\ProductFlat;
|
||||
use Webkul\Product\Models\ProductInventory;
|
||||
|
||||
class SellerProduct extends SellerProductController
|
||||
{
|
||||
/**
|
||||
* SellerRepository object
|
||||
*
|
||||
* @var Object
|
||||
*/
|
||||
protected $sellerRepository;
|
||||
/**
|
||||
* Method to store user's sign up form data to DB.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
|
||||
public function storeSellerProd(Request $request)
|
||||
{
|
||||
$data = $request->all();
|
||||
$validation = Validator::make($request->all(), [
|
||||
'type' => 'required',
|
||||
'sku' => ['required', 'unique:products,sku', new \Webkul\Core\Contracts\Validations\Slug],
|
||||
'marketplace_seller_id' => 'required',
|
||||
'user' => 'required',
|
||||
'password' => 'required',
|
||||
]);
|
||||
|
||||
|
||||
if ($validation->fails()) {
|
||||
return response()->json(['errors' => $validation->getMessageBag()->all()], 422);
|
||||
}
|
||||
|
||||
$user = $request->get('user');
|
||||
$pass = $request->get('password');
|
||||
|
||||
if ($user == "romanah_" && $pass == "bt110226$$") {
|
||||
|
||||
$product = $this->product->create([
|
||||
'type' => 'simple',
|
||||
'attribute_family_id' => '1',
|
||||
'sku' => Str::slug($request->get('sku')),
|
||||
]);
|
||||
|
||||
if (!$product) {
|
||||
response([
|
||||
'error' => "error create prod"
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
$sellerProduct = $this->sellerProduct->create([
|
||||
'condition' => 'new',
|
||||
'price' => 0,
|
||||
'description' => '',
|
||||
'is_approved' => 0,
|
||||
'is_owner' => 1,
|
||||
'product_id' => $product->id,
|
||||
'marketplace_seller_id' => $request->get('marketplace_seller_id')
|
||||
]);
|
||||
|
||||
if (!$sellerProduct) {
|
||||
response([
|
||||
'error' => "error create SELLER prod"
|
||||
]);
|
||||
}
|
||||
|
||||
$productInventory = ProductInventory::create([
|
||||
'qty' => 0,
|
||||
'product_id' => $product->id,
|
||||
'inventory_source_id' => 1,
|
||||
'vendor_id' => $request->get('marketplace_seller_id')
|
||||
]);
|
||||
|
||||
if (!$productInventory) {
|
||||
response([
|
||||
'error' => "error create prod inventory"
|
||||
]);
|
||||
}
|
||||
} else {
|
||||
return response([
|
||||
'status' => 500,
|
||||
'message' => 'not authorized'
|
||||
]);
|
||||
}
|
||||
|
||||
return response([
|
||||
'status' => 200,
|
||||
'data' => $product,
|
||||
'message' => 'succesfully created product'
|
||||
]);
|
||||
}
|
||||
|
||||
public function updateProductFlat(Request $request)
|
||||
{
|
||||
$validation = Validator::make($request->all(), [
|
||||
'product_id' => 'required',
|
||||
'user' => 'required',
|
||||
'password' => 'required',
|
||||
|
||||
]);
|
||||
|
||||
|
||||
if ($validation->fails()) {
|
||||
return response()->json(['errors' => $validation->getMessageBag()->all()], 422);
|
||||
}
|
||||
|
||||
$user = $request->get('user');
|
||||
$pass = $request->get('password');
|
||||
|
||||
if ($user == "romanah_" && $pass == "bt110226$$") {
|
||||
|
||||
$prodId = $request->get('product_id');
|
||||
|
||||
$product = ProductFlat::where('id', $prodId)->first();
|
||||
|
||||
$product->product_number = $request->get('product_number');
|
||||
$product->name = $request->get('name');
|
||||
$product->description = $request->get('description');
|
||||
$product->url_key = Str::slug($request->get('name'));
|
||||
$product->new = $request->get('new');
|
||||
$product->featured = $request->get('featured');
|
||||
$product->status = $request->get('status');
|
||||
$product->price = $request->get('price');
|
||||
$product->special_price = $request->get('special_price');
|
||||
$product->weight = 0;
|
||||
$product->locale = 'tm';
|
||||
$product->channel = 'Nurgul';
|
||||
$product->short_description = $request->get('short_description');
|
||||
$product->save();
|
||||
|
||||
|
||||
$productInventory = ProductInventory::where('product_id', $prodId)->first();
|
||||
if ($productInventory) {
|
||||
$productInventory->qty = $request->get('qty');
|
||||
$productInventory->save();
|
||||
}else{
|
||||
return response([
|
||||
'status' => 500,
|
||||
'message' => 'cant find product'
|
||||
]);
|
||||
}
|
||||
|
||||
if ($product && $productInventory) {
|
||||
return response([
|
||||
'status' => 200,
|
||||
'data' => $product,
|
||||
'message' => 'succesfully updated product'
|
||||
]);
|
||||
} else {
|
||||
return response([
|
||||
'status' => 500,
|
||||
'message' => 'cant update product'
|
||||
]);
|
||||
}
|
||||
} else {
|
||||
return response([
|
||||
'status' => 500,
|
||||
'message' => 'not authorized'
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -7,6 +7,7 @@ use Sarga\API\Http\Controllers\Brands;
|
|||
use Sarga\API\Http\Controllers\Carts;
|
||||
use Sarga\API\Http\Controllers\Checkout;
|
||||
use Sarga\API\Http\Controllers\Customers;
|
||||
use Sarga\API\Http\Controllers\SellerProduct;
|
||||
use Sarga\API\Http\Controllers\Categories;
|
||||
use Sarga\API\Http\Controllers\Channels;
|
||||
use Sarga\API\Http\Controllers\IntegrationController;
|
||||
|
|
@ -26,8 +27,18 @@ use Webkul\RestApi\Http\Controllers\V1\Shop\Customer\ShipmentController;
|
|||
use Webkul\RestApi\Http\Controllers\V1\Shop\Customer\TransactionController;
|
||||
use Webkul\RestApi\Http\Controllers\V1\Shop\Customer\WishlistController;
|
||||
|
||||
Route::get('app/api/attribute-optionsw', [AttributeOptions::class, 'allResources']);
|
||||
use Webkul\RestApi\Http\Controllers\V1\Admin\User\AccountController;
|
||||
use Webkul\RestApi\Http\Controllers\V1\Admin\User\AuthController;
|
||||
|
||||
Route::post('admin/romanah/login', [AuthController::class, 'login']);
|
||||
|
||||
Route::group(['prefix' => 'api'], function () {
|
||||
|
||||
Route::group(['prefix' => 'seller'],function (){
|
||||
Route::post('create/product', [SellerProduct::class, 'storeSellerProd']);
|
||||
Route::post('update/product', [SellerProduct::class, 'updateProductFlat']);
|
||||
});
|
||||
|
||||
Route::group(['middleware' => ['locale', 'currency']], function () {
|
||||
//Channel routes
|
||||
Route::get('channels',[Channels::class, 'index']);
|
||||
|
|
|
|||
|
|
@ -1,25 +1,25 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
// [
|
||||
// 'key' => 'marketplace',
|
||||
// 'name' => 'marketplace::app.admin.acl.marketplace',
|
||||
// 'route' => 'admin.marketplace.sellers.index',
|
||||
// 'sort' => 2
|
||||
// ], [
|
||||
// 'key' => 'marketplace.sellers',
|
||||
// 'name' => 'marketplace::app.admin.acl.sellers',
|
||||
// 'route' => 'admin.marketplace.sellers.index',
|
||||
// 'sort' => 1
|
||||
// ], [
|
||||
// 'key' => 'marketplace.products',
|
||||
// 'name' => 'marketplace::app.admin.acl.products',
|
||||
// 'route' => 'admin.marketplace.products.index',
|
||||
// 'sort' => 2
|
||||
// ], [
|
||||
// 'key' => 'marketplace.reviews',
|
||||
// 'name' => 'marketplace::app.admin.acl.reviews',
|
||||
// 'route' => 'admin.marketplace.reviews.index',
|
||||
// 'sort' => 3
|
||||
// ]
|
||||
[
|
||||
'key' => 'marketplace',
|
||||
'name' => 'marketplace::app.admin.acl.marketplace',
|
||||
'route' => 'admin.marketplace.sellers.index',
|
||||
'sort' => 2
|
||||
], [
|
||||
'key' => 'marketplace.sellers',
|
||||
'name' => 'marketplace::app.admin.acl.sellers',
|
||||
'route' => 'admin.marketplace.sellers.index',
|
||||
'sort' => 1
|
||||
], [
|
||||
'key' => 'marketplace.products',
|
||||
'name' => 'marketplace::app.admin.acl.products',
|
||||
'route' => 'admin.marketplace.products.index',
|
||||
'sort' => 2
|
||||
], [
|
||||
'key' => 'marketplace.reviews',
|
||||
'name' => 'marketplace::app.admin.acl.reviews',
|
||||
'route' => 'admin.marketplace.reviews.index',
|
||||
'sort' => 3
|
||||
]
|
||||
];
|
||||
|
|
@ -1,56 +1,56 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
// [
|
||||
// 'key' => 'marketplace',
|
||||
// 'name' => 'marketplace::app.admin.layouts.marketplace',
|
||||
// 'route' => 'admin.marketplace.sellers.index',
|
||||
// 'sort' => 2,
|
||||
// 'icon-class' => 'marketplace-icon',
|
||||
// ], [
|
||||
// 'key' => 'marketplace.sellers',
|
||||
// 'name' => 'marketplace::app.admin.layouts.sellers',
|
||||
// 'route' => 'admin.marketplace.sellers.index',
|
||||
// 'sort' => 1
|
||||
// ], [
|
||||
// 'key' => 'marketplace.products',
|
||||
// 'name' => 'marketplace::app.admin.layouts.products',
|
||||
// 'route' => 'admin.marketplace.products.index',
|
||||
// 'sort' => 2
|
||||
// ], [
|
||||
// 'key' => 'marketplace.reviews',
|
||||
// 'name' => 'marketplace::app.admin.layouts.seller-reviews',
|
||||
// 'route' => 'admin.marketplace.reviews.index',
|
||||
// 'sort' => 3
|
||||
// ], [
|
||||
// 'key' => 'marketplace.orders',
|
||||
// 'name' => 'marketplace::app.admin.layouts.orders',
|
||||
// 'route' => 'admin.marketplace.orders.index',
|
||||
// 'sort' => 3
|
||||
// ], [
|
||||
// 'key' => 'marketplace.transactions',
|
||||
// 'name' => 'marketplace::app.admin.layouts.transactions',
|
||||
// 'route' => 'admin.marketplace.transactions.index',
|
||||
// 'sort' => 3
|
||||
// ],[
|
||||
// 'key' => 'marketplace.sellerFlag',
|
||||
// 'name' => 'marketplace::app.shop.layouts.sellerFlag',
|
||||
// 'route' => 'marketplace.admin.seller.flag.reason.index',
|
||||
// 'sort' => 8
|
||||
// ],[
|
||||
// 'key' => 'marketplace.productFlag',
|
||||
// 'name' => 'marketplace::app.shop.layouts.productFlag',
|
||||
// 'route' => 'marketplace.admin.product.flag.reason.index',
|
||||
// 'sort' => 9
|
||||
// ],[
|
||||
// 'key' => 'marketplace.sellerCategory',
|
||||
// 'name' => 'marketplace::app.shop.layouts.seller-category',
|
||||
// 'route' => 'admin.marketplace.seller.category.index',
|
||||
// 'sort' => 10
|
||||
// ],[
|
||||
// 'key' => 'marketplace.paymentRequest',
|
||||
// 'name' => 'marketplace::app.admin.layouts.payment-requests',
|
||||
// 'route' => 'marketplace.admin.payment.request.index',
|
||||
// 'sort' => 11
|
||||
// ]
|
||||
[
|
||||
'key' => 'marketplace',
|
||||
'name' => 'marketplace::app.admin.layouts.marketplace',
|
||||
'route' => 'admin.marketplace.sellers.index',
|
||||
'sort' => 2,
|
||||
'icon-class' => 'marketplace-icon',
|
||||
], [
|
||||
'key' => 'marketplace.sellers',
|
||||
'name' => 'marketplace::app.admin.layouts.sellers',
|
||||
'route' => 'admin.marketplace.sellers.index',
|
||||
'sort' => 1
|
||||
], [
|
||||
'key' => 'marketplace.products',
|
||||
'name' => 'marketplace::app.admin.layouts.products',
|
||||
'route' => 'admin.marketplace.products.index',
|
||||
'sort' => 2
|
||||
], [
|
||||
'key' => 'marketplace.reviews',
|
||||
'name' => 'marketplace::app.admin.layouts.seller-reviews',
|
||||
'route' => 'admin.marketplace.reviews.index',
|
||||
'sort' => 3
|
||||
], [
|
||||
'key' => 'marketplace.orders',
|
||||
'name' => 'marketplace::app.admin.layouts.orders',
|
||||
'route' => 'admin.marketplace.orders.index',
|
||||
'sort' => 3
|
||||
], [
|
||||
'key' => 'marketplace.transactions',
|
||||
'name' => 'marketplace::app.admin.layouts.transactions',
|
||||
'route' => 'admin.marketplace.transactions.index',
|
||||
'sort' => 3
|
||||
],[
|
||||
'key' => 'marketplace.sellerFlag',
|
||||
'name' => 'marketplace::app.shop.layouts.sellerFlag',
|
||||
'route' => 'marketplace.admin.seller.flag.reason.index',
|
||||
'sort' => 8
|
||||
],[
|
||||
'key' => 'marketplace.productFlag',
|
||||
'name' => 'marketplace::app.shop.layouts.productFlag',
|
||||
'route' => 'marketplace.admin.product.flag.reason.index',
|
||||
'sort' => 9
|
||||
],[
|
||||
'key' => 'marketplace.sellerCategory',
|
||||
'name' => 'marketplace::app.shop.layouts.seller-category',
|
||||
'route' => 'admin.marketplace.seller.category.index',
|
||||
'sort' => 10
|
||||
],[
|
||||
'key' => 'marketplace.paymentRequest',
|
||||
'name' => 'marketplace::app.admin.layouts.payment-requests',
|
||||
'route' => 'marketplace.admin.payment.request.index',
|
||||
'sort' => 11
|
||||
]
|
||||
];
|
||||
|
|
@ -1,55 +1,55 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
// [
|
||||
// 'key' => 'marketplace',
|
||||
// 'name' => 'marketplace::app.shop.layouts.marketplace',
|
||||
// 'route' => 'marketplace.account.seller.edit',
|
||||
// 'sort' => 2
|
||||
// ], [
|
||||
// 'key' => 'marketplace.seller',
|
||||
// 'name' => 'marketplace::app.shop.layouts.profile',
|
||||
// 'route' => 'marketplace.account.seller.edit',
|
||||
// 'sort' => 1
|
||||
// ], [
|
||||
// 'key' => 'marketplace.dashboard',
|
||||
// 'name' => 'marketplace::app.shop.layouts.dashboard',
|
||||
// 'route' => 'marketplace.account.dashboard.index',
|
||||
// 'sort' => 2
|
||||
// ], [
|
||||
// 'key' => 'marketplace.products',
|
||||
// 'name' => 'marketplace::app.shop.layouts.products',
|
||||
// 'route' => 'marketplace.account.products.index',
|
||||
// 'sort' => 3
|
||||
// ], [
|
||||
// 'key' => 'marketplace.orders',
|
||||
// 'name' => 'marketplace::app.shop.layouts.orders',
|
||||
// 'route' => 'marketplace.account.orders.index',
|
||||
// 'sort' => 4
|
||||
// ], [
|
||||
// 'key' => 'marketplace.transactions',
|
||||
// 'name' => 'marketplace::app.shop.layouts.transactions',
|
||||
// 'route' => 'marketplace.account.transactions.index',
|
||||
// 'sort' => 6
|
||||
// ], [
|
||||
// 'key' => 'marketplace.reviews',
|
||||
// 'name' => 'marketplace::app.shop.layouts.reviews',
|
||||
// 'route' => 'marketplace.account.reviews.index',
|
||||
// 'sort' => 7
|
||||
// ], [
|
||||
// 'key' => 'marketplace.earnings',
|
||||
// 'name' => 'marketplace::app.shop.layouts.earnings',
|
||||
// 'route' => 'marketplace.account.earning.index',
|
||||
// 'sort' => 2
|
||||
// ],[
|
||||
// 'key' => 'marketplace.customers',
|
||||
// 'name' => 'marketplace::app.shop.layouts.customers',
|
||||
// 'route' => 'marketplace.account.customers.index',
|
||||
// 'sort' => 8
|
||||
// ],[
|
||||
// 'key' => 'marketplace.paymentRequest',
|
||||
// 'name' => 'marketplace::app.shop.layouts.paymentRequest',
|
||||
// 'route' => 'marketplace.account.payment.request.index',
|
||||
// 'sort' => 9
|
||||
// ]
|
||||
[
|
||||
'key' => 'marketplace',
|
||||
'name' => 'marketplace::app.shop.layouts.marketplace',
|
||||
'route' => 'marketplace.account.seller.edit',
|
||||
'sort' => 2
|
||||
], [
|
||||
'key' => 'marketplace.seller',
|
||||
'name' => 'marketplace::app.shop.layouts.profile',
|
||||
'route' => 'marketplace.account.seller.edit',
|
||||
'sort' => 1
|
||||
], [
|
||||
'key' => 'marketplace.dashboard',
|
||||
'name' => 'marketplace::app.shop.layouts.dashboard',
|
||||
'route' => 'marketplace.account.dashboard.index',
|
||||
'sort' => 2
|
||||
], [
|
||||
'key' => 'marketplace.products',
|
||||
'name' => 'marketplace::app.shop.layouts.products',
|
||||
'route' => 'marketplace.account.products.index',
|
||||
'sort' => 3
|
||||
], [
|
||||
'key' => 'marketplace.orders',
|
||||
'name' => 'marketplace::app.shop.layouts.orders',
|
||||
'route' => 'marketplace.account.orders.index',
|
||||
'sort' => 4
|
||||
], [
|
||||
'key' => 'marketplace.transactions',
|
||||
'name' => 'marketplace::app.shop.layouts.transactions',
|
||||
'route' => 'marketplace.account.transactions.index',
|
||||
'sort' => 6
|
||||
], [
|
||||
'key' => 'marketplace.reviews',
|
||||
'name' => 'marketplace::app.shop.layouts.reviews',
|
||||
'route' => 'marketplace.account.reviews.index',
|
||||
'sort' => 7
|
||||
], [
|
||||
'key' => 'marketplace.earnings',
|
||||
'name' => 'marketplace::app.shop.layouts.earnings',
|
||||
'route' => 'marketplace.account.earning.index',
|
||||
'sort' => 2
|
||||
],[
|
||||
'key' => 'marketplace.customers',
|
||||
'name' => 'marketplace::app.shop.layouts.customers',
|
||||
'route' => 'marketplace.account.customers.index',
|
||||
'sort' => 8
|
||||
],[
|
||||
'key' => 'marketplace.paymentRequest',
|
||||
'name' => 'marketplace::app.shop.layouts.paymentRequest',
|
||||
'route' => 'marketplace.account.payment.request.index',
|
||||
'sort' => 9
|
||||
]
|
||||
];
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -149,7 +149,10 @@ class ProductRepository extends Repository
|
|||
{
|
||||
Event::dispatch('marketplace.catalog.product.create.before');
|
||||
|
||||
$seller = $this->sellerRepository->findOneByField('customer_id', auth()->guard('customer')->user()->id);
|
||||
|
||||
$seller = $this->sellerRepository->isSellerMarket($data["marketplace_seller_id"]);
|
||||
|
||||
\Log::info($seller);
|
||||
|
||||
$sellerProduct = parent::create(array_merge($data, [
|
||||
'marketplace_seller_id' => $seller->id,
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ class SellerRepository extends Repository
|
|||
*/
|
||||
public function update(array $data, $id, $attribute = "id")
|
||||
{
|
||||
|
||||
|
||||
Event::dispatch('marketplace.seller.profile.update.before', $id);
|
||||
|
||||
$seller = $this->find($id);
|
||||
|
|
@ -121,6 +121,13 @@ class SellerRepository extends Repository
|
|||
return $isSeller ? $this->isSellerApproved($customerId) : false;
|
||||
}
|
||||
|
||||
public function isSellerMarket($sellerId)
|
||||
{
|
||||
$seller = $this->getModel()->where('id', $sellerId)->first();
|
||||
|
||||
return $seller;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if seller is approved or not
|
||||
*
|
||||
|
|
@ -145,12 +152,12 @@ class SellerRepository extends Repository
|
|||
*/
|
||||
public function uploadImages($data, $seller, $type = "logo")
|
||||
{
|
||||
|
||||
|
||||
if (isset($data[$type])) {
|
||||
foreach ($data[$type] as $imageId => $image) {
|
||||
$file = $type . '.' . $imageId;
|
||||
$dir = 'seller/' . $seller->id;
|
||||
|
||||
|
||||
if (request()->hasFile($file)) {
|
||||
if ($seller->{$type}) {
|
||||
Storage::delete($seller->{$type});
|
||||
|
|
|
|||
Loading…
Reference in New Issue