Actualizacion de Diseño Logins y Parte de Registro Negocios
This commit is contained in:
29
desarrollo/app/Http/Controllers/Api/V2/Seller/Controller.php
Normal file
29
desarrollo/app/Http/Controllers/Api/V2/Seller/Controller.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V2\Seller;
|
||||
|
||||
use Illuminate\Foundation\Bus\DispatchesJobs;
|
||||
use Illuminate\Routing\Controller as BaseController;
|
||||
use Illuminate\Foundation\Validation\ValidatesRequests;
|
||||
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
||||
|
||||
class Controller extends BaseController
|
||||
{
|
||||
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
|
||||
|
||||
public function success($message)
|
||||
{
|
||||
return response()->json([
|
||||
'result' => true,
|
||||
'message' => $message
|
||||
]);
|
||||
}
|
||||
|
||||
public function failed($message)
|
||||
{
|
||||
return response()->json([
|
||||
'result' => false,
|
||||
'message' => $message
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,114 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V2\Seller;
|
||||
|
||||
use App\Http\Resources\V2\MessageCollection;
|
||||
use App\Http\Resources\V2\Seller\ConversationCollection;
|
||||
use App\Http\Resources\V2\Seller\ConversationResource;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Conversation;
|
||||
use App\Models\BusinessSetting;
|
||||
use App\Models\Message;
|
||||
use Auth;
|
||||
use App\Models\Product;
|
||||
use Mail;
|
||||
use App\Mail\ConversationMailManager;
|
||||
use DB;
|
||||
|
||||
class ConversationController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
if (BusinessSetting::where('type', 'conversation_system')->first()->value == 1) {
|
||||
|
||||
//SELECT sender_id, receiver_id, title, MAX(created_at) AS max_created_at FROM `conversations` WHERE receiver_id = 3 GROUP BY sender_id order by max_created_at desc;
|
||||
// $conversations = Conversation::select('sender_id', 'receiver_id', 'title', DB::raw("MAX(created_at) as max_created_at"))
|
||||
// ->where('receiver_id', '=', auth()->user()->id)
|
||||
// ->orderBy('max_created_at', 'DESC')
|
||||
// ->groupBy('sender_id')
|
||||
// ->get();
|
||||
$conversations = Conversation::where('receiver_id', auth()->user()->id)
|
||||
->orderBy('created_at', 'desc')
|
||||
->get();
|
||||
return ConversationResource::collection($conversations);
|
||||
} else {
|
||||
return $this->failed(translate('Conversation is disabled at this moment'));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function send_message_to_customer(Request $requrest)
|
||||
{
|
||||
$message = new Message();
|
||||
$conversation = Conversation::find($requrest->conversation_id)->where("receiver_id",auth()->user()->id)->first();
|
||||
|
||||
if($conversation){
|
||||
$message->conversation_id = $requrest->conversation_id;
|
||||
$message->user_id = auth()->user()->id;
|
||||
$message->message = $requrest->message;
|
||||
$message->save();
|
||||
|
||||
return $this->success(translate('Message send successfully'));
|
||||
}else{
|
||||
return $this->failed(translate('You can not send this message.'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
$conversation = Conversation::findOrFail(decrypt($id));
|
||||
if ($conversation->sender_id == auth()->user()->id) {
|
||||
$conversation->sender_viewed = 1;
|
||||
} elseif ($conversation->receiver_id == auth()->user()->id) {
|
||||
$conversation->receiver_viewed = 1;
|
||||
}
|
||||
$conversation->save();
|
||||
|
||||
return new ConversationCollection($conversation);
|
||||
}
|
||||
|
||||
public function showMessages($id)
|
||||
{
|
||||
$conversation = Conversation::findOrFail($id);
|
||||
if ($conversation->receiver_id == auth()->user()->id) {
|
||||
$messages = Message::where("conversation_id",$id)->orderBy('created_at', 'DESC')->get();
|
||||
|
||||
return new MessageCollection($messages);
|
||||
} else {
|
||||
|
||||
return $this->failed(translate('You can not see this message.'));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function destroy($id)
|
||||
{
|
||||
$conversation = Conversation::findOrFail(decrypt($id));
|
||||
foreach ($conversation->messages as $key => $message) {
|
||||
$message->delete();
|
||||
}
|
||||
if (Conversation::destroy(decrypt($id))) {
|
||||
flash(translate('Conversation has been deleted successfully'))->success();
|
||||
return back();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V2\Seller;
|
||||
|
||||
use App\Http\Requests\CouponRequest;
|
||||
use App\Http\Resources\V2\Seller\CouponResource;
|
||||
use App\Http\Resources\V2\Seller\ProductCollection;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Coupon;
|
||||
use App\Models\Product;
|
||||
use Auth;
|
||||
|
||||
class CouponController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$coupons = Coupon::where('user_id', auth()->user()->id)->orderBy('id','desc')->get();
|
||||
return CouponResource::collection($coupons);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(CouponRequest $request)
|
||||
{
|
||||
$user_id = auth()->user()->id;
|
||||
Coupon::create($request->validated() + [
|
||||
'user_id' => $user_id,
|
||||
]);
|
||||
|
||||
return $this->success(translate('Coupon has been saved successfully'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function edit($id)
|
||||
{
|
||||
$coupon = Coupon::where('id', $id)->where('user_id', auth()->user()->id)->first();
|
||||
// dd($coupon);
|
||||
return new CouponResource($coupon);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(CouponRequest $request, Coupon $coupon)
|
||||
{
|
||||
$coupon->update($request->validated());
|
||||
|
||||
return $this->success(translate('Coupon has been updated successfully'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function destroy($id)
|
||||
{
|
||||
Coupon::where('id', '=', $id)->where('user_id', auth()->user()->id)->delete();
|
||||
|
||||
return $this->success(translate('Coupon has been deleted successfully'));
|
||||
}
|
||||
|
||||
public function coupon_for_product(Request $request)
|
||||
{
|
||||
|
||||
if($request->coupon_type == "product_base") {
|
||||
|
||||
$products = Product::where('name','LIKE',"%".$request->name."%")->where('user_id', auth()->user()->id)->paginate(10);
|
||||
// $products = filter_products(Product::where('user_id', auth()->user()->id))->get();
|
||||
return new ProductCollection($products);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V2\Seller;
|
||||
|
||||
use App\Http\Resources\V2\Seller\OrderCollection;
|
||||
use App\Http\Resources\V2\Seller\OrderDetailResource;
|
||||
use App\Http\Resources\V2\Seller\OrderItemResource;
|
||||
use App\Models\Order;
|
||||
use App\Models\OrderDetail;
|
||||
use App\Services\OrderService ;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
|
||||
|
||||
class OrderController extends Controller
|
||||
{
|
||||
|
||||
public function getOrderList(Request $request)
|
||||
{
|
||||
$order_query = Order::query();
|
||||
if ($request->payment_status != "" || $request->payment_status != null) {
|
||||
$order_query->where('payment_status', $request->payment_status);
|
||||
}
|
||||
if ($request->delivery_status != "" || $request->delivery_status != null) {
|
||||
$delivery_status = $request->delivery_status;
|
||||
$order_query->whereIn("id", function ($query) use ($delivery_status) {
|
||||
$query->select('order_id')
|
||||
->from('order_details')
|
||||
->where('delivery_status', $delivery_status);
|
||||
});
|
||||
}
|
||||
|
||||
$orders = $order_query->where('seller_id', auth()->user()->id)->latest()->paginate(10);
|
||||
|
||||
return new OrderCollection($orders);
|
||||
}
|
||||
|
||||
|
||||
public function getOrderDetails($id)
|
||||
{
|
||||
$order_detail = Order::where('id', $id)->where('seller_id', auth()->user()->id)->get();
|
||||
return OrderDetailResource::collection($order_detail);
|
||||
}
|
||||
|
||||
public function getOrderItems($id)
|
||||
{
|
||||
$order_id = Order::select('id')->where('id', $id)->where('seller_id', auth()->user()->id)->first();
|
||||
$order_query = OrderDetail::where('order_id', $order_id->id);
|
||||
|
||||
return OrderItemResource::collection($order_query->get());
|
||||
// return new PurchaseHistoryItemsCollection($order_query->get());
|
||||
}
|
||||
|
||||
public function update_delivery_status(Request $request) {
|
||||
(new OrderService)->handle_delivery_status($request);
|
||||
return $this->success(translate('Delivery status has been changed successfully'));
|
||||
}
|
||||
|
||||
public function update_payment_status(Request $request) {
|
||||
(new OrderService)->handle_payment_status($request);
|
||||
return $this->success(translate('Payment status has been changed successfully'));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V2\Seller;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Resources\V2\Seller\SellerPaymentResource;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Payment;
|
||||
|
||||
class PaymentController extends Controller
|
||||
{
|
||||
//
|
||||
public function getHistory(){
|
||||
$sellerId = auth()->user()->id;
|
||||
$payments = Payment::orderBy('created_at', 'desc')->where('seller_id',$sellerId)->latest()->paginate(10);;
|
||||
return SellerPaymentResource::collection($payments);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,298 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V2\Seller;
|
||||
|
||||
use App\Http\Requests\ProductRequest;
|
||||
use App\Http\Resources\V2\Seller\AttributeCollection;
|
||||
use App\Http\Resources\V2\Seller\BrandCollection;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
use App\Http\Resources\V2\Seller\CategoriesCollection;
|
||||
use App\Http\Resources\V2\Seller\ColorCollection;
|
||||
use App\Http\Resources\V2\Seller\ProductCollection;
|
||||
use App\Http\Resources\V2\Seller\ProductDetailsCollection;
|
||||
use App\Http\Resources\V2\Seller\ProductReviewCollection;
|
||||
use App\Http\Resources\V2\Seller\TaxCollection;
|
||||
use App\Models\Attribute;
|
||||
use App\Models\Brand;
|
||||
use App\Models\Cart;
|
||||
use App\Models\Category;
|
||||
use App\Models\Color;
|
||||
use App\Models\Product;
|
||||
use App\Models\ProductTax;
|
||||
use App\Models\ProductTranslation;
|
||||
use App\Models\Review;
|
||||
use App\Models\Tax;
|
||||
use Artisan;
|
||||
|
||||
use App\Services\ProductFlashDealService;
|
||||
use App\Services\ProductService;
|
||||
use App\Services\ProductStockService;
|
||||
use App\Services\ProductTaxService;
|
||||
|
||||
class ProductController extends Controller
|
||||
{
|
||||
protected $productService;
|
||||
protected $productTaxService;
|
||||
protected $productFlashDealService;
|
||||
protected $productStockService;
|
||||
|
||||
public function __construct(
|
||||
ProductService $productService,
|
||||
ProductTaxService $productTaxService,
|
||||
ProductFlashDealService $productFlashDealService,
|
||||
ProductStockService $productStockService
|
||||
) {
|
||||
$this->productService = $productService;
|
||||
$this->productTaxService = $productTaxService;
|
||||
$this->productFlashDealService = $productFlashDealService;
|
||||
$this->productStockService = $productStockService;
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
$products = Product::where('user_id', auth()->user()->id)->where('digital', 0)->where('auction_product', 0)->where('wholesale_product', 0)->orderBy('created_at', 'desc');
|
||||
$products = $products->paginate(10);
|
||||
return new ProductCollection($products);
|
||||
}
|
||||
|
||||
public function getCategory()
|
||||
{
|
||||
$categories = Category::where('parent_id', 0)
|
||||
->where('digital', 0)
|
||||
->with('childrenCategories')
|
||||
->get();
|
||||
return CategoriesCollection::collection($categories);
|
||||
}
|
||||
|
||||
public function getBrands()
|
||||
{
|
||||
$brands = Brand::all();
|
||||
|
||||
return BrandCollection::collection($brands);
|
||||
}
|
||||
public function getTaxes()
|
||||
{
|
||||
$taxes = Tax::where('tax_status', 1)->get();
|
||||
|
||||
return TaxCollection::collection($taxes);
|
||||
}
|
||||
public function getAttributes()
|
||||
{
|
||||
$attributes = Attribute::with('attribute_values')->get();
|
||||
|
||||
return AttributeCollection::collection($attributes);
|
||||
}
|
||||
public function getColors()
|
||||
{
|
||||
$colors = Color::orderBy('name', 'asc')->get();
|
||||
|
||||
return ColorCollection::collection($colors);
|
||||
}
|
||||
|
||||
|
||||
public function store(ProductRequest $request)
|
||||
{
|
||||
if (addon_is_activated('seller_subscription')) {
|
||||
if (!seller_package_validity_check(auth()->user()->id)) {
|
||||
return $this->failed(translate('Please upgrade your package.'));
|
||||
}
|
||||
}
|
||||
|
||||
if (auth()->user()->user_type != 'seller') {
|
||||
return $this->failed(translate('Unauthenticated User.'));
|
||||
}
|
||||
|
||||
$request->merge(['added_by' => 'seller']);
|
||||
$product = $this->productService->store($request->except([
|
||||
'_token', 'sku', 'choice', 'tax_id', 'tax', 'tax_type', 'flash_deal_id', 'flash_discount', 'flash_discount_type'
|
||||
]));
|
||||
$request->merge(['product_id' => $product->id]);
|
||||
|
||||
//VAT & Tax
|
||||
if ($request->tax_id) {
|
||||
$this->productTaxService->store($request->only([
|
||||
'tax_id', 'tax', 'tax_type', 'product_id'
|
||||
]));
|
||||
}
|
||||
|
||||
//Product Stock
|
||||
$this->productStockService->store($request->only([
|
||||
'colors_active', 'colors', 'choice_no', 'unit_price', 'sku', 'current_stock', 'product_id'
|
||||
]), $product);
|
||||
|
||||
// Product Translations
|
||||
$request->merge(['lang' => env('DEFAULT_LANGUAGE')]);
|
||||
ProductTranslation::create($request->only([
|
||||
'lang', 'name', 'unit', 'description', 'product_id'
|
||||
]));
|
||||
|
||||
return $this->success(translate('Product has been inserted successfully'));
|
||||
}
|
||||
|
||||
public function edit(Request $request, $id)
|
||||
{
|
||||
|
||||
if (auth()->user()->user_type != 'seller') {
|
||||
return $this->failed(translate('Unauthenticated User.'));
|
||||
}
|
||||
|
||||
$product = Product::where('id', $id)->with('stocks')->first();
|
||||
|
||||
if (auth()->user()->id != $product->user_id) {
|
||||
return $this->failed(translate('This product is not yours.'));
|
||||
}
|
||||
$product->lang = $request->lang == null ? env("DEFAULT_LANGUAGE") : $request->lang;
|
||||
|
||||
return new ProductDetailsCollection($product);
|
||||
/* $data = response()->json([
|
||||
'lang' => $lang,
|
||||
'product' => $product,
|
||||
'product_name' => $product->getTranslation('name',$lang),
|
||||
'product_unit' => $product->getTranslation('unit',$lang),
|
||||
'description' => $product->getTranslation('description',$lang),
|
||||
]);
|
||||
return $data;*/
|
||||
}
|
||||
|
||||
public function update(ProductRequest $request, Product $product)
|
||||
{
|
||||
//Product
|
||||
$product = $this->productService->update($request->except([
|
||||
'_token', 'sku', 'choice', 'tax_id', 'tax', 'tax_type', 'flash_deal_id', 'flash_discount', 'flash_discount_type'
|
||||
]), $product);
|
||||
|
||||
//Product Stock
|
||||
foreach ($product->stocks as $key => $stock) {
|
||||
$stock->delete();
|
||||
}
|
||||
$request->merge(['product_id' => $product->id]);
|
||||
$this->productStockService->store($request->only([
|
||||
'colors_active', 'colors', 'choice_no', 'unit_price', 'sku', 'current_stock', 'product_id'
|
||||
]), $product);
|
||||
|
||||
//VAT & Tax
|
||||
if ($request->tax_id) {
|
||||
ProductTax::where('product_id', $product->id)->delete();
|
||||
$request->merge(['product_id' => $product->id]);
|
||||
$this->productTaxService->store($request->only([
|
||||
'tax_id', 'tax', 'tax_type', 'product_id'
|
||||
]));
|
||||
}
|
||||
|
||||
// Product Translations
|
||||
ProductTranslation::updateOrCreate(
|
||||
$request->only([
|
||||
'lang', 'product_id'
|
||||
]),
|
||||
$request->only([
|
||||
'name', 'unit', 'description'
|
||||
])
|
||||
);
|
||||
|
||||
return $this->success(translate('Product has been updated successfully'));
|
||||
}
|
||||
|
||||
public function change_status(Request $request)
|
||||
{
|
||||
$product = Product::where('user_id', auth()->user()->id)
|
||||
->where('id', $request->id)
|
||||
->update([
|
||||
'published' => $request->status
|
||||
]);
|
||||
|
||||
if ($product== 0) {
|
||||
return $this->failed(translate('This product is not yours'));
|
||||
}
|
||||
return ($request->status == 1) ?
|
||||
$this->success(translate('Product has been published successfully')) :
|
||||
$this->success(translate('Product has been unpublished successfully'));
|
||||
}
|
||||
|
||||
public function change_featured_status(Request $request)
|
||||
{
|
||||
$product = Product::where('user_id', auth()->user()->id)
|
||||
->where('id', $request->id)
|
||||
->update([
|
||||
'seller_featured' => $request->featured_status
|
||||
]);
|
||||
|
||||
if ($product == 0) {
|
||||
return $this->failed(translate('This product is not yours'));
|
||||
}
|
||||
|
||||
return ($request->featured_status == 1) ?
|
||||
$this->success(translate('Product has been featured successfully')) :
|
||||
$this->success(translate('Product has been unfeatured successfully'));
|
||||
}
|
||||
|
||||
public function duplicate($id)
|
||||
{
|
||||
$product = Product::findOrFail($id);
|
||||
|
||||
if (auth()->user()->id != $product->user_id) {
|
||||
return $this->failed(translate('This product is not yours'));
|
||||
}
|
||||
if (addon_is_activated('seller_subscription')) {
|
||||
if (!seller_package_validity_check(auth()->user()->id)) {
|
||||
return $this->failed(translate('Please upgrade your package'));
|
||||
}
|
||||
}
|
||||
|
||||
//Product
|
||||
$product_new = (new ProductService)->product_duplicate_store($product);
|
||||
|
||||
//Store in Product Stock Table
|
||||
(new ProductStockService)->product_duplicate_store($product->stocks, $product_new);
|
||||
|
||||
//Store in Product Tax Table
|
||||
(new ProductTaxService)->product_duplicate_store($product->taxes, $product_new);
|
||||
|
||||
return $this->success(translate('Product has been duplicated successfully'));
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
$product = Product::findOrFail($id);
|
||||
|
||||
if (auth()->user()->id != $product->user_id) {
|
||||
return $this->failed(translate('This product is not yours'));
|
||||
}
|
||||
|
||||
$product->product_translations()->delete();
|
||||
$product->stocks()->delete();
|
||||
$product->taxes()->delete();
|
||||
|
||||
if (Product::destroy($id)) {
|
||||
Cart::where('product_id', $id)->delete();
|
||||
|
||||
return $this->success(translate('Product has been deleted successfully'));
|
||||
|
||||
Artisan::call('view:clear');
|
||||
Artisan::call('cache:clear');
|
||||
}
|
||||
}
|
||||
|
||||
public function product_reviews()
|
||||
{
|
||||
$reviews = Review::orderBy('id', 'desc')
|
||||
->join('products', 'reviews.product_id', '=', 'products.id')
|
||||
->join('users', 'reviews.user_id', '=', 'users.id')
|
||||
->where('products.user_id', auth()->user()->id)
|
||||
->select('reviews.id', 'reviews.rating', 'reviews.comment', 'reviews.status', 'reviews.updated_at', 'products.name as product_name', 'users.id as user_id', 'users.name', 'users.avatar')
|
||||
->distinct()
|
||||
->paginate(1);
|
||||
|
||||
return new ProductReviewCollection($reviews);
|
||||
}
|
||||
|
||||
public function remainingUploads()
|
||||
{
|
||||
|
||||
$remaining_uploads = (max(0, auth()->user()->shop->product_upload_limit - auth()->user()->products()->count()));
|
||||
return response()->json([
|
||||
'ramaining_product' => $remaining_uploads,
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V2\Seller;
|
||||
|
||||
use App\Http\Resources\V2\RefundRequestCollection;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
use App\Models\RefundRequest;
|
||||
|
||||
|
||||
class RefundController extends Controller
|
||||
{
|
||||
//
|
||||
|
||||
public function index(){
|
||||
$sellerId = auth()->user()->id;
|
||||
|
||||
$refunds = RefundRequest::where('seller_id',$sellerId)->latest()->paginate(10);
|
||||
return new RefundRequestCollection($refunds);
|
||||
}
|
||||
|
||||
|
||||
public function request_approval_vendor(Request $request)
|
||||
{
|
||||
$refund = RefundRequest::findOrFail($request->refund_id);
|
||||
|
||||
if (auth()->user()->user_type == 'admin' || auth()->user()->user_type == 'staff') {
|
||||
$refund->seller_approval = 1;
|
||||
$refund->admin_approval = 1;
|
||||
}
|
||||
elseif (auth()->user()->user_type == 'seller' && $refund->seller_id==auth()->user()->id){
|
||||
$refund->seller_approval = 1;
|
||||
}
|
||||
|
||||
if ($refund->save())
|
||||
{
|
||||
return $this->success(translate('Refund Status has been change successfully')) ;
|
||||
}
|
||||
else {
|
||||
return $this->failed(translate('Refund Status change failed!'));
|
||||
}
|
||||
}
|
||||
|
||||
public function reject_refund_request(Request $request){
|
||||
$refund = RefundRequest::findOrFail($request->refund_id);
|
||||
$refund->reject_reason = $request->reject_reason;
|
||||
if (auth()->user()->user_type == 'admin' || auth()->user()->user_type == 'staff') {
|
||||
$refund->admin_approval = 2;
|
||||
$refund->refund_status = 2;
|
||||
}
|
||||
elseif (auth()->user()->user_type == 'seller' && $refund->seller_id==auth()->user()->id){
|
||||
$refund->seller_approval = 2;
|
||||
}
|
||||
|
||||
if ($refund->save())
|
||||
{
|
||||
return $this->success(translate('Refund Status has been change successfully')) ;
|
||||
}
|
||||
else {
|
||||
return $this->failed(translate('Refund Status change failed!'));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
<?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));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,280 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V2\Seller;
|
||||
|
||||
use App\Http\Resources\V2\UploadedFileCollection;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Upload;
|
||||
use Response;
|
||||
use Auth;
|
||||
use Storage;
|
||||
use Image;
|
||||
|
||||
class SellerFileUploadController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
if (auth()->user()->user_type == 'seller') {
|
||||
$all_uploads = Upload::where('user_id', auth()->user()->id);
|
||||
|
||||
if ($request->search != null) {
|
||||
$all_uploads->where('file_original_name', 'like', '%' . $request->search . '%');
|
||||
}
|
||||
if ($request->type != null) {
|
||||
$all_uploads->where('type', $request->type);
|
||||
}
|
||||
|
||||
switch ($request->sort) {
|
||||
case 'newest':
|
||||
$all_uploads->orderBy('created_at', 'desc');
|
||||
break;
|
||||
case 'oldest':
|
||||
$all_uploads->orderBy('created_at', 'asc');
|
||||
break;
|
||||
case 'smallest':
|
||||
$all_uploads->orderBy('file_size', 'asc');
|
||||
break;
|
||||
case 'largest':
|
||||
$all_uploads->orderBy('file_size', 'desc');
|
||||
break;
|
||||
default:
|
||||
$all_uploads->orderBy('created_at', 'desc');
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
$all_uploads = $all_uploads->paginate(30)->appends(request()->query());
|
||||
|
||||
return new UploadedFileCollection($all_uploads);
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
"result" => false,
|
||||
"data" => []
|
||||
]);
|
||||
}
|
||||
|
||||
public function upload(Request $request)
|
||||
{
|
||||
$type = array(
|
||||
"jpg" => "image",
|
||||
"jpeg" => "image",
|
||||
"png" => "image",
|
||||
"svg" => "image",
|
||||
"webp" => "image",
|
||||
"gif" => "image",
|
||||
"mp4" => "video",
|
||||
"mpg" => "video",
|
||||
"mpeg" => "video",
|
||||
"webm" => "video",
|
||||
"ogg" => "video",
|
||||
"avi" => "video",
|
||||
"mov" => "video",
|
||||
"flv" => "video",
|
||||
"swf" => "video",
|
||||
"mkv" => "video",
|
||||
"wmv" => "video",
|
||||
"wma" => "audio",
|
||||
"aac" => "audio",
|
||||
"wav" => "audio",
|
||||
"mp3" => "audio",
|
||||
"zip" => "archive",
|
||||
"rar" => "archive",
|
||||
"7z" => "archive",
|
||||
"doc" => "document",
|
||||
"txt" => "document",
|
||||
"docx" => "document",
|
||||
"pdf" => "document",
|
||||
"csv" => "document",
|
||||
"xml" => "document",
|
||||
"ods" => "document",
|
||||
"xlr" => "document",
|
||||
"xls" => "document",
|
||||
"xlsx" => "document"
|
||||
);
|
||||
if (auth()->user()->user_type == 'seller') {
|
||||
if ($request->hasFile('aiz_file')) {
|
||||
$upload = new Upload;
|
||||
$extension = strtolower($request->file('aiz_file')->getClientOriginalExtension());
|
||||
|
||||
if (
|
||||
env('DEMO_MODE') == 'On' &&
|
||||
isset($type[$extension]) &&
|
||||
$type[$extension] == 'archive'
|
||||
) {
|
||||
return $this->failed(translate('File has been inserted successfully'));
|
||||
}
|
||||
|
||||
if (isset($type[$extension])) {
|
||||
$upload->file_original_name = null;
|
||||
$arr = explode('.', $request->file('aiz_file')->getClientOriginalName());
|
||||
for ($i = 0; $i < count($arr) - 1; $i++) {
|
||||
if ($i == 0) {
|
||||
$upload->file_original_name .= $arr[$i];
|
||||
} else {
|
||||
$upload->file_original_name .= "." . $arr[$i];
|
||||
}
|
||||
}
|
||||
|
||||
$path = $request->file('aiz_file')->store('uploads/all', 'local');
|
||||
$size = $request->file('aiz_file')->getSize();
|
||||
|
||||
// Return MIME type ala mimetype extension
|
||||
$finfo = finfo_open(FILEINFO_MIME_TYPE);
|
||||
|
||||
// Get the MIME type of the file
|
||||
$file_mime = finfo_file($finfo, base_path('public/') . $path);
|
||||
|
||||
if ($type[$extension] == 'image' && get_setting('disable_image_optimization') != 1) {
|
||||
try {
|
||||
$img = Image::make($request->file('aiz_file')->getRealPath())->encode();
|
||||
$height = $img->height();
|
||||
$width = $img->width();
|
||||
if ($width > $height && $width > 1500) {
|
||||
$img->resize(1500, null, function ($constraint) {
|
||||
$constraint->aspectRatio();
|
||||
});
|
||||
} elseif ($height > 1500) {
|
||||
$img->resize(null, 800, function ($constraint) {
|
||||
$constraint->aspectRatio();
|
||||
});
|
||||
}
|
||||
$img->save(base_path('public/') . $path);
|
||||
clearstatcache();
|
||||
$size = $img->filesize();
|
||||
} catch (\Exception $e) {
|
||||
//dd($e);
|
||||
}
|
||||
}
|
||||
|
||||
if (env('FILESYSTEM_DRIVER') == 's3') {
|
||||
Storage::disk('s3')->put(
|
||||
$path,
|
||||
file_get_contents(base_path('public/') . $path),
|
||||
[
|
||||
'visibility' => 'public',
|
||||
'ContentType' => $extension == 'svg' ? 'image/svg+xml' : $file_mime
|
||||
]
|
||||
);
|
||||
if ($arr[0] != 'updates') {
|
||||
unlink(base_path('public/') . $path);
|
||||
}
|
||||
}
|
||||
|
||||
$upload->extension = $extension;
|
||||
$upload->file_name = $path;
|
||||
$upload->user_id = Auth::user()->id;
|
||||
$upload->type = $type[$upload->extension];
|
||||
$upload->file_size = $size;
|
||||
$upload->save();
|
||||
}
|
||||
return $this->success(translate('File has been inserted successfully'));
|
||||
}else{
|
||||
return $this->failed(translate("Upload file is missing"));
|
||||
}
|
||||
}
|
||||
return $this->failed(translate("You can't upload the file"));
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
$upload = Upload::findOrFail($id);
|
||||
|
||||
if (auth()->user()->user_type == 'seller' && $upload->user_id != auth()->user()->id) {
|
||||
return $this->failed(translate("You don't have permission for deleting this!"));
|
||||
}
|
||||
try {
|
||||
if (env('FILESYSTEM_DRIVER') == 's3') {
|
||||
Storage::disk('s3')->delete($upload->file_name);
|
||||
if (file_exists(public_path() . '/' . $upload->file_name)) {
|
||||
unlink(public_path() . '/' . $upload->file_name);
|
||||
}
|
||||
} else {
|
||||
unlink(public_path() . '/' . $upload->file_name);
|
||||
}
|
||||
$upload->delete();
|
||||
return $this->success(translate('File deleted successfully'));
|
||||
} catch (\Exception $e) {
|
||||
$upload->delete();
|
||||
return $this->failed(translate('File deleted Failed'));
|
||||
}
|
||||
return $this->success(translate('File deleted successfully'));
|
||||
}
|
||||
|
||||
public function bulk_uploaded_files_delete(Request $request)
|
||||
{
|
||||
if ($request->id) {
|
||||
foreach ($request->id as $file_id) {
|
||||
$this->destroy($file_id);
|
||||
}
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public function get_preview_files(Request $request)
|
||||
{
|
||||
$ids = explode(',', $request->ids);
|
||||
$files = Upload::whereIn('id', $ids)->get();
|
||||
$new_file_array = [];
|
||||
foreach ($files as $file) {
|
||||
$file['file_name'] = my_asset($file->file_name);
|
||||
if ($file->external_link) {
|
||||
$file['file_name'] = $file->external_link;
|
||||
}
|
||||
$new_file_array[] = $file;
|
||||
}
|
||||
// dd($new_file_array);
|
||||
return $new_file_array;
|
||||
// return $files;
|
||||
}
|
||||
|
||||
public function all_file()
|
||||
{
|
||||
$uploads = Upload::all();
|
||||
foreach ($uploads as $upload) {
|
||||
try {
|
||||
if (env('FILESYSTEM_DRIVER') == 's3') {
|
||||
Storage::disk('s3')->delete($upload->file_name);
|
||||
if (file_exists(public_path() . '/' . $upload->file_name)) {
|
||||
unlink(public_path() . '/' . $upload->file_name);
|
||||
}
|
||||
} else {
|
||||
unlink(public_path() . '/' . $upload->file_name);
|
||||
}
|
||||
$upload->delete();
|
||||
flash(translate('File deleted successfully'))->success();
|
||||
} catch (\Exception $e) {
|
||||
$upload->delete();
|
||||
flash(translate('File deleted successfully'))->success();
|
||||
}
|
||||
}
|
||||
|
||||
Upload::query()->truncate();
|
||||
|
||||
return back();
|
||||
}
|
||||
|
||||
//Download project attachment
|
||||
public function attachment_download($id)
|
||||
{
|
||||
$project_attachment = Upload::find($id);
|
||||
try {
|
||||
$file_path = public_path($project_attachment->file_name);
|
||||
return Response::download($file_path);
|
||||
} catch (\Exception $e) {
|
||||
flash(translate('File does not exist!'))->error();
|
||||
return back();
|
||||
}
|
||||
}
|
||||
//Download project attachment
|
||||
public function file_info(Request $request)
|
||||
{
|
||||
$file = Upload::findOrFail($request['id']);
|
||||
|
||||
return (auth()->user()->user_type == 'seller')
|
||||
? view('seller.uploads.info', compact('file'))
|
||||
: view('backend.uploaded_files.info', compact('file'));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V2\Seller;
|
||||
|
||||
use App\Http\Resources\V2\Seller\SellerPackageResource;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\SellerPackage;
|
||||
use App\Models\SellerPackagePayment;
|
||||
use App\Models\Seller;
|
||||
use App\Models\Order;
|
||||
use App\Utility\PayfastUtility;
|
||||
use Auth;
|
||||
use Session;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class SellerPackageController extends Controller
|
||||
{
|
||||
public function seller_packages_list()
|
||||
{
|
||||
if (addon_is_activated('seller_subscription')) {
|
||||
$seller_packages = SellerPackage::all();
|
||||
return SellerPackageResource::collection($seller_packages);
|
||||
}
|
||||
|
||||
return $this->failed(translate('Package is not available'));
|
||||
}
|
||||
|
||||
public function purchase_free_package(Request $request)
|
||||
{
|
||||
$data['seller_package_id'] = $request->package_id;
|
||||
$data['payment_method'] = $request->payment_option;
|
||||
|
||||
|
||||
$seller_package = SellerPackage::findOrFail($request->seller_package_id);
|
||||
|
||||
if ($seller_package->amount == 0) {
|
||||
seller_purchase_payment_done(auth()->user()->id, $request->package_id, $request->amount, 'Free Package', null);
|
||||
return $this->success(translate('Package purchasing successful'));
|
||||
} elseif (
|
||||
auth()->user()->shop->seller_package != null &&
|
||||
$seller_package->product_upload_limit < auth()->user()->shop->seller_package->product_upload_limit
|
||||
) {
|
||||
return $this->failed(translate('You have more uploaded products than this package limit. You need to remove excessive products to downgrade.'));
|
||||
}
|
||||
}
|
||||
|
||||
public function purchase_package_offline(Request $request)
|
||||
{
|
||||
$seller_package = SellerPackage::findOrFail($request->package_id);
|
||||
|
||||
if (
|
||||
auth()->user()->shop->seller_package != null &&
|
||||
$seller_package->product_upload_limit < auth()->user()->shop->seller_package->product_upload_limit
|
||||
) {
|
||||
return $this->failed(translate('You have more uploaded products than this package limit. You need to remove excessive products to downgrade.'));
|
||||
}
|
||||
|
||||
$seller_package = new SellerPackagePayment;
|
||||
$seller_package->user_id = auth()->user()->id;
|
||||
$seller_package->seller_package_id = $request->package_id;
|
||||
$seller_package->payment_method = $request->payment_option;
|
||||
$seller_package->payment_details = $request->trx_id;
|
||||
$seller_package->approval = 0;
|
||||
$seller_package->offline_payment = 1;
|
||||
$seller_package->reciept = $request->photo;
|
||||
|
||||
$seller_package->save();
|
||||
|
||||
return $this->success(translate('Offline payment has been done. Please wait for response.'));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V2\Seller;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\SellerPackagePayment;
|
||||
use App\Models\SellerPackage;
|
||||
|
||||
class SellerPackagePaymentController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
public function offline_payment_request(){
|
||||
$package_payment_requests = SellerPackagePayment::where('offline_payment',1)->orderBy('id', 'desc')->paginate(10);
|
||||
return view('manual_payment_methods.seller_package_payment_request', compact('package_payment_requests'));
|
||||
}
|
||||
|
||||
public function offline_payment_approval(Request $request)
|
||||
{
|
||||
$package_payment = SellerPackagePayment::findOrFail($request->id);
|
||||
$package_details = SellerPackage::findOrFail($package_payment->seller_package_id);
|
||||
$package_payment->approval = $request->status;
|
||||
if($package_payment->save()){
|
||||
$seller = $package_payment->user->seller;
|
||||
$seller->seller_package_id = $package_payment->seller_package_id;
|
||||
$seller->invalid_at = date('Y-m-d', strtotime( $seller->invalid_at. ' +'. $package_details->duration .'days'));
|
||||
if($seller->save()){
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function edit($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function destroy($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
298
desarrollo/app/Http/Controllers/Api/V2/Seller/ShopController.php
Normal file
298
desarrollo/app/Http/Controllers/Api/V2/Seller/ShopController.php
Normal file
@@ -0,0 +1,298 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V2\Seller;
|
||||
|
||||
use App\Http\Controllers\Api\V2\AuthController;
|
||||
use App\Http\Requests\SellerRegistrationRequest;
|
||||
use App\Http\Resources\V2\Seller\ProductCollection;
|
||||
use App\Http\Resources\V2\Seller\ProductMiniCollection;
|
||||
use App\Http\Resources\V2\Seller\CommissionHistoryResource;
|
||||
use App\Http\Resources\V2\Seller\SellerPackageResource;
|
||||
use App\Http\Resources\V2\Seller\SellerPaymentResource;
|
||||
use App\Http\Resources\V2\ShopCollection;
|
||||
use App\Http\Resources\V2\ShopDetailsCollection;
|
||||
use App\Models\BusinessSetting;
|
||||
use App\Models\Category;
|
||||
use App\Models\CommissionHistory;
|
||||
use App\Models\Order;
|
||||
use App\Models\OrderDetail;
|
||||
use App\Models\Payment;
|
||||
use App\Models\Product;
|
||||
use App\Models\Shop;
|
||||
use App\Models\User;
|
||||
use App\Notifications\AppEmailVerificationNotification;
|
||||
use App\Notifications\EmailVerificationNotification;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Utility\SearchUtility;
|
||||
use Cache;
|
||||
use Carbon\Carbon;
|
||||
use DB;
|
||||
use Hash;
|
||||
use Illuminate\Http\Exceptions\HttpResponseException;
|
||||
use Response;
|
||||
|
||||
class ShopController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
$shop_query = Shop::query();
|
||||
|
||||
if ($request->name != null && $request->name != "") {
|
||||
$shop_query->where("name", 'like', "%{$request->name}%");
|
||||
SearchUtility::store($request->name);
|
||||
}
|
||||
|
||||
return new ShopCollection($shop_query->whereIn('user_id', verified_sellers_id())->paginate(10));
|
||||
|
||||
//remove this , this is for testing
|
||||
//return new ShopCollection($shop_query->paginate(10));
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function update(Request $request)
|
||||
{
|
||||
$shop = Shop::where('user_id', auth()->user()->id)->first();
|
||||
$successMessage = 'Shop info updated successfully';
|
||||
$failedMessage = 'Shop info updated failed';
|
||||
|
||||
if ($request->has('name') && $request->has('address')) {
|
||||
if ($request->has('shipping_cost')) {
|
||||
$shop->shipping_cost = $request->shipping_cost;
|
||||
}
|
||||
$shop->name = $request->name;
|
||||
$shop->address = $request->address;
|
||||
$shop->phone = $request->phone;
|
||||
$shop->slug = preg_replace('/\s+/', '-', $request->name) . '-' . $shop->id;
|
||||
$shop->meta_title = $request->meta_title;
|
||||
$shop->meta_description = $request->meta_description;
|
||||
$shop->logo = $request->logo;
|
||||
}
|
||||
|
||||
if ($request->has('delivery_pickup_longitude') && $request->has('delivery_pickup_latitude')) {
|
||||
|
||||
$shop->delivery_pickup_longitude = $request->delivery_pickup_longitude;
|
||||
$shop->delivery_pickup_latitude = $request->delivery_pickup_latitude;
|
||||
} elseif (
|
||||
$request->has('facebook') ||
|
||||
$request->has('google') ||
|
||||
$request->has('twitter') ||
|
||||
$request->has('youtube') ||
|
||||
$request->has('instagram')
|
||||
) {
|
||||
$shop->facebook = $request->facebook;
|
||||
$shop->instagram = $request->instagram;
|
||||
$shop->google = $request->google;
|
||||
$shop->twitter = $request->twitter;
|
||||
$shop->youtube = $request->youtube;
|
||||
} elseif (
|
||||
$request->has('cash_on_delivery_status') ||
|
||||
$request->has('bank_payment_status') ||
|
||||
$request->has('bank_name') ||
|
||||
$request->has('bank_acc_name') ||
|
||||
$request->has('bank_acc_no') ||
|
||||
$request->has('bank_routing_no')
|
||||
) {
|
||||
|
||||
$shop->cash_on_delivery_status = $request->cash_on_delivery_status;
|
||||
$shop->bank_payment_status = $request->bank_payment_status;
|
||||
$shop->bank_name = $request->bank_name;
|
||||
$shop->bank_acc_name = $request->bank_acc_name;
|
||||
$shop->bank_acc_no = $request->bank_acc_no;
|
||||
$shop->bank_routing_no = $request->bank_routing_no;
|
||||
|
||||
$successMessage = 'Payment info updated successfully';
|
||||
} else {
|
||||
$shop->sliders = $request->sliders;
|
||||
}
|
||||
|
||||
if ($shop->save()) {
|
||||
return $this->success(translate($successMessage));
|
||||
}
|
||||
|
||||
return $this->failed(translate($failedMessage));
|
||||
}
|
||||
|
||||
|
||||
public function sales_stat()
|
||||
{
|
||||
$data = Order::where('created_at', '>=', Carbon::now()->subDays(7))
|
||||
->where('seller_id', '=', auth()->user()->id)
|
||||
->where('delivery_status', '=', 'delivered')
|
||||
->select(DB::raw("sum(grand_total) as total, DATE_FORMAT(created_at, '%b-%d') as date"))
|
||||
->groupBy(DB::raw("DATE_FORMAT(created_at, '%Y-%m-%d')"))
|
||||
->get()->toArray();
|
||||
//dd($data->toArray());
|
||||
|
||||
//$array_date = [];
|
||||
$sales_array = [];
|
||||
for ($i = 0; $i < 7; $i++) {
|
||||
$new_date = date("M-d", strtotime(($i + 1) . " days ago"));
|
||||
//$array_date[] = date("M-d", strtotime($i." days ago"));
|
||||
|
||||
$sales_array[$i]['date'] = $new_date;
|
||||
$sales_array[$i]['total'] = 0;
|
||||
|
||||
if (!empty($data)) {
|
||||
$key = array_search($new_date, array_column($data, 'date'));
|
||||
if (is_numeric($key)) {
|
||||
$sales_array[$i]['total'] = $data[$key]['total'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return Response()->json($sales_array);
|
||||
}
|
||||
|
||||
public function category_wise_products()
|
||||
{
|
||||
$category_wise_product = [];
|
||||
$new_array = [];
|
||||
foreach (Category::all() as $key => $category) {
|
||||
if (count($category->products->where('user_id', auth()->user()->id)) > 0) {
|
||||
$category_wise_product['name'] = $category->getTranslation('name');
|
||||
$category_wise_product['banner'] = uploaded_asset($category->banner);
|
||||
$category_wise_product['cnt_product'] = count($category->products->where('user_id', auth()->user()->id));
|
||||
|
||||
$new_array[] = $category_wise_product;
|
||||
}
|
||||
}
|
||||
|
||||
return Response()->json($new_array);
|
||||
}
|
||||
|
||||
public function top_12_products()
|
||||
{
|
||||
$products = filter_products(Product::where('user_id', auth()->user()->id)
|
||||
->orderBy('num_of_sale', 'desc'))
|
||||
->limit(12)
|
||||
->get();
|
||||
|
||||
return new ProductCollection($products);
|
||||
}
|
||||
|
||||
public function info()
|
||||
{
|
||||
// dd(auth()->user()->shop);
|
||||
return new ShopDetailsCollection(auth()->user()->shop);
|
||||
}
|
||||
|
||||
public function pacakge()
|
||||
{
|
||||
$shop = auth()->user()->shop;
|
||||
|
||||
return response()->json([
|
||||
'result' => true,
|
||||
'id' => $shop->id,
|
||||
'package_name' => $shop->seller_package->name,
|
||||
'package_img' => uploaded_asset($shop->seller_package->logo)
|
||||
|
||||
]);
|
||||
}
|
||||
|
||||
public function profile()
|
||||
{
|
||||
$user = auth()->user();
|
||||
|
||||
|
||||
return response()->json([
|
||||
'result' => true,
|
||||
'id' => $user->id,
|
||||
'type' => $user->user_type,
|
||||
'name' => $user->name,
|
||||
'email' => $user->email,
|
||||
'avatar' => $user->avatar,
|
||||
'avatar_original' => uploaded_asset($user->avatar_original),
|
||||
'phone' => $user->phone
|
||||
|
||||
]);
|
||||
}
|
||||
|
||||
public function payment_histories()
|
||||
{
|
||||
$payments = Payment::where('seller_id', auth()->user()->id)->paginate(10);
|
||||
return SellerPaymentResource::collection($payments);
|
||||
}
|
||||
|
||||
public function collection_histories()
|
||||
{
|
||||
$commission_history = CommissionHistory::where('seller_id', auth()->user()->id)->orderBy('created_at', 'desc')->paginate(10);
|
||||
return CommissionHistoryResource::collection($commission_history);
|
||||
}
|
||||
|
||||
public function store(SellerRegistrationRequest $request)
|
||||
{
|
||||
$user = new User;
|
||||
$user->name = $request->name;
|
||||
$user->email = $request->email;
|
||||
$user->user_type = "seller";
|
||||
$user->password = Hash::make($request->password);
|
||||
|
||||
if ($user->save()) {
|
||||
$shop = new Shop;
|
||||
$shop->user_id = $user->id;
|
||||
$shop->name = $request->shop_name;
|
||||
$shop->address = $request->address;
|
||||
$shop->slug = preg_replace('/\s+/', '-', str_replace("/", " ", $request->shop_name));
|
||||
$shop->save();
|
||||
|
||||
if (BusinessSetting::where('type', 'email_verification')->first()->value != 1) {
|
||||
$user->email_verified_at = date('Y-m-d H:m:s');
|
||||
$user->save();
|
||||
} else {
|
||||
|
||||
try {
|
||||
$user->notify(new AppEmailVerificationNotification());
|
||||
} catch (\Exception $e) {
|
||||
}
|
||||
}
|
||||
$authController = new AuthController();
|
||||
return $authController->loginSuccess($user);
|
||||
}
|
||||
|
||||
return $this->failed(translate('Something Wenr Wrong!'));
|
||||
}
|
||||
|
||||
|
||||
public function getVerifyForm()
|
||||
{
|
||||
$forms = BusinessSetting::where('type', 'verification_form')->first();
|
||||
return response()->json(json_decode($forms->value));
|
||||
}
|
||||
|
||||
public function store_verify_info(Request $request)
|
||||
{
|
||||
$data = array();
|
||||
$i = 0;
|
||||
foreach (json_decode(BusinessSetting::where('type', 'verification_form')->first()->value) as $key => $element) {
|
||||
$item = array();
|
||||
if ($element->type == 'text') {
|
||||
$item['type'] = 'text';
|
||||
$item['label'] = $element->label;
|
||||
$item['value'] = $request['element_' . $i];
|
||||
} elseif ($element->type == 'select' || $element->type == 'radio') {
|
||||
$item['type'] = 'select';
|
||||
$item['label'] = $element->label;
|
||||
$item['value'] = $request['element_' . $i];
|
||||
} elseif ($element->type == 'multi_select') {
|
||||
$item['type'] = 'multi_select';
|
||||
$item['label'] = $element->label;
|
||||
$item['value'] = json_encode($request['element_' . $i]);
|
||||
} elseif ($element->type == 'file') {
|
||||
$item['type'] = 'file';
|
||||
$item['label'] = $element->label;
|
||||
$item['value'] = $request['element_' . $i]->store('uploads/verification_form');
|
||||
}
|
||||
array_push($data, $item);
|
||||
$i++;
|
||||
}
|
||||
|
||||
$shop = auth()->user()->shop;
|
||||
$shop->verification_info = json_encode($data);
|
||||
if ($shop->save()) {
|
||||
return $this->success(translate('Your shop verification request has been submitted successfully!'));
|
||||
}
|
||||
|
||||
return $this->failed(translate('Something Wenr Wrong!'));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V2\Seller;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use CoreComponentRepository;
|
||||
use App\Models\Category;
|
||||
use App\Models\Product;
|
||||
use App\Models\ProductTranslation;
|
||||
use App\Services\WholesaleService;
|
||||
use App\Services\ProductTaxService;
|
||||
use App\Services\ProductFlashDealService;
|
||||
use App\Http\Requests\WholesaleProductRequest;
|
||||
use App\Http\Resources\V2\Seller\ProductCollection;
|
||||
use App\Http\Resources\V2\Seller\WholesaleProductDetailsCollection;
|
||||
use Auth;
|
||||
|
||||
class WholesaleProductController extends Controller
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
// Wholesale Products list in Seller panel
|
||||
public function wholesale_products()
|
||||
{
|
||||
|
||||
$products = Product::where('wholesale_product', 1)->where('user_id', auth()->user()->id)->orderBy('created_at', 'desc');
|
||||
|
||||
$products = $products->paginate(15);
|
||||
|
||||
return new ProductCollection($products);
|
||||
}
|
||||
|
||||
public function product_store(WholesaleProductRequest $request)
|
||||
{
|
||||
if (addon_is_activated('seller_subscription')) {
|
||||
if (
|
||||
(auth()->user()->shop->seller_package == null) ||
|
||||
(auth()->user()->shop->seller_package->product_upload_limit <= auth()->user()->products()->count())
|
||||
) {
|
||||
return $this->failed(translate('Upload limit has been reached. Please upgrade your package.'));
|
||||
}
|
||||
}
|
||||
|
||||
$request->added_by= "seller";
|
||||
|
||||
$product = (new WholesaleService)->store($request->except([
|
||||
'_token', 'tax_id', 'tax', 'tax_type', 'flash_deal_id', 'flash_discount', 'flash_discount_type'
|
||||
]));
|
||||
$request->merge(['product_id' => $product->id]);
|
||||
//VAT & Tax
|
||||
if ($request->tax_id) {
|
||||
(new productTaxService)->store($request->only([
|
||||
'tax_id', 'tax', 'tax_type', 'product_id'
|
||||
]));
|
||||
}
|
||||
|
||||
// Product Translations
|
||||
$request->merge(['lang' => env('DEFAULT_LANGUAGE')]);
|
||||
ProductTranslation::create($request->only([
|
||||
'lang', 'name', 'unit', 'description', 'product_id'
|
||||
]));
|
||||
|
||||
return $this->success("Product successfully created.");
|
||||
}
|
||||
|
||||
|
||||
public function product_edit(Request $request, $id)
|
||||
{
|
||||
$product = Product::findOrFail($id);
|
||||
$product->lang = $request->lang == null ? env("DEFAULT_LANGUAGE") : $request->lang;
|
||||
return new WholesaleProductDetailsCollection($product);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public function product_update(WholesaleProductRequest $request, $id)
|
||||
{
|
||||
(new WholesaleService)->update($request, $id);
|
||||
|
||||
return $this->success(translate('Product has been updated successfully'));
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function product_destroy($id)
|
||||
{
|
||||
(new WholesaleService)->destroy($id);
|
||||
return $this->success("Product successfully deleted.");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V2\Seller;
|
||||
|
||||
use App\Http\Resources\V2\Seller\SellerWithdrawResource;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\SellerWithdrawRequest;
|
||||
use Auth;
|
||||
use Response;
|
||||
|
||||
class WithdrawRequestController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$seller_withdraw_requests = SellerWithdrawRequest::where('user_id', auth()->user()->id)->latest()->paginate(10);
|
||||
return SellerWithdrawResource::collection($seller_withdraw_requests);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
|
||||
if (auth()->user()->shop->admin_to_pay > 5) {
|
||||
if ($request->amount >= get_setting('minimum_seller_amount_withdraw') && $request->amount <= Auth::user()->shop->admin_to_pay) {
|
||||
$seller_withdraw_request = new SellerWithdrawRequest;
|
||||
$seller_withdraw_request->user_id = auth()->user()->id;
|
||||
$seller_withdraw_request->amount = $request->amount;
|
||||
$seller_withdraw_request->message = $request->message;
|
||||
$seller_withdraw_request->status = '0';
|
||||
$seller_withdraw_request->viewed = '0';
|
||||
|
||||
$seller_withdraw_request->save();
|
||||
|
||||
return $this->success(translate('Request has been sent successfully'));
|
||||
} else {
|
||||
return $this->failed(translate('Invalid amount'));
|
||||
}
|
||||
} else {
|
||||
return $this->failed(translate('You do not have enough balance to send withdraw request'));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user