55 lines
2.4 KiB
PHP
55 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace Modules\Business\App\Exports;
|
|
|
|
use App\Models\Transfer;
|
|
use Illuminate\Contracts\View\View;
|
|
use Maatwebsite\Excel\Concerns\FromView;
|
|
|
|
class ExportTransfer implements FromView
|
|
{
|
|
public function view(): View
|
|
{
|
|
$user = auth()->user();
|
|
$activeBranchId = $user->active_branch_id;
|
|
|
|
$transfers = Transfer::with(['fromWarehouse:id,name', 'toWarehouse:id,name', 'toBranch:id,name', 'fromBranch:id,name', 'transferProducts'])
|
|
->where('business_id', $user->business_id)
|
|
->when($activeBranchId, function ($q) use ($activeBranchId) {
|
|
$q->where(function ($query) use ($activeBranchId) {
|
|
$query->where('from_branch_id', $activeBranchId)
|
|
->orWhere('to_branch_id', $activeBranchId);
|
|
});
|
|
})
|
|
->when(request('branch_id') && !$activeBranchId, function ($q) {
|
|
$q->where(function ($query) {
|
|
$query->where('from_branch_id', request('branch_id'))->orWhere('to_branch_id', request('branch_id'));
|
|
});
|
|
})
|
|
->when(request('search'), function ($q) {
|
|
$search = request('search');
|
|
$q->where(function ($q) use ($search) {
|
|
$q->where('note', 'like', '%' . $search . '%')
|
|
->orWhere('status', 'like', '%' . $search . '%')
|
|
->orWhere('invoice_no', 'like', '%' . $search . '%')
|
|
->orWhereHas('fromWarehouse', function ($q) use ($search) {
|
|
$q->where('name', 'like', '%' . $search . '%');
|
|
})
|
|
->orWhereHas('toWarehouse', function ($q) use ($search) {
|
|
$q->where('name', 'like', '%' . $search . '%');
|
|
})
|
|
->orWhereHas('toBranch', function ($q) use ($search) {
|
|
$q->where('name', 'like', '%' . $search . '%');
|
|
})
|
|
->orWhereHas('fromBranch', function ($q) use ($search) {
|
|
$q->where('name', 'like', '%' . $search . '%');
|
|
});
|
|
});
|
|
})
|
|
->latest()
|
|
->limit(request('per_page') ?? 20)->get();
|
|
|
|
return view('business::transfers.excel-csv', compact('transfers'));
|
|
}
|
|
}
|