
PK 
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\library\Shopcart;
use Carbon\Carbon;
use App\UserAddress;
use App\Wishlist;
use App\Promocode;
use App\Product;
use App\Color;
use App\Size;
use App\Cart;
use Validator;
use Response;
use Redirect;
use Session;
use Auth;
class CheckoutController1 extends Controller
{
protected $shopcart;
private $carts =[];
private $cartTotal=0;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth:web');
//$this->shopcart = $Shopcart;
//$this->getCartlist();
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
if (view()->exists('frontend.carts.checkout'))
{
$user_id = Auth::user()->id;
$cartTotal = $cartSubTotal= 0;
$cartList =[];
$cart = Cart::where('user_id',$user_id)->select('user_id','cart_contant')->first();
if($cart){
$carts = json_decode($cart->cart_contant,true);
$carts = ($carts)?$carts:[];
foreach($carts as $key => $cart){
$this->cartTotal += round($cart['product_sale_price']*$cart['quantity']);
}
}
$discountat =0;
$cartSubTotal = $cartTotal = $this->cartTotal;
$addresses = UserAddress::Where('user_id',$user_id)->orderBy('id', 'desc')->get();
return view('frontend.carts.checkout',compact('carts','cartTotal','discountat','cartSubTotal','addresses'));
}
//return back()->with('message', 'Opps view not found');
}
/**
* Apply promocode of the resource.
*
* @return \Illuminate\Http\Response
*/
public function aplayToPromocode(Request $request){
$rules =[
'couponcode' => 'required',
'cartamount' => 'required',
];
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
return response()->json(['status'=>false,'errors' => $validator->getMessageBag()->toArray()]);
}else{
$promo_code = $request->couponcode;
$cartAmount = $request->cartamount;
$data = $this->checkPromocode($promo_code,$cartAmount);
return response()->json($data);
}
}
/**
* Apply promocode of the resource.
*
* @return \Illuminate\Http\Response
*/
public function cartCheckout(Request $request){
$resCode=["status"=>false,"message"=>"Invalid Submission !"];
if (!empty($request->payshipaddress)) {
$promo_code='';
if (!empty($request->couponcode)) {
$promo_code = $request->couponcode;
if($this->checkPromocode($promo_code)['status']==true){
p($this->checkPromocode($promo_code));
};
}
p($request->All());
} else {
$resCode=["status"=>false,"message"=>"Please select shipping address !"];
}
return response()->json($resCode);
/* $rules =[
'couponcode' => 'required',
'cartamount' => 'required',
];
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
return response()->json(['status'=>false,'errors' => $validator->getMessageBag()->toArray()]);
}else{
$promo_code = $request->couponcode;
$cartAmount = $request->cartamount;
$data = $this->checkPromocode($promo_code,$cartAmount);
return response()->json($data);
} */
}
private function getCartContant()
{
if (Auth::guard('web')->check()){
$user_id = Auth::user()->id;
$cartTotal=0;
$cart = Cart::where('user_id',$user_id)->select('user_id','cart_contant')->first();
if($cart){
$cart_contant = $cart->cart_contant;
$carts = ($cart_contant)?json_decode($cart_contant,true):[];
foreach($carts as $key => $cart){
$cartTotal += round($cart['product_sale_price']*$cart['quantity']);
}
return ['status'=>true,'cart_total'=>$cartTotal,'cart_contant'=>$cart_contant];
}
}
return ['status'=>false,'cart_total'=>0,'cart_contant'=>''];
}
/**
* 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)
{
//
}
private function checkPromocode($promocode=null,$cartamount=null){
$promo_code = (!empty($promocode))?$promocode:0;
$cartAmount = 0;//(int)(!empty($cartamount))?$cartamount:0;
if(!empty($promo_code)){
$user_id = Auth::user()->id;
$cartAmount = 0;
$cart = Cart::where('user_id',$user_id)->select('user_id','cart_contant')->first();
if($cart){
$carts = json_decode($cart->cart_contant,true);
$carts = ($carts)?$carts:[];
foreach($carts as $key => $cart){
$cartAmount += round($cart['product_sale_price']*$cart['quantity']);
}
}
$promo = Promocode::where('promo_code',$promo_code)->where('isactive',1)->where('isdelete',1)->first();
//->select('id','promo_name','promo_code','promo_ntime','promo_used','promo_type','promomin_price','promomax_price','promofrom_date','promoto_date')->get()
if($promo){
//##find out availabe or not
if ($promo->promo_ntime > $promo->promo_used) {
//##find out promocode expired or not
$currentTime = Carbon::now()->timestamp;
$promofrom_date = Carbon::parse($promo->promofrom_date)->timestamp;
$promoto_date = Carbon::parse($promo->promoto_date)->timestamp;
if($currentTime >= $promofrom_date && $currentTime <= $promoto_date){
//##find out discount amount available or not based on cartAmount
//if($cartAmount >= $promo->promomin_price && $promo->promomax_price <= $cartAmount ){
if($cartAmount >= $promo->promomin_price){
//##get promotype 1:%discount;2:flatdiscount
$promoAmount = $promo->promo_amount;
$discountAmount=round(($promo->promo_type==1) ?($cartAmount * ($promoAmount / 100)): $promoAmount);
$cartDiscountAmount = round($cartAmount-$discountAmount);
return ['status'=>true,'message'=>'Promocode Applied !', 'data'=>['couponid'=>$promo->id,'couponame'=>$promo->promo_code,'couponamount'=>$discountAmount,'cartamount'=>$cartDiscountAmount]];
}
return ['status'=>false,'message'=>'minimum {$promo->promomin_price} cart amout for apply this coupon code!'];
}
}
return ['status'=>false,'message'=>'Opps! Promocode allready used !'];
//$trialExpires = Carbon::now()->addDays(30);
//echo $lengthOfAd = $end_date->diffInDays($now);
//->toDateString();
}
//setcookie('promocode',0);
}
return ["status"=>false,"message"=>"Invalid Promo code !"];
}
}


PK 99