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

<?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);
}
}