Viewing File: /home/ubuntu/vedadeals-backend-base/app/Exports/OrdersExport.php

<?php

namespace App\Exports;

use Maatwebsite\Excel\Concerns\FromCollection;

use Illuminate\Contracts\View\View;

use Maatwebsite\Excel\Concerns\FromView;

use Illuminate\Http\Request;

use App\Models\Order;

use App\Helpers\Helper;

class OrdersExport implements FromView
{
    public function __construct(Request $request)
    {
        $this->search_key = $request->search_key;
        $this->status = $request->status;
        $this->order_status = $request->order_status;
        $this->user_id = $request->user_id;
    }

    /**
    * @return \Illuminate\Support\Collection
    */
    public function view(): View {

        $orders = Order::Query()
                        ->with(['user:id,name'])
                        ->withSum('orderProducts', 'quantity')
                        ->when(isset($this->status), function ($query){
                            $query->where('status', $this->status);
                        })->when(isset($this->order_status), function ($query){
                            $query->where('order_status', $this->order_status);
                        })->when(isset($this->user_id), function ($query){
                            $query->where('user_id', $this->user_id);
                        })->when($this->search_key, function($query) {
                            $query->where('unique_id', "LIKE", "%" . $this->search_key . "%")
                            ->orWhereHas('user', function ($query){
                                $query->where('name', "LIKE", "%" . $this->search_key . "%")
                                    ->orWhere('email', "LIKE", "%" . $this->search_key . "%")
                                    ->orWhere('mobile', "LIKE", "%" . $this->search_key . "%");
                            });
                        })->orderBy('created_at', 'DESC')->get();

        return view('exports.orders', [ 'data' => $orders ]);
    }
}
Back to Directory File Manager