/
home
/
corsairdevelopme
/
public_html
/
amplivo-console
/
app
/
Http
/
Controllers
/
Backend
/
Upload File
HOME
<?php namespace App\Http\Controllers\Backend; use App\Http\Controllers\Controller; use App\Models\BonusPurchasePool; use App\Models\CSRNow\User as CsrNowUser; use App\Models\User; use App\Repositories\Identify\IdentifyRepository; use Illuminate\Http\Request; class BonusPurchasePoolController extends Controller { protected $permissionPrefix; protected $identify; public function __construct(IdentifyRepository $identify) { $this->identify = $identify; $permissionPrefix = $this->permissionPrefix = 'bonus-purchase-pool'; $this->middleware("permission:$permissionPrefix-view", ['only' => ['index','allBonusPurchasePool']]); } public function index() { return view('backend.bonus_purchase_pool.index'); } public function allBonusPurchasePool(Request $request) { $search = $request->filter; $filter = (array) json_decode($search); $sort = $request->sort ?: 'created_at'; $order = $request->order ?: 'desc'; $offset = $request->offset; $limit = $request->limit; $query = BonusPurchasePool::with('user')->when($search, function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $q->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate); } elseif ($key == 'application_date') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $q->whereDate('application_date', '>=', $startDate)->whereDate('application_date', '<=', $endDate); } elseif ($key === 'username') { $externalId = CsrNowUser::where("username", 'LIKE', '%' . trim($item) . '%')->pluck('id'); $userId = User::whereIntegerInRaw('external_id',$externalId)->pluck('id'); $q->whereIntegerInRaw('user_id',$userId); } else { $q->where($key, 'like', '%' . $item . '%'); } } })->when($sort, function ($q) use ($sort, $order) { if ($sort == "counter") { $q->orderBy('id', $order); } else { $q->orderBy($sort, $order); } }); $count = $query->count(); $row = $query->when($offset, function ($q) use ($offset) { $q->offset($offset); })->when($limit, function ($q) use ($limit) { $q->limit($limit); })->get()->toArray(); $counter = $offset + 1; foreach ($row as $key => $item) { $username = isset($item['user']['details']) ? ($item['user']['details']['username'] ?? '') : ''; $profileUrl = route('admin.member.viewPurchaseMember', basicEncrypt($item['user']['id'] ?? '')); $referenceNo =$item['reference_no'] ?? '-'; $row[$key]['counter'] = $counter; $row[$key]['reference_no'] = '<span class="text-monospace">'. $referenceNo .'</span>'; $row[$key]['username'] = '<a class="text-info" type="button" target="_blank" href="' . $profileUrl . '" data-toggle="tooltip" data-placement="top" title="View User Detail">'.$username.'</a>'; $row[$key]['amount'] = formatDisplayNumber($item['amount']) ?? '-'; $row[$key]['application_date'] = date("d-m-Y h:i:s A", strtotime($item['application_date'])); $row[$key]['created_at'] = getDateWithIcon($item['created_at']); $counter++; } $data['count'] = $count; $data['items'] = $row; return response()->json($data); } }