Viewing File: /home/ubuntu/shop-website-base/app/Http/Controllers/Api/User/ProductApiController.php
<?php
namespace App\Http\Controllers\Api\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Http\Requests;
use Exception, DB, Validator, Setting, Log, Hash;
use App\Helpers\Helper, App\Helpers\CommonHelper, App\Helpers\VideoHelper;
use App\Models\ProductWishlist, App\Models\Cart, App\Models\ProductInventory;
use App\Repositories\ProductRepository as ProductRepo;
class ProductApiController extends Controller {
protected $skip, $take;
public function __construct(Request $request) {
Log::info(url()->current());
Log::info("Request Data".print_r($request->all(), true));
$this->skip = $request->skip ?: 0;
$this->take = $request->take ?: (Setting::get('admin_take_count') ?: TAKE_COUNT);
}
/**
* @method product_wishlists_save()
*
* @uses
*
* @created
*
* @updated
*
* @param
*
* @return
*/
public function product_wishlists_save(Request $request) {
try {
DB::beginTransaction();
$rules = ['product_id' => 'required'];
Helper::custom_validator($request->all(),$rules);
$product_wishlist = ProductWishlist::where('user_id', $request->id)->where('product_id', $request->product_id)->first();
if($product_wishlist) {
$product_wishlist->delete();
$code = 108;
} else {
$product_wishlist = new ProductWishlist();
$product_wishlist->product_id = $request->product_id;
$product_wishlist->user_id = $request->id;
$product_wishlist->status = YES;
$product_wishlist->save();
$code = 107;
}
$data['wishlist_count'] = wishlist_count();
DB::commit();
return $this->sendResponse(api_success($code), $code, $data);
} catch(Exception $e) {
DB::rollback();
return $this->sendError($e->getMessage(), $e->getCode());
}
}
/**
* @method add_to_cart()
*
* @uses add store products of user to cart
*
* @created
*
* @updated
*
* @param
*
* @return
*/
public function add_to_cart(Request $request) {
try {
DB::beginTransaction();
$rules = ['product_id' => 'required','quantity'=>'required|numeric|min:0.5'];
Helper::custom_validator($request->all(),$rules);
$cart = Cart::where('user_id', $request->id)->where('product_id', $request->product_id)->first() ?? new Cart();
$products_inventory = ProductInventory::where('product_id',$request->product_id)->first();
if($request->status == ADD_CART && $products_inventory->remaining_quantity == 0 || $cart->quantity >= $products_inventory->remaining_quantity) {
throw new Exception(api_error(104), 104);
}
$cart->product_id = $request->product_id;
$cart->user_id = $request->id;
if($request->status == ADD_CART) {
$cart->quantity += $request->quantity;
$code = 110;
} else if($request->status == REMOVE_CART && $cart->quantity >= $request->quantity) {
$cart->quantity -= $request->quantity;
$code = 111;
} else {
$code = 114;
}
$cart->status = YES;
$cart->save();
DB::commit();
$cart = Cart::where('carts.user_id', $request->id)->where('product_id', $request->product_id)->CommonResponse()->first();
$total_items = Cart::where('carts.user_id', $request->id)
->CommonResponse()
->where('products.status', APPROVED)
->get();
$data['total_quantity'] = $cart->quantity;
$data['total_items'] = $total_items->count();
$data['total_price'] = formatted_amount($total_items->sum('total_price'));
$data['product_price'] = formatted_amount($cart->total_price);
$data['product_amount'] = formatted_amount($cart->amount);
return $this->sendResponse(api_success($code), $code, $data);
} catch(Exception $e) {
DB::rollback();
return $this->sendError($e->getMessage(), $e->getCode());
}
}
/**
* @method add_to_cart_unregistered()
*
* @uses add store products of user to cart
*
* @created
*
* @updated
*
* @param
*
* @return
*/
public function add_to_cart_unregistered(Request $request) {
try {
DB::beginTransaction();
$rules = [
'product_id' => 'required',
'quantity'=>'required_if:status,'.ADD_CART.'|numeric|min:0.5'
];
Helper::custom_validator($request->all(),$rules);
$cart = Cart::where('ip_address', $request->ip_address)->where('product_id', $request->product_id)->first() ?? new Cart();
$products_inventory = ProductInventory::where('product_id',$request->product_id)->first();
if($request->status == ADD_CART && $products_inventory->remaining_quantity == 0 || $cart->quantity > $products_inventory->remaining_quantity) {
throw new Exception(api_error(104), 104);
}
$cart->product_id = $request->product_id;
$cart->user_id = 0;
$cart->ip_address = $request->ip_address;
if($request->status == ADD_CART) {
$cart->quantity += $request->quantity;
$code = 110;
} else if($request->status == REMOVE_CART && $cart->quantity >= $request->quantity) {
$cart->quantity -= $request->quantity;
$code = 111;
} else {
throw new Exception(api_error(114), 114);
}
$cart->status = YES;
$cart->save();
DB::commit();
$cart = Cart::where('carts.ip_address', $request->ip_address)->where('product_id', $request->product_id)->CommonResponse()->first();
$total_items = Cart::where('carts.ip_address', $request->ip_address)
->CommonResponse()
->where('products.status', APPROVED)
->get();
$data['total_quantity'] = $cart->quantity;
$data['total_items'] = $total_items->count();
$data['total_price'] = formatted_amount($total_items->sum('total_price'));
$data['product_price'] = formatted_amount($cart->total_price);
$data['product_amount'] = formatted_amount($cart->amount);
return $this->sendResponse(api_success($code), $code, $data);
} catch(Exception $e) {
DB::rollback();
return $this->sendError($e->getMessage(), $e->getCode());
}
}
/**
* @method carts_delete()
*
* @uses remove added store products from cart
*
* @created
*
* @updated
*
* @param
*
* @return
*/
public function carts_delete(Request $request) {
try {
DB::beginTransaction();
$rules = ['cart_id' => 'required'];
Helper::custom_validator($request->all(),$rules);
if($request->ip_address) {
$carts = Cart::where('ip_address', $request->ip_address)->where('id', $request->cart_id)->first();
} else {
$carts = Cart::where('user_id', $request->id)->where('id', $request->cart_id)->first();
}
if(!$carts) {
throw new Exception(api_error(105), 105);
}
$carts->delete();
DB::commit();
return $this->sendResponse($message = api_success(111), 111, $data =[]);
} catch(Exception $e) {
DB::rollback();
return $this->sendError($e->getMessage(), $e->getCode());
}
}
/**
* @method save_orders()
*
* @uses save Orders
*
* @created Bhawya
*
* @updated Bhawya
*
* @param
*
* @return JSON response
*
*/
public function save_orders(Request $request) {
try {
DB::beginTransaction();
$order = ProductRepo::orders_save($request);
$total = $user_pay_amount = $order->total ?? 0.00;
$request->request->add([
'total' => $total,
'user_pay_amount' => $user_pay_amount,
'paid_amount' => $user_pay_amount,
'payment_id' => 'FREE-'.rand()
]);
$payment_response = ProductRepo::order_payment_save($request, $order)->getData();
if($payment_response->success) {
$cart = Cart::where('carts.user_id', $request->id)->delete();
DB::commit();
} else {
throw new Exception($payment_response->error, $payment_response->error_code);
}
successReponse:
$data['order_id'] = $order->id;
return $this->sendResponse(api_success(115), 115, $data);
} catch(Exception $e) {
DB::rollback();
$response_array = ['success'=>false, 'error_messages'=>$e->getMessage(), 'error_code'=>$e->getCode()];
return response()->json($response_array);
}
}
}
Back to Directory
File Manager