You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							56 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
	
	
							56 lines
						
					
					
						
							1.8 KiB
						
					
					
				<?php
 | 
						|
 | 
						|
namespace App\Http\Controllers\Api\V1\Vendor;
 | 
						|
 | 
						|
use App\Models\Expense;
 | 
						|
use Illuminate\Http\Request;
 | 
						|
use App\Http\Controllers\Controller;
 | 
						|
use Illuminate\Support\Facades\Validator;
 | 
						|
use App\CentralLogics\Helpers;
 | 
						|
use PayPal\Api\Search;
 | 
						|
 | 
						|
class ReportController extends Controller
 | 
						|
{
 | 
						|
    public function expense_report(Request $request)
 | 
						|
    {
 | 
						|
 | 
						|
        $validator = Validator::make($request->all(), [
 | 
						|
            'limit' => 'required',
 | 
						|
            'offset' => 'required',
 | 
						|
            'from' => 'required',
 | 
						|
            'to' => 'required',
 | 
						|
        ]);
 | 
						|
 | 
						|
        $key = explode(' ', $request['search']);
 | 
						|
        if ($validator->fails()) {
 | 
						|
            return response()->json(['errors' => Helpers::error_processor($validator)], 403);
 | 
						|
        }
 | 
						|
        $limit = $request['limite']??25;
 | 
						|
        $offset = $request['offset']??1;
 | 
						|
        $from = $request->from;
 | 
						|
        $to = $request->to;
 | 
						|
        $restaurant_id = $request->vendor->restaurants[0]->id;
 | 
						|
 | 
						|
        $expense = Expense::where('created_by','vendor')->where('restaurant_id',$restaurant_id)
 | 
						|
            ->when(isset($from) &&  isset($to) ,function($query) use($from,$to){
 | 
						|
                $query->whereBetween('created_at', [$from.' 00:00:00', $to.' 23:59:29']);
 | 
						|
            })->when(isset($key), function($query) use($key) {
 | 
						|
                $query->where(function ($q) use ($key) {
 | 
						|
                    foreach ($key as $value) {
 | 
						|
                        $q->orWhere('order_id', 'like', "%{$value}%");
 | 
						|
                    }
 | 
						|
                });
 | 
						|
            })
 | 
						|
 | 
						|
            ->paginate($limit, ['*'], 'page', $offset);
 | 
						|
            $data = [
 | 
						|
                'total_size' => $expense->total(),
 | 
						|
                'limit' => $limit,
 | 
						|
                'offset' => $offset,
 | 
						|
                'expense' => $expense->items()
 | 
						|
            ];
 | 
						|
            return response()->json($data,200);
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
}
 | 
						|
 |