PK

ADDRLIN : /home/questend/public_html/domains/flaxzy.com/app/Http/Controllers/
FLL :
Current File : /home/questend/public_html/domains/flaxzy.com/app/Http/Controllers/OrderController_12July.php

<?php

namespace App\Http\Controllers;

use App\Mail\OrderPlaced;
use Illuminate\Support\Facades\Mail;
use Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use App\Models\Cart;
use App\Models\Order;
use App\Models\Shipping;
use App\Models\ShippingAddress;
use App\User;
use PDF;
use Notification;
use Helper;
use Illuminate\Support\Str;
use App\Notifications\StatusNotification;

class OrderController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $orders=Order::orderBy('id','DESC')->paginate(10);
        return view('backend.order.index')->with('orders',$orders);
    }

    /**
     * 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)
    {
        // Validation
        $rules = [
            'payment_method' => 'required',
        ];

        if (!$request->filled('saved_address_id')) {
            $rules = array_merge($rules, [
                'first_name' => 'string|required',
                'last_name' => 'string|required',
                'address1' => 'string|required',
                'address2' => 'string|nullable',
                'phone' => 'numeric|required',
                'post_code' => 'string|nullable',
                'email' => 'string|required',
                'country' => 'string|required'
            ]);
        }

        $validatedData = $request->validate($rules);

        // Check if cart is empty
        if (!Cart::where('user_id', auth()->id())->whereNull('order_id')->exists()) {
            return back()->with('error', 'Cart is Empty!');
        }

        $user = auth()->user();
        $cartTotal = Helper::totalCartPrice();
        $shippingCharge = ($cartTotal < 500) ? 100 : 0;
        $couponValue = session('coupon')['value'] ?? 0;
        $totalAmount = $cartTotal + $shippingCharge - $couponValue;

        // Determine address
        $shippingData = [];
        if ($request->filled('saved_address_id')) {
            // Use existing address
            $savedAddress = ShippingAddress::where('user_id', $user->id)->find($request->saved_address_id);
            if (!$savedAddress) {
                return back()->with('error', 'Invalid shipping address selected.');
            }

            $shippingData = $savedAddress->toArray();
        } else {
            // Save new address
            $shippingAddress = ShippingAddress::create([
                'user_id'   => $user->id,
                'first_name'=> $validatedData['first_name'],
                'last_name' => $validatedData['last_name'],
                'email'     => $validatedData['email'],
                'phone'     => $validatedData['phone'],
                'country'   => $validatedData['country'],
                'address1'  => $validatedData['address1'],
                'address2'  => $validatedData['address2'] ?? null,
                'post_code' => $validatedData['post_code'] ?? null,
            ]);

            $shippingData = $shippingAddress->toArray();
        }

        // Start transaction
        DB::beginTransaction();

        try {
            $orderData = [
                'order_number'     => 'ORD-' . strtoupper(Str::random(10)),
                'user_id'          => $user->id,
                'shipping_id'      => null,
                'shipping_charge'  => $shippingCharge,
                'sub_total'        => $cartTotal,
                'quantity'         => Helper::cartCount(),
                'coupon'           => $couponValue,
                'total_amount'     => $totalAmount,
                'status'           => 'new',
                'payment_method'   => $request->payment_method == 'paypal' ? 'paypal' : 'cod',
                'payment_status'   => $request->payment_method == 'paypal' ? 'paid' : 'Unpaid',
                'first_name'       => $shippingData['first_name'],
                'last_name'        => $shippingData['last_name'],
                'email'            => $shippingData['email'],
                'phone'            => $shippingData['phone'],
                'country'          => $shippingData['country'],
                'address1'         => $shippingData['address1'],
                'address2'         => $shippingData['address2'] ?? null,
                'post_code'        => $shippingData['post_code'] ?? null,
            ];

            $order = Order::create($orderData);

            // Link cart items to this order
            $carts = Cart::where('user_id', auth()->id())->whereNull('order_id')->get();
            foreach ($carts as $cart) {
                $product = $cart->product;

                if ($product->stock < $cart->quantity) {
                    throw new \Exception("Not enough stock for product: {$product->title}");
                }

                $product->stock -= $cart->quantity;
                $product->sold_qty += $cart->quantity;
                $product->save();

                $cart->order_id = $order->id;
                $cart->save();
            }

            // Commit transaction
            DB::commit();

            // Notify admin
            if ($admin = User::where('role', 'admin')->first()) {
                $admin->notify(new StatusNotification([
                    'title'     => 'New order created',
                    'actionURL' => route('order.show', $order->id),
                    'fas'       => 'fa-file-alt'
                ]));
            }

            // Clear session
            session()->forget(['cart', 'coupon']);

            // Send order email
            Mail::to($order->email)
                ->bcc('indusinfotek.vinay@gmail.com')
                ->send(new OrderPlaced($order));

            if ($request->payment_method == 'paypal') {
                return redirect()->route('payment')->with(['id' => $order->id]);
            }

            return redirect()->route('home')->with('success', 'Order placed successfully!');
        } catch (\Exception $e) {
            DB::rollBack();
            return back()->with('error', $e->getMessage());
        }
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $order=Order::find($id);
        // return $order;
        return view('backend.order.show')->with('order',$order);
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $order=Order::find($id);
        return view('backend.order.edit')->with('order',$order);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $order=Order::find($id);
        $this->validate($request,[
            'status'=>'required|in:new,process,delivered,cancel'
        ]);
        $data=$request->all();
        // return $request->status;
        if($request->status=='delivered'){
            foreach($order->cart as $cart){
                $product=$cart->product;
                // return $product;
                $product->stock -=$cart->quantity;
                $product->save();
            }
        }
        $status=$order->fill($data)->save();
        if($status){
            request()->session()->flash('success','Successfully updated order');
        }
        else{
            request()->session()->flash('error','Error while updating order');
        }
        return redirect()->route('order.index');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $order=Order::find($id);
        if($order){
            $status=$order->delete();
            if($status){
                request()->session()->flash('success','Order Successfully deleted');
            }
            else{
                request()->session()->flash('error','Order can not deleted');
            }
            return redirect()->route('order.index');
        }
        else{
            request()->session()->flash('error','Order can not found');
            return redirect()->back();
        }
    }

    public function orderTrack(){
        return view('frontend.pages.order-track');
    }

    public function productTrackOrder(Request $request){
        // return $request->all();
        $order=Order::where('user_id',auth()->user()->id)->where('order_number',$request->order_number)->first();
        if($order){
            if($order->status=="new"){
            request()->session()->flash('success','Your order has been placed. please wait.');
            return redirect()->route('home');

            }
            elseif($order->status=="process"){
                request()->session()->flash('success','Your order is under processing please wait.');
                return redirect()->route('home');
    
            }
            elseif($order->status=="delivered"){
                request()->session()->flash('success','Your order is successfully delivered.');
                return redirect()->route('home');
    
            }
            else{
                request()->session()->flash('error','Your order canceled. please try again');
                return redirect()->route('home');
    
            }
        }
        else{
            request()->session()->flash('error','Invalid order numer please try again');
            return back();
        }
    }

    // PDF generate
    public function pdf(Request $request){
        $order=Order::getAllOrder($request->id);
        // return $order;
        $file_name=$order->order_number.'-'.$order->first_name.'.pdf';
        // return $file_name;
        $pdf=PDF::loadview('backend.order.pdf',compact('order'));
        return $pdf->download($file_name);
    }
    // Income chart
    public function incomeChart(Request $request){
        $year=\Carbon\Carbon::now()->year;
        // dd($year);
        $items=Order::with(['cart_info'])->whereYear('created_at',$year)->where('status','delivered')->get()
            ->groupBy(function($d){
                return \Carbon\Carbon::parse($d->created_at)->format('m');
            });
            // dd($items);
        $result=[];
        foreach($items as $month=>$item_collections){
            foreach($item_collections as $item){
                $amount=$item->cart_info->sum('amount');
                // dd($amount);
                $m=intval($month);
                // return $m;
                isset($result[$m]) ? $result[$m] += $amount :$result[$m]=$amount;
            }
        }
        $data=[];
        for($i=1; $i <=12; $i++){
            $monthName=date('F', mktime(0,0,0,$i,1));
            $data[$monthName] = (!empty($result[$i]))? number_format((float)($result[$i]), 2, '.', '') : 0.0;
        }
        return $data;
    }
}


PK 99
E-SHOP || DASHBOARD
404

Page Not Found

It looks like you found a glitch in the matrix...

← Back to Home